最大黑斑UART波特率?

2024-04-29 08:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找由Beaglebone Black(BB)支持的UART波特率。我在系统手册中找不到处理器的数据表。我正在使用pyserial和Adafruit BBIO库通过UART进行通信。在

这是否支持合理范围内的任何值,还是更标准(9600、115200等)?在

谢谢你的帮助。在

-更新- 它与PySerial支持的波特率有关。这给出了一个潜在波特率的列表,但没有特定的波特率会或不会与特定的硬件一起工作。在


Tags: adafruit列表标准硬件系统手册处理器数据表
3条回答

您可以通过将BBB的UART端口连接到minicom来手动检查。要使其工作,只需短接UART的Tx和Rx。然后打开minicom

$ minicom -s

并设置不同的波特率,看看是否有效。 (按任意键,如果看到字符,就知道波特率在工作)

AM335x技术参考手册(TI文件spruh73)在UART部分给出了UART子系统的波特率限值(spruh73l版第4208页第19.1.1节):

  • Baud rate from 300 bps up to 3.6864 Mbps

UART模块每个都有一个48MHz时钟来生成它们的定时。它们可以配置为两种模式之一:UART 16x和UART 13x,其中时钟分别除以16和13。然后有一个配置的16位除数,从该时钟生成实际波特率。所以对于300个基点,它将是UART 16x和10000的除数,或者48MHz / 16 / 1000 = 300 bps。在

当您告诉omap-serial内核驱动程序(BeagleBone上用于uart的驱动程序)时,它会计算最接近所需速率的模式和除数。实际的速率受其生成方式的限制-例如,如果您要求2998 bps的任意波特率,我想您实际上会得到2997.003 bps,因为48MHz / 16 / 1001 = 2997.00348 MHz / 16 / 1000 = 3000更接近2998。在

因此,UART模块当然可以生成所有的标准波特率,也可以生成大范围的任意波特率(你必须实际计算一下,看看它能有多接近)。在基于Linux的系统上,PySerial只是通过ioctl调用将您告诉它的波特率发送给内核驱动程序,所以它也不会限制您。在

注意:我刚刚测试了从BeagleBone Black以200 bps的速度发送数据,它工作得很好,但它不能产生110 bps(下一个低于300 bps的较低标准波特率),因此列出的限制实际上是它能产生的最低和最高的标准速率。在

BBB参考手册不包含关于UART波特率的任何信息,但对于串行通信,我通常更喜欢使用波特率值波特率=115200,这在大多数情况下都能正常工作,没有任何问题。在

相关问题 更多 >