波特率是什么

波特率(bandrate),指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。

我们常常使用putty、xshell等终端软件连接物联网设备的UART接口(TTL电平)来获取设备的Shell,那么连接设备的时候需要设置一个选项就是波特率。

如上图所示,一般常见的波特率是9600、19200、38400、57600、115200,不同的设备可能设置的波特率是不一样的,为了更好的了解波特率,还得理解一下数据传输的时序。

  • 起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。
  • 数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。
  • 校验位(parity Bit):可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。
  • 停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。
  • 波特率:UART的传送速率,用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。如波特率9600=9600bps(位/秒), 上图中1/(0.104*0.001) ≈ 9600。

那么我们可以用示波器测试一下,测量一款设备的UART接口的开机时的波形,设置参数为下降沿1.6v、单次触发,如下图所示:

为了更好的识别,我们使用上位机软件查看波形,其中选取上升沿和下降沿间隔最小的一段,间隔时间为8.320us,那么波特率为1/(8.320*0.000001) ≈ 120192,可以使用115200(偏差在±4%均可)的波特率进行显示。

设置波特率115200

使用TTL转USB连接线连接设备,首先打印了两行换行

我们再来看波形,根据起始位(低电平)+数据位(8位)+停止位(高电平)的原理,可以知道,数据位的数据位0b00001010,也就是0x0A,对应ASCII的换行,可以对应的上终端显示的换行。

最后我们思考一下如果显示的数据有乱码怎么办?可以试试示波器测出来波特率,把它输入到终端设置是否就解决了问题?

参考链接:

https://www.kxting.com/article/20221113/866798.html

https://blog.csdn.net/SCzeidan/article/details/122560987

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注