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模式:以原始数据形式显示
- 文本模式:以字符编码形式显示
数据包接收
对于包含包头、数据和包尾的数据包,可以使用状态机来处理不同状态的逻辑。状态机通过标志位来区分包头、数据和包尾的状态,并进行相应的处理。
热门推荐
荷花:普者黑的清新典雅之美
地毯的分类有哪些,如何选择适合的家居地毯
英雄联盟手游中齐天大圣的连招实战运用攻略
五险一金如何合理扣除?这种扣除方式有哪些依据?
揭秘虚假报销现象:如何识别与防范?
鸡精比鸡汤或鸡肉营养?哪个更补?适合每种病人吗?
武夷山产什么茶?武夷山茶有哪些?武夷岩茶的五大分类
节气“植”说丨二十四节气·惊蛰
“摘帽”与退市并行 ST之后上市公司的脱困与重生
管理学五力模型分析案例
西夏学冷与热,一门冷门绝学的当代复兴
公积金贷款和商业贷款的区别,你了解吗?
如何撰写科研论文的问题陈述(Problem Statement)?
老年群体消费结构升级,商家纷纷布局适老化消费场景
陕西十大特色面食:biangbiang面、油泼面、臊子面等你尝
51单片机的存储空间梳理
细说肿瘤标志物在肿瘤防治中的临床应用
聚焦世界儿童日与青少年心理健康教育
如何写出一份完美的律师函?
台湾人在上海购房条件全面解析
种植新风尚:拔牙的时候可以直接种牙吗?可以,但即刻种植并非适用于所有情况!
元宇宙如何运作?
国有企业人事档案管理制度怎么建立?
Excel数据透视表制作指南:从入门到精通
香水可以带上高铁动车吗?你需要了解的规定和注意事项
ERP系统模块与功能详解:助力企业实现高效管理
如何补救烫发导致的头皮烧伤
如何判断黄金市场的高位与低位?这种判断依据是什么?
爆火IP形象的五大特性:从Hello Kitty到迪士尼
最耐寒耐旱的九种树木,来看看它们都是些什么树?