串行通讯协议的基本构成

经常被问到串行协议的问题,通讯协议由什么构成?奇偶校验如何判断?波特率有哪些?有时候一时间想不到,所以做一下记录。

串行通讯协议

串口通讯的数据包由发送设备通过TXD接口传输到接收设备的RXD接口

在串口通讯的协议层中,规定了数据包的内容,它由起始位主体数据校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。

1.波特率

两通讯设备之间需要约定好波特率,既每个码元的长度,一边对信号进行解码,常见的波特率有4800、9600、115200等【码元速率(波特率)表示单位时间内信号波形的变换次数,即通过信道传输的码元的个数,若信号码元宽度为T,则码元的速率为B=1/T,码元速率也叫波特率】

2.通讯的起始和停止信号

串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。

3.有效数据

数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为5、6、7或8位长

4.数据校验

在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)

①.奇校验要求有效数据和校验位中"1"的个数为奇数,比如一个8位长的有效数据为:01101001,此时总共有4个"1",为达到奇校验效果,校验位为"1",最后传输的数据将是8位的有效数据加上1位的校验位总共9位。

②.偶校验与奇校验要求刚好相反,要求有效数据和校验位中"1"的个数为偶数,比如数据帧:11001010,此时数据帧"1"的个数为4个,所以偶校验位为"0"。

③.0校验是不管有效数据中的内容是什么,校验位总为"0"。

④.1校验是校验位总为"1"。

⑤.在无校验的情况下,数据包中不包含校验位。

发布了26 篇原创文章 · 获赞 40 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_21990661/article/details/102771678
今日推荐