STM32F103C8T6原理学习笔记——串口通信
创作时间:
作者:
@小白创作中心
STM32F103C8T6原理学习笔记——串口通信
引用
CSDN
1.
https://blog.csdn.net/Hacanchen/article/details/134344974
串口通信是嵌入式系统中常用的一种通信方式,尤其在单片机开发中占据重要地位。本文以STM32F103C8T6单片机为例,详细介绍了串口通信的基础知识、硬件电路设计以及USART外设的使用方法。通过本文的学习,读者可以掌握串口通信的基本原理和实际应用,为嵌入式系统开发打下坚实的基础。
一、通信接口基础
通信的目的在于将一个设备的数据传送到另一个设备,从而扩展硬件系统的功能。为了确保数据能够正确传输,通信双方需要遵循一定的规则,这就是通信协议。
通信引脚
不同的通信接口使用不同的引脚:
- USART:TX(发送)和RX(接收)
- I2C:SCL(时钟)和SDA(数据)
- SPI:SCLK(时钟)、MOSI(主机输出从机输入)、MISO(主机输入从机输出)和CS(片选)
- CAN:CAN_H和CAN_L(差分数据)
- USB:DP(数据正)和DM(数据负)
通信模式
通信模式主要分为三种:
- 全双工:通信双方能够同时进行双向通信,需要两根通信线(如USART的TX和RX,SPI的MOSI和MISO)。
- 半双工:通信双方可以互相发送数据,但不能同时进行,只有一根数据线(如I2C、CAN、USB)。
- 单工:数据只能从一个设备传输到另一个设备,通信是单向的(如灯塔发出光信号)。
时钟特性
- 同步通信:I2C和SPI有单独的时钟线,接收方可以在时钟信号的指引下进行采样。
- 异步通信:USART、CAN、USB没有时钟线,需要双方约定一个采样频率,并增加帧头帧尾进行采样位置对齐。
电平特性
- 单端信号:引脚的高低电平都是对GND的电压差,通信双方需要共地。
- 差分信号:CAN和USB通过两个差分引脚的电压差传输信号,不需要共地,传输速度和距离更远。
设备特性
- 点对点:USART和USB都是点对点设备,直接传输数据。
- 多设备:I2C、SPI、CAN可以在总线上挂载多个设备,需要寻址确定通信对象。
二、串口通信原理
串口是一种应用广泛的通信接口,具有成本低、使用简单、通信线路简单等特点。单片机的串口可以实现与各种设备的通信,极大地扩展了单片机的应用范围。
硬件电路
- 简单双向串口通信需要两根通信线(发送端TX和接收端RX)
- TX与RX要交叉连接
- 当只需单向的数据传输时,可以只接一根通信线
- 当电平标准不一致时,需要加电平转换芯片
- 如果两个设备都有独立供电则不需要接VCC,如果一个有一个没有,协议把两个设备的VCC接在一起。
电平标准
串口常用的电平标准有三种:
- TTL电平:+3.3V或+5V表示1,0V表示0
- RS232电平:-3
-15V表示1,+3+15V表示0 - RS485电平:两线压差+2
+6V表示1,-2-6V表示0(差分信号)
串口参数及时序
- 波特率:串口通信的速率,单位是bps(bits per second)
- 起始位:标志一个数据帧的开始,固定为低电平
- 数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
- 校验位:用于数据验证,根据数据位计算得来
- 停止位:用于数据帧间隔,固定为高电平
三、USART外设详解
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是STM32内部集成的硬件外设,支持同步和异步通信模式。
USART功能特点
- 最高支持4.5Mbits/s的通信速率
- 可配置数据位长度(8/9位)
- 可配置停止位长度(0.5/1/1.5/2位)
- 支持奇偶校验
- 支持硬件流控制
- 支持DMA传输
- 支持智能卡、IrDA、LIN等通信协议
USART硬件结构
USART的主要硬件结构包括:
- 数据寄存器(DR):发送数据寄存器(TDR)和接收数据寄存器(RDR)共享同一个地址
- 发送移位寄存器:将一个字节的数据一位一位地移出去
- 接收移位寄存器:将接收到的数据一位一位地移入
- 硬件流控:通过nRTS和nCTS引脚实现数据流控制
- 同步时钟(SCLK):支持SPI协议和自适应波特率
- 唤醒单元:实现多设备通信功能
数据帧结构
串口数据帧由起始位、数据位、校验位和停止位组成。
起始位侦测
串口输入部分的电路对采样时钟进行了细分,以波特率的16倍进行采样。当检测到下降沿时,会进行连续16次采样,以确保起始位的准确性。
数据采样
波特率发生器通过波特率寄存器BRR里的DIV值来计算波特率:
波特率 = fPCLK2/1 / (16 * DIV)
数据模式
串口数据可以采用HEX模式或文本模式显示:
- HEX模式:以原始数据形式显示
- 文本模式:以字符编码形式显示
数据包接收
对于包含包头、数据和包尾的数据包,可以使用状态机来处理不同状态的逻辑。状态机通过标志位来区分包头、数据和包尾的状态,并进行相应的处理。
热门推荐
国有企业投融资:概念、特点与影响因素分析
如何通过沟通,解决伴侣间的矛盾?
纯净水矿泉水白开水......一文看清水的分类与特性
孕中期会有哪些不适症状,正常和异常情况要区分
汉字如何用C语言进行字典排序
跳空高开的定义方式如何理解?这种定义方式有哪些实际应用?
流感来袭 饮食调整有讲究
流感患者饮食指南:哪些食物有助于增强免疫力?
产品经理如何进行用户需求分析?
提升演示效果:使用AI一键生成PPT的技巧与窍门
痛风是嘌呤吃多了?真相和你想的不一样!
HTML游戏开发完全指南:从入门到实战
小红书进军网文业务:与第三方合作试水,能否打造新的增长点?
应变式压力传感器的校准与维护方法
华科黄永安/厉侃等:柔性织物应变传感器—超高灵敏度与宽量程的完美结合
如何设计一个吸引人的高效沟通宣传口号?
中国女生平均身高揭秘:遗传与生活因素影响大
美国本科毕业后继续深造的选择有哪些
混合所有制改革与国企内部控制质量研究
台式机显卡温度正常范围及监控方法(了解显卡温度的重要性和保持良好散热的措施)
花园绿植盆栽的养护技巧是什么?如何保持植物健康?
房地产开发企业常见舞弊行为及舞弊高发环节
揭秘火影忍者中的传奇角色:波风水门的忍术与战斗风格,你绝对想不到的瞬间移动术
修仙界道法万千,除了无情道还有哪些修炼体系?详解七大主流路径
药忘吃了怎么办? 一次补吃两次的量很危险!
啤酒的化学成分:为什么啤酒被称为"液体面包"?
手环正确使用步骤 手环表怎么使用图解
24小时内三起客机事故,波音公司最新回应
2025中国生物发酵产业技术大会举办 业内热议AI接入生物制造
手续费减半!套保交易迎利好