UART单总线通信双方仅用一根通信引脚连接,该通信脚既用于数据发送,又用于数据接收。

注意事项:
1)TX_H、TX_S 为串行数据输出;RX_H、RX_S 为串行数据接收
2)主机、从机硬件上需要做好电阻匹配,确保通信时达到有效高、低电平。
3)TX_H、TX_S 引脚必须支持“串行输出”和“输入高阻”两种状态的快速切换,在串口发送数据时为“串行输出”,发送完成后立即切换成“输入高阻”释放总线。
UART单总线与双总线通信对比

二 通信帧格式

1)同步字:开始2 Byte同步字可防止休眠、唤醒后串口丢失数据后 2 Byte用于多包级联发送时,确保多包之间有足够的时间供MCU处理数据
2)0x23:表示一个通信包发送的起始位;0x27:表示一个通信包发送错误,再次重传的起始位
3)0x2E:表示一个通信包的结束
4)流水号:标识一个通信包的序号,同时用于区分来自主机/从机的通信帧
5)命令、长度、数据:代表通信帧的主要数据内容
5)校验位:用于校验一个通信帧内容是否正确
三 可靠性机制
1、时间片同步

1)时间片间隔默认为T1(12ms);
2)主机TX_H发送完B包,从机RX_S收到后,从机调节自身时间片,T2(300us-5ms)后发送C数据包;
3)C数据包发送完成后,从机时间片恢复到T3(12ms),至此以后从机时间片与主机时间片保持同步。
注意事项:
1)时间片同步机制用于尽量避免主机/从机随机进行数据发送而导致通信冲突。
2)12ms时间片来源,传输250字节所需实践,(250*10/400k=6.25ms),数据传输约占7ms,剩余时间用于等待ACK。
2、主动重传

1)单总线通信时,主/从机在数据发送过程中会接收到自身发送的数据;
2)若接收到本身发送的数据包校验失败,则认为数据发送失败;
3)数据发送失败后,延时T1时间,再次发送原数据帧;
4)主动重传只进行一次重传
3、时间片冲突及主动重传

1)如上图,TX_H发送数据包A时,TX_S也发送了数据包C,在T1时间内TX_H, TX_S产生了时间片冲突;
2)在单总线的硬件设计上,主机数据优先级高,即主机的数据包可以被完整的接收;
3)从机在C数据包发送完成,由于无法完整接收到自身数据包,则在T2(12ms)时间后主动发送重传包D(C的重传数据包)。
4、ACK机制及超时重传

1)当主机/从机接收到对方的请求数据帧时,在该时间片内回应ACK,如图1;
2)若在12ms时间片内,没有接收到对方的ACK,则进行数据帧超时重传,如图2;
3)数据帧超时重传机制最多重传3次。
UART单总线通信原理与可靠性机制解析
5383





