一、协议
1.1 消息格式
串口协议是一种全双工、异步通信协议,不需要同步时钟,数据的发送是一位一位的发送,完整的一帧数据通常由起始位、数据、奇偶校验位和停止位组成
1.2 波特率
为确保正确的收发信息,双方必须设置相同的波特率,这个参数概念上代表的是每秒钟能传输的最大位数,实质上起到信号同步的功能。可以这么理解:发送方以该频率(或者叫时序)产生信号并发送,接收方也采用同样的频率(或者叫时序)进行信号采样,如果双方波特率不一致,发送和接收数据就会错乱
二、通信过程
2.1文字描述
- 不传输数据时,数据传输线通常保持高电平
- 发送方发送数据:先将传输线的电平拉低告诉对方开始传输数据 --》将数据一位一位发送 --》 发送奇偶校验位 --》将电平拉高代表当前数据帧发送结束
- 接收方接收数据:检测到高电平到低电平越变 --》按照事先设定好的波特率进行采样。
2.2 图解:
三、几个易混淆的概念
UART、COM口、TTL、RS485、RS232到底啥关系?
串口、UART口、COM口、USB口是指的物理接口形式(硬件),RS232、RS485是基于UART而制定的不同的电气标准,不同标准之间的区别在于电平不一样
- TTL电平:一般指单片机用的电平,UART口也一般指的是单片机上的串口接口,标准TTL输入高电平最小2V,输出高电平最小2.4V,典型值3.4V,输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V
- RS232:逻辑1:-3 ~ -15V,逻辑0:+3 ~ +15V
- RS485:采用差分方式传输,逻辑1:以两线之间的电压差为+(2 ~ 6)V表示;逻辑0:以两线之间的电压差为(2 ~ 6)V表示。
四、帧协议
针对大型项目里,经常遇到多台设备之间相互通信、环境有干扰、数据量大或者长度不确定等情况,因此一般要基于UART协议之上再自定义通信协议(通常包含帧头,帧尾,数据、校验、数据长度等信息)。
参考文献
https://www.analog.com/cn/analog-dialogue/articles/uart-a-hardware-communication-protocol.html