【STM32F1标准库】理论——通信协议:串口

目录

一、简介

二、连接方式

三、串口参数与时序

1.参数

2.时序

四、STM32实现串口通信的方法

1.使用软件模拟

2.使用硬件外设

杂谈

1.通信的目的

2.常见可以使用串口通信的模块

3.串口常用电平标准

4.串口从波形反推数据

5.奇偶校验


一、简介

命名:USART(通用同步收发器)

UART (通用异步收发器)

引脚:TX 发送引脚

RX 接收引脚

串口通信的设备TX和RX交叉相连

特性:全双工,设备之间可以相互收发数据,接收和发送可以同时进行

时钟:同步,使用同一个时钟频率

异步,时钟频率不一致,需要额外约定通信速率

电平:单端,信号的高低电平取决于对GND的电压差

设备:点对点

二、连接方式

不同设备TX和RX交叉连接

VCC和GND正常连接

通信的高低电平取决于对GND的电压差,当两设备电平标准不一致时需要加电平转换芯片

三、串口参数与时序

1.参数

波特率:串口通信的速率

(每秒钟传输的二进制数个数,bit/s)

起始位:标志一个数据帧的开始,固定为低电平

数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行

校验位:用于数据验证,根据数据位计算得来

奇校验:数据位 + 校验位共有奇数个 1

偶校验:数据位 + 校验位共有偶数个 1

停止位:用于数据帧间隔,固定为高电平

1帧数据的组成1:1位起始位 + 8位数据位 + 1位停止位 = 10位数据

1帧数据的组成2:1位起始位 + 8位数据位 + 1位校验位 + 1位停止位 = 11位数据

2.时序

空闲状态高电平

将电平拉低产生下降沿 转为起始状态

正常发送数据(8/9bit)

将电平拉高(因为发送数据的缘故不一定有上升沿,重点在于电平状态) 转为停止状态

四、STM32实现串口通信的方法(主要是异步通信)

1.使用软件模拟

例如要实现波特率为9600的数据传输,不必使用固定的IO口

发送时只需使用定时器每 1s / 9600 = 104us 按照数据帧的要求调用 GPIO_WriteBit() 对配置的引脚置高低电平即可,

读取时使用外部中断监测表示起始信号的下降沿,定时调用 GPIO_ReadInputDataBit() 对配置的引脚读取每一位高低电平最终拼成1帧数据即可。

2.使用硬件外设

根据数据寄存器内的字节数据,自动生成数据帧时序通过固定的TX引脚发出

通过固定的RX引脚将收到的数据帧时序,拼接成一个字节存放在数据寄存器内

即通过读写数据寄存器实现串口通信

自带波特率发生器(对系统时钟分频)

可配置数据帧长度、停止位长度

可配置校验位

支持同步模式、硬件流控制

杂谈

1.通信的目的

将一个设备的数据传送到另一个设备,扩展硬件系统

2.常见可以使用串口通信的模块

USB转串口模块

陀螺仪(既支持USART又支持IIC)

蓝牙串口模块

3.串口常用电平标准

TTL: +3.3V或+5V表示1, 0V表示0

RS232: -3~-15V表示1, +3~+15表示0

RS485:两线压差+2~+6V表示1, -2~-6V表示0 (差分信号)

4.串口从波形反推数据

因为采用低位先行:数据从低位开始发送

0xF=00001111 发送顺序 11110000

所以从波形反推数据方法1------>波形从右往左看,数据从高往低写

所以从波形反推数据方法2------>波形从左往右看,数据从低往高写

5.奇偶校验

奇校验:数据位 + 校验位共有奇数个 1

偶校验:数据位 + 校验位共有偶数个 1

缺陷:当同时有偶数个数据位发生变化则检测不出来数据出错了

6.STM32F1对于输入噪声的处理及波特率计算

对每一位信号都进行16次采样,将第8、9、10次采样位置定为被采信号的中间位置,并且比较这三次采样01的个数确定信号类型

由此可得STM32F1波特率公式

波特率 = (一或二分之一)时钟频率 / (16 * 分频系数)

多除以16是因为每bit数据都被采样了16次

7.硬件流控制

在硬件电路中多使用一条信号线,用于发送速度的控制,防止发送快而接收慢导致的数据覆盖问题

相关推荐
FreakStudio12 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘17 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484917 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150017 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼17 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
牛根生同志17 天前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
wohoo_wangzi17 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
goldenrolan17 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
✎ ﹏梦醒͜ღ҉繁华落℘17 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展17 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件