USART串口协议

---
title: USART串口协议
tags:
- STM32
categories:
- STM32学习
---


# 通信接口
通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
通信协议:制定通信的规则,通信双方按照协议规则进行数据收发
![](https://tan-1317522972.cos.ap-guangzhou.myqcloud.com/OB/000_Attachment/20230514212751.png)
1. ==USART==串口,引脚TX、RX,也会叫TXD和RXD,TX(Transmit Exchange)数据发送脚,RX(Receive Exchange)数据接收脚
2. ==I2C==通信,引脚SCl和SDA,SCL(Serial Clock)是时钟,SDA(Serial Data)是数据
3. SPI通信,引脚是SCLK、MOSI、MISO、CS,MOSI(Master Output Slave Input)是主机输出数据脚,MISO(Master Input Slave Output)是主机输入数据脚,CS(Chip Select)是片选,用于指定通信对象
4. CAN通信,引脚CAN_H和CAN_L,这两个是差分数据脚,用两个引脚表示一个差分数据
5. USB通信,引脚DP和Dm,DP/D+(Data positive),DM/D-(Data Minus),也是一对差分数据脚

- 全双工,通信双方能够同时通信,全双工的通信都要有两根通信线,发送和接收互不影响
- I2C 和 SPI  有单独的时钟线,所以时钟是同步的,剩下的没有时钟线,所以需要制定一个采样频率,并且需要增加帧头帧尾,对采样位置进行对其
- USART、I2C、SPI的高低电平都是对GND的电压差,所以单端信号通信的双方必须共地(也就是把GND接在一起)
- CAN和USB是靠两个差分引脚的电压差来传输信号,可以不需要GND,可以极大地提高抗干扰特性,所以差分信号传输速度和距离都可以很高

- I2C和SPI都是芯片之间的通信
# 串口通信
- 一般的串口都是点对点 

## USB转串口模块
芯片:ch340![](https://tan-1317522972.cos.ap-guangzhou.myqcloud.com/OB/000_Attachment/20230514214704.png)
可以把串口协议转换成USB协议

## 硬件电路
![](https://tan-1317522972.cos.ap-guangzhou.myqcloud.com/OB/000_Attachment/20230514214828.png)

## 电平标准
- 电平标准是数据1和数据0的表达方式,是传输线缆中认为规定的电压与数据的对应关系,串口常用的电平标准有![](https://tan-1317522972.cos.ap-guangzhou.myqcloud.com/OB/000_Attachment/20230514215022.png)

# 串口参数及时序
- 波特率:串口通信的速率
- 起始位:标志一个数据帧的开始,固定为低电平
- 数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
- 校验位:用于数据验证,根据数据位计算得来
    - 可以选择无校验、奇校验和偶校验
- 停止位:用于数据帧的间隔,固定位高电平

一般一帧中会有10位,其中有效载荷的数据位为8位,前后有起始位和停止位

# 总结
>总结:TX引脚输出定时反转的高低电平,RX引脚定时读取引脚的高低电平,每个字节的数据加上起始位,停止位,可选的校验位,打包成数据帧,依次输出在TX引脚,另一端RX引脚依次接收

# USART介绍
![](https://tan-1317522972.cos.ap-guangzhou.myqcloud.com/OB/000_Attachment/20230520133531.png)
- 波特率发生器:就是一个分频器,通过对既定频率的分频,得到响应的波特率,一般用9600或115200

![](https://tan-1317522972.cos.ap-guangzhou.myqcloud.com/OB/000_Attachment/20230520134112.png)
## 发送数据寄存器    
1. 在某时刻给TDR写入0x55,
2. 此时硬件检测到写入数据,会检查当前移位寄存器是否有数据正在移动,若没有数据,则0x55就会立刻全部移动到发送移位寄存器中,准备发送,
3. 当数据从TDR移动到移位寄存器时,会置一个标志位(TXE:TX empty),发送寄存器空,
4. 此时我们如果再检查标志位,如果置一了,就可以在TDR写入下一个数据
5. 注意TXE=1时,数据并没有发送出去,而是在发送移位寄存器中,只要数据从TDR转移到发送移位寄存器,TX1就会置1,我们就可以写入新的数据了
6. 此时发送移位寄存器就会在下面的发生器控制的驱动下向右移位,把数据输出到TX引脚
## 接收移位寄存器
1. 数据从RX引脚通向接收移位寄存器,在接收器控制的驱动下,**一位一位地读取RX电平**,**先放在最高位**,然后右移移位8次就可以得到一个字节的数据了。
2. 当一个字节移位完成后,这一个字节的数据就可以一下转移到接收数据寄存器RDR中,转移完成后也会置一个标志位RXNE(RX Not Empty),接收数据寄存器非空

## 流控
避免读取信息过慢导致的覆盖或丢失数据
1. nRTS(Request To Send)请求发送,是输出引脚,告诉此时能否接收
2. nCTS (Clear To Send)是清除发送,是输入引脚,用于接收别人的nRTS信号
3. 前面的"n"表示低电平有效


# USART基本结构
![](https://tan-1317522972.cos.ap-guangzhou.myqcloud.com/OB/000_Attachment/20230520135906.png)

# CH340
![](https://tan-1317522972.cos.ap-guangzhou.myqcloud.com/OB/000_Attachment/20230520143934.png)
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值