芯片选型
Ciga Device — GD32F470系列
串口通信
串口通信指的是通过串行通信接口进行数据传输的通信方式,通常用于短距离、低速率的数据传输。
串口通信可以使用不同的串行通信协议和接口,常见的串口通信协议有UART、USART、RS-232、RS-485、SPI、I2C等
UART通信介绍
Universal Asynchronous Receiver Transmitter 即 通用异步收发器,是一种通用的串行、异步通信总线 该总线有两条数据线,可以实现全双工的发送和接收 在嵌入式系统中常用于主机与辅助设备之间的通信。同步通信和异步通信的最大区别在于传输数据时是否需要时钟信号同步
UART的数据帧
发数据流程:
- 拉低电平
- 发送8位数据(先发低位,后发高位)
- 发校验位,校验位为0或1都可,也可以不发
- 再拉高电平代表结束
校验位
串口通信过程中有五种校验方式:奇校验(ODD)、偶校验(EVEN),1校验(MARK)、 0校验(SPACE),无校验(NONE)
- 奇校验(ODD):校验位被设置为确保数据位中1的总数为奇数。例如,数据位中的“1”总数为奇数,校验位被设置为低电平(拉低为0),否则设置为高电平。故而,如果接收方统计发现“1”总数为偶数,且校验是低电平,则校验失败,否则成功。
- 偶校验(Even): 校验位被设置为确保数据位中1的总数为偶数。例如,数据位中的“1”总数为偶数,校验位被设置为低电平(拉低为0),否则设置为高电平。故而,如果接收方统计发现“1”总数为奇数,且校验是低电平,则校验失败,否则成功。
- 1校验(MARK):1校验要求校验位始终为逻辑1,适用于古老的通讯设备。
- 0校验(SPACE):0校验要求校验位始终为逻辑0,也适用于古老的通讯设备。
- 无校验(NONE):不使用任何校验位,数据直接传输
注:部分ARM系列库要把发送的BIT长度word length
设置为9,才能正确发送校验位。
发送01和0011问题
发送01和0011,接收端如何来确定和区分
波特率
波特率决定了接收数据的速度,也就是每个电平持续的时间,用以区分是否是00或者11持续发送
累计误差消除
发送和接收的时候使用的是不同的时钟,所以即便是使用相同的波特率,也有可能因为时钟微小的不同步,造成数据的累计误差,解决方案是,UART只能一次性最多发送8bit的数据,然后重新发送,以消除累计误差
串口原理图
串口数据发送流程图
串口的标志位
代码实现步骤
- GPIO引脚配置(串口功能接硬件PIN脚,选择AF模式)
- 串口配置
- 串口发送单个字符函数函数
- 串口发送字符串函数
- 串口数据打印函数
- 串口接收数据函数