UART通信协议(串口通信)
1、两根通信线(发送和接收),TX与RX要交叉连接。只需进行单向通讯时可只连接一根通信线。
2、仅支持点对点的通信,不像I2C、SPI支持一对多通信。
3、进行通信的两设备电平标准必须一致,当电平标准不一致时应该加上电平转换芯片。
串口参数:
波特率:串口通信的速率
起始位:标志一个数据帧的开始,固定为低电平
数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
校验位:用于数据验证,根据数据位计算得来
停止位:用于数据帧间隔,固定为高电平
- 可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)
- 可选校验位(无校验/奇校验/偶校验)
为什么UART通信要采用16倍过采样技术?
主要目的是提高数据传输的可靠性和抗干扰能力。通过更高的采样率,接收器能够更准确地检测数据位,避免因边沿失真或时钟不同步而导致的错误。
工作原理:
在UART通信中,数据传输以一个起始位“0”开始,接收器(RX)通过检测从逻辑“1”到“0”的跳变来识别起始位。16倍采样的具体过程如下:
- 接收器在检测到低电平后,连续采样8个时钟周期。
- 如果这8个周期均为低电平,则确认起始位有效。
- 确认起始位后,接收器每隔16个时钟周期采样一次,确保采样点位于每个数据位的中间位置。
- 通过对数据位的7、8、9三个采样点进行“三取二”原则判断,最终确定数据位的值。
关于接收器RX的设计最重要的一点就是如何提高采样的准确率,最好是采样点处于被采样数据位的中心点。所以就要采用一种比波特率高n倍的采样方式进行采样,来避免边沿失真和时钟不同步引起的采样不准确。
此处用比波特率高16倍的过采样技术:
按照该图进行分析:
1.t1-t2:当t1时刻检测到低电平,就从这开始进行采样检测,当进行8个时钟周期的采样到t2时,采样结果都是低电平那就说明起始位有效,否则判定为噪声。
2.t2-t3:当起始位有效之后接收器每隔16个周期进行一次采样,这就是会确保在后续对data位的每次采样都位于每个data位的中心位置。
从此循环往复下去知道data位的采样结束,并且检测坚持到停止位。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |