嵌入式(二十六):波特率&串行通信协议

1、检错信息编码:
a、校验:知道错了,但不知道在哪里
b、纠错:知道错了,并知道错在哪里
c、奇偶校验码:每个数据加一个额外奇偶校验位/发现错误
①、奇校验码——数据中包含奇数个“1”
②、偶校验码——数据中包含偶数个“1”
d、格雷码:两个相邻代码之间,仅有一位不同/减少误差
e、海明码:海明距离的编码/发现错误、纠正错误。海明距离:两个数的编码中不相同的数据位数
2、数据块校验:
a、简单的累加和
b、异或校验
c、循环冗余校验(CRC校验)
3、波特率与发送/接收时钟
a、波特率:单位时间内传送二进制数据的位数(b/S)
b、发送/接收时钟:接收方往往采用比波特率高的时钟来采样
c、波特因子:接收/发送1位所需的时钟个数(1、16、64),一般同步取1,异步取16
d、传送距离与传送速率,随着波特率的增加,传送的距离越低。只要能满足需要,选更低的波特率。
4、数据流的定界:串行通信数据流的定界问题
a、RS232/485/422起始位:空闲为“1”,一个有效的“0”表示一个数据传送开始
b、SPI起始位:一个有效片选信号启动一次通信(访问)过程
c、IIC起始位:一个有效起始条件(时钟为“1”时,数据从“1”到“0”)启动一次通信(访问)过程
5、“同步”与“异步”通信:
a、核心是双方是否共用一个时钟
b、同步串行通信:
①、收/发双方共用一个时钟信号
②、不需要预先约定波特率,波特率因子可为1,通信速率高
③、一次可以传送一个数据块
④、双方的时钟需要额外加一根时钟线或通过信号编码 ,将时钟信息编在信号内
c、异步串行通信:
①、收/发双方各用自己时钟信号,时钟信号不需传送
②、需要事先约定或通过其它方法商定/测定好通信波特率
③、由于双方时钟总会存在/允许存在偏差,故不能有效传送多个bit。所以,异步通信往往以字节(较少bit数)为单位进行通信
6、串行通信协议:
a、通信协议:通信双方的一种约定
b、串行通信需要约定的内容:
①、同步方式
②、通信速度
③、检错纠错方式
④、数据格式
⑤、信号、电平
⑥、控制信号/字符
⑦、等等
7、RS232串行通信协议(COM串行口)
a、接口信号
b、信号电平:“0”:+5到+15;“1”:-5到-15
c、数据格式:
在这里插入图片描述
d、注意:
①、异步串行
②、通信单位:字符
③、最少连接线:全双工 3根 (GND、RXD、TXD)
半双工 2根 (GND、RXD+TXD)
单工 2根 (GND、RXD/TXD)
④、数据位:5~8(9)位
⑤、停止/空闲:“1”,多余1位
⑥、定界:空闲“1”,起始位“0”
⑦、错误检测:“奇/偶” 校验,1位
⑧、先传送低位
e、TTL<->RS232电平转换接口
①、有±12V供电的场合:不需要电压转换
TTL电平 -> EIA电平:MC1488、75150
EIA电平 -> TTL电平:MC1489、75154
②、单5V、3.3V供电场合:
需要完成电源变换、电平变换
5V:MAX232、MAX202、……
3.3V:MAX3232、MAX3223、……
8、PC机串行通信接口8250
a、8250主要功能
①、支持RS232异步通信协议,自动插入/删除起始位、停止位、奇偶校验位
②、数据位5~8位,停止位1、1.5、2
③、波特率可编程,波特率因子:16
④、有与MODEM接口信号
⑤、多种中断源输出:发完一个字符、收到一个字符、数据帧错、校验错、溢出等
⑥、发送、接收均为双缓冲器结构
b、注意:
①、与PC机接口类似8255
②、PC机系统看8250
10个可访问的寄存器
基地址:COM1:3F8h
COM2:2F8h
偏移地址:0~6
接收/发送缓冲寄存器各一个,用同一地址
DLAB位为“0/1”,+0、+1访问不同单元
③、寄存器有只读、只写、可读写之分
④、波特率的控制
⑤、发送过程
⑥、接收过程
⑦、传输控制:数据位数、奇偶校验、停止位等
⑧、传输状态:发送/接收器工作状态
⑨、中断控制:中断开放、中断源
⑩、MODEM逻辑

9、MCS51串行通信接口:
a、SBUF:发送数据缓冲器,类似于PC端的一个缓冲区,是两个寄存器,但用户看来是一个,即同样功能的同样名字的寄存器。
在这里插入图片描述
b、串口发送:内部总线并行输入八位数据,写入SBUF,然后通过内部移位脉冲(定时器)一位一位通过TXD引脚发送出来,发送完成后,给计算机发送一个TI中断,然后再进行下一个字节的并行串行转换。这里的移位脉冲就是我们的波特率。
c、串口接收:将RXD引脚接受到的串行移位数据给一个移位寄存器,通过移位脉冲(即我们规定的波特率)进行判断,即通过一个下降沿检测,记录多长时间当成一个比特,当收到一个字节的时候,产生一个RI中断,高速计算机我接受到了一个比特,然后将移位寄存器中的数据给SBUF,此时已经是八位的并行数据,然后发送到内部总线。
d、注意:
寄存器为:SBUF和SCON
波特率因子为:16
发送接收过程:
在这里插入图片描述
e、控制与状态:通过SCON寄存器实现
SCON(SM0 SM1 SM2 REN TB8 RB8 TI RI)
①、SM0 SM1:选择4种工作模式
②、SM2:用于多机通信(1:表示发送ID,0:数据)
③、REN:允许接收
④、TB8 RB8:9bit方式时的D8
⑤、TI RI:中断标志位
f、波特率:
固定(方式0、2)或可变:定时器1溢出速率(方式1、3)
波特率=2SMOD定时器1溢出速率/32
定时器1 (方式2)溢出速率=Fosc/12/(256-TH1)
初值 TH1=256-2SMOD
Fosc/12/32/波特率)

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/106436992