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模式:以原始数据形式显示
- 文本模式:以字符编码形式显示
数据包接收
对于包含包头、数据和包尾的数据包,可以使用状态机来处理不同状态的逻辑。状态机通过标志位来区分包头、数据和包尾的状态,并进行相应的处理。
热门推荐
Unity3D如何异步处理大量数据库
乡镇卫生院的主要职能是什么?
粤听越懂法|年关将至,关于年终奖你知多少?
洗头忽略了这一点,头皮屑永远洗不干净!皮肤科医生提醒……
今冬为何异常寒冷?专家解析全国多地气温偏低原因
NBA单赛季50+次数排名,乔丹只有8次排名第四
合资股权如何进行合理分配?分配合资股权需要遵循哪些原则?
短视频策略指标体系如何进行定义
卤菜香料指南:四种关键香料让卤味更美味
看我“火电+”七十二变!
怪味花生的做法
重庆燃气背后金主浮出水面,原来我们的燃气被五大集团控制
商业银行流动性风险管理六大措施
公路工程定额中的岩土类别区分指南
笼目材料,凝聚态物理学家的团宠
甲状腺结节手术适应症详解
🌊 哈仙岛:东北黄海中的璀璨明珠
药学专业就业形势分析 毕业后能做什么工作
2025年非全日制研究生含金量详情一览
云盘硬盘u盘哪个更占优势
全谷物食物:糖尿病患者健康饮食的“宝藏”
如何在运动中快速提高爆发力-增强耐力-达到深度训练效果
40种酒瓶子设计如何影响消费者的购买选择?
便携式水质叶绿素测定仪原理及应用
水质叶绿素a检测仪工作原理与使用方法详解
伊利诺伊大学香槟分校热门专业详解
原料上涨,业绩承压!安宫牛黄丸和片仔癀锭剂多地回收市场价格下跌
电脑被人弄坏了如何赔偿是合法
带着孩子游图卢兹:5 项亲子活动
春季干咳怎么办?5类药物对症治疗,快速缓解不适!