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

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

相关推荐
进击的小头31 分钟前
02_嵌入式C与控制理论入门:自动控制理论核心概念拆解
c语言·单片机·算法
mftang1 小时前
基于GD32的直流无刷电机控制算法实现和验证
单片机·嵌入式硬件·rt-thread·gd32f527i-eval
清风6666661 小时前
基于单片机的十字路口交通信号灯控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
渡我白衣1 小时前
计算机组成原理(10):逻辑门电路
android·人工智能·windows·嵌入式硬件·硬件工程·计组·数电
清风6666662 小时前
基于单片机的雨量检测智能汽车雨刮器模拟系统设计与实现
单片机·嵌入式硬件·汽车·毕业设计·课程设计·期末大作业
少一倍的优雅2 小时前
hi3863 (ws63) 智能小车 (二)信息交互
单片机·嵌入式硬件·交互·harmonyos·hi3863
YouEmbedded2 小时前
解码STM32F4环境搭建、工程搭建与烧录
stm32·自举模式·集成开发环境(keil)搭建·工程创建·固件烧录
三佛科技-187366133972 小时前
LP2177B(输出电压可调3.3V/5V 400mA)兼容BP2525电源芯片方案
单片机·嵌入式硬件
llilian_1613 小时前
总线授时卡 CPCI总线授时卡的工作原理及应用场景介绍 CPCI总线校时卡
运维·单片机·其他·自动化
禾仔仔13 小时前
USB MSC从理论到实践(模拟U盘为例)——从零开始学习USB2.0协议(六)
嵌入式硬件·mcu·计算机外设