UART协议介绍
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称为UART),中文可以叫串口通信协议,常用于单片机和外部模块进行通信,也可以用于单片机和电脑进行通信。应该算是最简单方便的一种通信协议了,电脑插上USB转串口模块,也可以方便的从单片机上打印一些信息到电脑上显示。
引脚定义
主要的引脚其实就两个,一个发送数据的引脚TXD,一个接收数据的引脚RXD
- TXD:用于发送数据的引脚,需要接到对方的RXD引脚上
- RXD:用于接收数据的引脚,需要接到对方的TXD引脚上
- GND:发送接收端需要共地
- VCC:供电引脚
如果只需要发送数据可以只接TXD,只需要接受数据也可以只接RXD
基本参数
串口通信协议有几个关键的参数,定义了发送接收数据的规则
- 波特率:因为串口协议没有单独的时钟信号线来给接收方确认采样的时刻,所以在发送接收数据之前,会定义好发送数据的脉冲频率,比如1秒产生9600个信号,那么发送接收方就都按照这个频率来采样数据,就可以对齐数据。常用的波特率我一般用过9600和115200。
- 数据长度:串口协议发送数据是按照一个包一个包发送的,一般我们就定义一个包包含8个bit位也就是一字节数据,所以数据长度一般就设置为8,如果需要校验数据就多一位校验位,加起来就是设置9,我一般也可以不加校验位
- 校验位:校验位是紧跟在数据后的一位,用于校验前面数据的完整性,可采用奇校验、偶校验,但是一般好像也不太用,因为校验效果实在有限,不管是奇校验还是偶校验只不过是数数数据位1的个数,如果出现2位都有变化,也校验不出来
- 停止位长度:数据位和校验位(如果有校验位)都发送完了,会发送一个停止位,这里就是定义停止位的长度,一般也就是1
通信过程
- 发送数据前,初始状态TXD置为高电平,这时是一个空闲状态,准备发送数据将TXD拉低并且保持一个信号周期,如果波特率事先约定的9600,那就是1/9600秒,这一位就是起始位,代表我要准备发数据了
- 1/9600秒的起始位结束,就开始要发送数据位,数据长度一般设置8,那么接下来就是8/9600秒的连续8个信号
- 发完数据位后,紧接着就要发送停止位,停止位长度如果是1,那就接上一个1/9600秒的高电平即可
以上10个信号周期就发送出去了一个字节的数据了,也就是这10个信号周期组成一个数据包,以下是发送11011010的时序图:
评论区