我一直在寻找UART波特率支持的Beaglebone黑(BB)。我在BB系统参考手册或sitara处理器本身的数据表中找不到它。我正在使用pyserial和Adafruit BBIO库在UART上进行通信。
这是否支持合理范围内的任何值,还是更标准(9600,115200等)?
谢谢你的帮助。
更新-它与PySerial支持的波特率有关。这给出了一个潜在波特率的列表,但不给出特定的波特率,这些波特率将与特定的硬件一起工作。
发布于 2015-11-05 18:29:28
AM335x技术参考手册(TI document spruh73)给出了UART部分中UART子系统的波特率限制(spruh73l版第19.1.1节,第4208页):
每个UART模块都有一个48 The的时钟来产生它们的定时。它们可以配置为两种模式之一: UART 16x和UART 13x,其中该时钟分别除以16和13。然后配置一个16位除数,从该时钟生成实际波特率。因此,对于300bps,它将是uart16x,除数为10000,或48MHz / 16 / 1000 = 300 bps
。
当您告诉omap-serial
内核驱动程序(这是用于BeagleBone上的UART的驱动程序)时,它会计算出最接近所需速率的模式和因子。实际获得的速率受生成方式的限制--例如,如果您要求一个任意的波特率为2998 bps,我想您实际上可以得到2997.003 bps,因为48MHz / 16 / 1001 = 2997.003
比48 MHz / 16 / 1000 = 3000
更接近2998。
因此,UART模块当然可以生成所有的标准波特率,以及大量任意的波特率(实际上,您必须做一些计算,看看它能达到多近)。在基于Linux的系统上,PySerial只是通过ioctl调用向内核驱动程序发送won,所以它也不会限制您。
Note:我刚刚测试了从BeagleBone黑发送200 bps的数据,它运行得很好,但是它不能生成110个bps (下一个低于300 bps的标准波特率),所以列出的限制实际上是它能生成的最低和最高的标准速率。
发布于 2015-08-09 09:43:49
BBB参考手册不包含任何关于UART的波特率的信息,但是对于串行通信,我通常更喜欢使用BAUDRATE = 115200的值,这在大多数情况下是没有任何问题的。
发布于 2015-08-19 07:05:06
您可以通过连接BBB的UART端口和minicom来手动检查它。若要使此工作,只需缩短UART的Tx和Rx即可。然后打开minicom
$ minicom -s
并设置不同的波特率,看看它是否有效。(按任意键,如果你看到字符,你就知道波特率起作用了)
https://stackoverflow.com/questions/31842785
复制相似问题