基于Stm32单片机的串口通信协议

目录

一、串口介绍

1、电平标准

2、串口参数及时序

二、串口收发功能实现

1、配置串口原理

2、代码实现

三、串口数据包发送

1、状态机

2、代码实现


一、串口介绍

串口:是一种应用十分广泛的通讯接口,串口成本低,容易使用,通信线路简单,可实现两个设备的互相通信。单片机的串口可以使单片机与单片机,单片机与电脑,单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。

使用起来比较简单:1.串口通信有两根通信线(发送端Tx和接收端Rx)2.Tx和Rx要交叉连接3.当只需单向的数据传输时,可以只接一根通信线4.当电平标准不一致时,需要加电平转换芯片。

常见的通信协议有以下这些:

基于Stm32单片机的串口通信协议_第1张图片

1、电平标准

电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

TTL电平:+3.3V或+5V表示1,0V表示0

RS232电平:-3~-15V表示1,+3~+15V表示0

RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)

2、串口参数及时序

  • 波特率:串口通信的速率
  • 起始位:标志一个数据帧的开始,固定为低电平
  • 数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
  • 校验位:用于数据验证,根据数据位计算得来
  • 停止位:用于数据帧间隔,固定为高电平

基于Stm32单片机的串口通信协议_第2张图片

二、串口收发功能实现

1、配置串口原理

通过以上时序图就可以发送一个字节(使用标准库只需简单的一个USART_SendData函数就可以实现),但需要对相应的寄存器进行配置,如下图所示:

基于Stm32单片机的串口通信协议_第3张图片

最左边的是波特率发⽣器,⽤于产⽣约定的通信速率,时钟来源是PCLK2或1,经过波特率 发⽣器分频后,产⽣的时钟通向发送控制器和接收控制器,发送控制器和接收控制器⽤来控 制发送移位和接收移位,之后由发送数据寄存器和发送移位寄存器这两个寄存器的配合,将 数据⼀位⼀位的移出去,通过GPIO⼜的复⽤输出,输出到TX引脚,产⽣串⼜协议规定的波 形,这个移位寄存器是向右移的,是低位先⾏,当数据由数据寄存器转移到移位寄存器时, 会置⼀个TXE的标志位,通过判断这个标志位,就可以知道是不是可以写⼊下⼀个数据了, 接收部分也是类似的,RX引脚的波形,通过GPIO输⼊,在接收控制器的控制下,⼀位⼀位 地移⼊接收移位寄存器,移完⼀帧数据后,数据就会统⼀转运到接收数据寄存器,在转移的 同时,置⼀个RXNE标志位,检查这个标志位,就可以知道是不是收到数据了,同时这个标 志位也可以去申请中断,这样就可以在收到数据时

你可能感兴趣的:(stm32,嵌入式硬件,单片机)