单片机常用通信协议之UART通信简介

控制/MCU

1878人已加入

描述

UART通信简介

UART即通用异步收发器(UniversalAsynchronousReceiver/Transmitter),和IIC一样,其总线构成只有两根线,即TX和RX,但其可以同步收发,故UART为异步、全双工的串行通信方式;其在嵌入式单片机领域具有极其广泛的应用,如通常的串口通信:RS232、RS485、RS422、TTL等。

UART通信允许两个时钟不同的设备进行通信,其原理就是通过双方约定相同的波特率(即单位时间内传送的码元符号的个数,它是对符号传输速率的一种度量)和数据帧格式(即数据位数,校验方式,停止位等)进行数据的收发,波特率的单位是每秒比特数(bps),常用的波特率有:1200bps,2400bps,4800bps,9600bps,19200bps,38400bps,57600bps,115200bps,921600bps等。

UART通信的实现需要两根通信线:TX和RX,其中TX用于数据的发送,RX用于数据的接收,其中主机的TX接设备的RX,主机的RX接设备的TX。

UART通信协议

要实现双方通信则先要定义双方的通信的波特率,然后再进行数据的收发;下面来介绍一下UART通信中的数据帧是怎样的:

  1. 起始位:标志数据传输开始,发出一个逻辑电平为0的信号标志为起始位;
  2. bit数据位:即实际通信中数据bit位数,常用的数据位一般配为5或6或7或8,LSB低位先行;
  3. 奇偶校验位:发送数据的校验可以为无校验、奇校验、偶校验;奇校验:数据位中1的个数为偶数,则校验位为1,否则为0;偶校验:数据位中1的个数为偶数,则校验位为0,否则为1;
  4. 停止位:标志当前数据传输的结束,可配为1位、1.5位或2位的逻辑电平1.
  5. 空闲位:处于逻辑电平1状态。
    一帧完整的数据是由1位起始位、5到8位数据位、0到1位校验位、1/1.5/2位停止位构成,如下图数据帧的传输时序示例所示:

单片机

UART通信特点

  1. 不需要同步时钟线,只需要约定好波特率及数据帧格式即可通过TX、RX收发数据,因此其线路相对比较简单,且成本低;
  2. 可实现双向异步通信;
  3. 双方可根据具体的需要来约定具体的传输数据包格式,便于用户进行开发;
  4. 因其高低电平用0和1表示,通信的抗干扰能力差,数据的通信容易受线缆的影响,通信距离偏短。

UART相关代码

UART在我们开发中最常用到的功能就是串口调试功能,以下附上软件UART串口的相关代码供大家参考:

void uart_init(void)//uart初始化

{

UART_InitTypeDef UART_InitStructure;

GPIO_PinRemapConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1, GPIO_Remap_0);

UART_InitStructure.UART_BaudRate = 115200;



UART_InitStructure.UART_WordLength = UART_WordLength_8b;

UART_InitStructure.UART_StopBits = UART_StopBits_1;

UART_InitStructure.UART_Parity = UART_Parity_No;

    

UART_Init(UART0, &UART_InitStructure);

}

以上初始化主要为配置相应IO口复用为UART模式(TX脚配为复用推挽输出,RX脚配为浮空输入),配置串口波特率为115200、数据位为8位、1位停止位、无校验位。

//重定位C库函数printf到UART0, 发送一字节数据到UART

int fputc(int c,FILE*f)

{

while(!UART_IsTXEmpty(UART0));

UART_SendData(UART0, (uint8_t) ch);



return ch;

}

//重定位C库函数scanf到UART0,等待串口输入数据

int fgetc(FILE *f)

{

while(UART_GetFlagStatus(UART0,UART_FLAG_RXNE) == RESET);

return(int)UART_ReceiveData(USART0);

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分