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模式:以原始数据形式显示
- 文本模式:以字符编码形式显示
数据包接收
对于包含包头、数据和包尾的数据包,可以使用状态机来处理不同状态的逻辑。状态机通过标志位来区分包头、数据和包尾的状态,并进行相应的处理。
热门推荐
化疗后CA125需要复查吗?专家权威解答
化疗后CA125需要复查吗
“林中飞仙”白鹇现身龙泉
牙齿矫正的详细流程:从咨询到保持器佩戴
期货交易必修课:四大技术分析指标详解与实战应用
颈椎病穴位:7个常用穴位及功效详解
什么是扣除非经常性损益后的亏损?如何分析扣非亏损对企业的影响?
A股三大指数全线翻红,军工股集体大涨
小规模纳税人、免税的和需要缴纳的税费怎么计提?实际缴纳的时候、怎么做账
怎么把excel上的通讯录导入手机版
从寿星到反派:无量仙翁的“黑化”之路,他与南极仙翁是同一人吗?
中国十大红茶排名,探寻红茶之巅
哪些渠道可以获取最新的政策解读?
驾照类型与年龄限制,你了解多少
国产操作系统安全分析与防护:从机制到实践
新型电力系统:清洁高效又智能
风格切换发现:如何在股票市场中发现风格切换
幼儿园体能大循环活动的价值及活动组织建议
期货的卖空是什么意思?卖空操作如何影响市场价格?
股票卖空交易:基本概念、风险与策略
如何转行做人工智能
等边三角形面积公式及其推导
提高普通工人工资,缩小贫富差距,实现社会公平与经济稳定共赢
巡特警支队多措并举贯彻全市公安工作会议精神 绘就城市平安新图景
新能源汽车市场规模扩张将拉动汽车用钢消费
什么是电池循环周期?详解电池寿命与性能的关键指标
比喻论证、类比论证与对比论证辨析
儿童成语故事大全,趣味又启发思维的故事集
软件项目如何做需求收集
眼镜布,居然不是用来擦眼镜的