【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.硬件流控制

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

相关推荐
-Try hard-2 分钟前
ARM | 点亮LED灯!
arm开发·单片机·嵌入式硬件
llilian_1621 分钟前
卫星时钟 时钟同步解决方案——基于高精度卫星时钟同步授时装置 卫星同步时钟 授时同步装置
功能测试·单片机·测试工具
日更嵌入式的打工仔34 分钟前
电机三环控制
单片机·嵌入式硬件
weixin_6695452039 分钟前
JT8166A/B电容式六按键触摸控制芯片,JT8166B具备IIC通信接口
人工智能·单片机·嵌入式硬件·硬件工程
RFID舜识物联网44 分钟前
RFID耐高温标签在汽车喷涂工艺中的创新应用
大数据·人工智能·科技·嵌入式硬件·物联网·汽车
CODE_RabbitV1 小时前
STM32F103C8T6 理论部分学习笔记
笔记·stm32·学习
泛凡(Linyongui)1 小时前
一款基于LP4057芯片的单节 4.2V 锂电池线性充电管理电路,带电源路径自动切换功能
arm开发·单片机·py32
9稳1 小时前
基于PLC的生产线自动升降机设计
开发语言·网络·数据库·嵌入式硬件·plc
惶了个恐2 小时前
嵌入式硬件第五弹——ARM(2)
arm开发·嵌入式硬件
weixin_669545202 小时前
BC915E 5V/3.6A输入 两节升压充电IC,升压充电效率95%,输入最大支持18W,ESOP8 兼容IP2325
人工智能·单片机·嵌入式硬件·硬件工程·信息与通信