擅长:python、mysql、java
<p>AM335x技术参考手册(TI文件spruh73)在UART部分给出了UART子系统的波特率限值(spruh73l版第4208页第19.1.1节):</p>
<blockquote>
<ul>
<li>Baud rate from 300 bps up to 3.6864 Mbps</li>
</ul>
</blockquote>
<p>UART模块每个都有一个48MHz时钟来生成它们的定时。它们可以配置为两种模式之一:UART 16x和UART 13x,其中时钟分别除以16和13。然后有一个配置的16位除数,从该时钟生成实际波特率。所以对于300个基点,它将是UART 16x和10000的除数,或者<code>48MHz / 16 / 1000 = 300 bps</code>。在</p>
<p>当您告诉<code>omap-serial</code>内核驱动程序(BeagleBone上用于uart的驱动程序)时,它会计算最接近所需速率的模式和除数。实际的速率受其生成方式的限制-例如,如果您要求2998 bps的任意波特率,我想您实际上会得到2997.003 bps,因为<code>48MHz / 16 / 1001 = 2997.003</code>比<code>48 MHz / 16 / 1000 = 3000</code>更接近2998。在</p>
<p>因此,UART模块当然可以生成所有的标准波特率,也可以生成大范围的任意波特率(你必须实际计算一下,看看它能有多接近)。在基于Linux的系统上,PySerial只是通过ioctl调用将您告诉它的波特率发送给内核驱动程序,所以它也不会限制您。在</p>
<p><strong>注意</strong>:我刚刚测试了从BeagleBone Black以200 bps的速度发送数据,它工作得很好,但它不能产生110 bps(下一个低于300 bps的较低标准波特率),因此列出的限制实际上是它能产生的最低和最高的<em>标准</em>速率。在</p>