>公众号设为星标 ,精彩不再错过!
关于串行通信,我们已经介绍了:
1. 串行通信的基本概述(定义、种类及数据形式等): 串行通信不就是RS232、RS422和RS485?还有... 2.串行通信和并行通信的对比: 串行通信 vs. 并行通信 3.异步还是同步: RS232是同步通信还是异步通信?
我们这期主要讨论串行通信的四大规则,怎么保证数据的准确性。
四大规则
我们上期讨论RS232是同步串行通信还是异步串行通信?这一问题,投票的结果是: 按照,上述投票的结果,还有将近一半的朋友并没有完全理解RS232串行标准的数据工作机制或者同步和异步的概念。 通信最重要的数据传输的正确性和稳定性,那在异步通信中,主要依赖下面四大方面(四大规则): 波特率Baud rate control 数据帧Data flow control 同步位(起始位、停止位)Transmission and reception control 错误控制(奇偶校验位)Error control.
波特率
我们在进行串口通信的软件设置时,经常有个参数需要进行设置:波特率,通常设为9600。
那这个参数具体的含义是什么呢?我们之前已经介绍过串行通信是数据一个位(bit)一个位地依次传输,每一位数据占据一个固定的时间长度。那么波特率就是单位时间内,传输位的个数,即表述传输数据的快慢。
波特率的单位bps,是bits-per-second(位每秒)的缩写。好了,了解波特率的概念后,小测试下:
波特率设置为9600,那么发送一个bit数据的时间是多少ms?留言区给出您的答案吧。
波特率可以是合理范围内的任何值。唯一的要求是两个设备以相同的速率运行。一种普遍常见的波特率是9600 bps,尤其是对于速度不重要的简单场合。其他“标准”波特为1200、2400、4800、19200、38400、57600和115200。
串行数据帧
串行通信,通常传输的每个数据块(通常是一个字节byte)实际上都是以一个比特包或一帧的形式发送的。帧是通过将同步和奇偶校验位附加到我们的数据上来创建的。
例如,以串行通信方式发送ASCII码“S”,用一个byte8个位来传输,即01010011:
起始位、停止位
同步比特(synchronization bits)是与每个数据块一起传输的两个或三个特殊比特。它们是起始位和终止位。与它们的名字一样,这些位标记着数据包的开始和结束。总是只有一个起始位,但停止位的数量可以配置为一个或两个(尽管通常为一个)。
起始位总是由从1到0的空闲数据线指示,而停止位将通过数据线保持在1而转变回0的空闲状态。
错误校验
数据损坏可能由于接收器端的外部噪声而发生。获得稳定输出的简单易行的解决方案是检查奇偶校验位。 对于“奇校验”,如果字符中“1”的个数是偶数,则校验位应为“1”,如果字符中“1”的个数是奇数,则校验位应为“0”;对于“偶校验”,如果字符中“1”的个数是偶数,则校验位应为“0”,反之,则校验位应为“1”。
例如上述的例子:二进制数据10011011,数据位有(1+0+0+1+1+0+1+1=5)5个1,对于奇校验码,校验位即为0;对于偶校验码,校验位即为1。当然,有些通信场合,也可以选择无奇偶校验。
参考链接:
https://www.bilibili.com/video/BV1m84y1T7kd/?vd_source=c95303688cee0f44143291f045560cc0 https://www.serial-port-monitor.org/articles/serial-communication/#basic https://www.codrey.com/embedded-systems/serial-communication-basics/#1_What_is_Baud_rate
--------END--------
喜欢本文请在下方分享及“点赞”和“在看”
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |