本文主要是介绍USART协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.串口通讯协议
对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层
物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输,eg:RS232、TTL高低电平
协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准,eg:串口数据包:起始位,数据位(8bit)、校验位、停止位
二.物理层
RS-232标准主要规定了信号的用途、通讯接口以及信号的电平标准
两个通讯设备的“DB9 接口”之间通过串口信号线建立起连接;
串口信号线中使用“RS-232 标准”传输数据信号;
RS-232 电平标准的信号会经过一个“电平转换芯片”转换成控制器能识别的“TTL校准”的电平信号,才能实现通讯
因为控制器一般使用 TTL电平标准,所以常常会使用 MA3232芯片对 TTL及 RS-232电平的信号进行互相转换。
1.电平标准
根据通讯使用的电平标准不同,串口通讯可分为 TTL标准及 RS-232 标准
为了增加串口通讯的远距离传输及抗干扰能力,RS232使用-15V 表示逻辑 1,+15V 表示逻辑 0
2.RS-232信号线
通讯时,串口线中传输的信号就是使用前面讲解的 RS-232 标准调制的。
两个通讯设备之间的收发信号(RXD与 TXD)应交叉相连;
在目前的其它工业控制使用的串口通讯中,一般只使用 RXD、TXD以及 GND 三条信号线
三、协议层
通讯双方的数据包格式要约定一致才能正常收发数据
1.波特率
串口异步通讯:异步通讯中没有时钟信号(如前面讲解的 DB9接口中是没有时钟信号的)
上图 中用虚线分开的每一格就是代表一个码元
2.通讯的起始和停止信号
串口通讯的一个数据包从起始信号开始,直到停止信号结束
起始信号由一个逻辑 0的数据位表示,数据包的停止信号可由 0.5、1、1.5或 2个逻辑 1的数据位表示,只要双方约定一致即可
3.有效数据
有效数据的长度常被约定为 5、6、7或 8位长
4.数据校验
1)奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个 8 位长的有效数据为:01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9位。
2)偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据帧:11001010,此时数据帧“1”的个数为 4 个,所以偶校验位为“0”。
四、STM32 的 USART
UART:它是在 USART基础上裁剪掉了同步通信功能,只有异步通信。我们平时用的串口通信基本都是 UART
STM32的 USART输出的是 TTL电平信号,若需要 RS-232标准的信号可使用MAX3232芯片进行转换。
五、参考:
野火STM32F429的中文资料
这篇关于USART协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!