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

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

相关推荐
hazy1k10 小时前
51单片机基础-GPIO结构详解
stm32·单片机·嵌入式硬件·51单片机
集和诚JHCTECH11 小时前
专为严苛环境而生:高防护等级工业防水平板WPPC-H1520T(P)
人工智能·嵌入式硬件·平板
m0_7482480211 小时前
C++与C#布尔类型深度解析:从语言设计到跨平台互操作
c++·stm32·c#
云山工作室11 小时前
基于协同过滤算法的话剧购票系统(论文+源码)
单片机·物联网·毕业设计·课程设计·毕设
辰哥单片机设计12 小时前
STM32项目分享:智能水产养殖系统
stm32·单片机·嵌入式硬件
一枝小雨12 小时前
【OTA专题】2 初级bootloader架构和基础工程移植
stm32·单片机·嵌入式·ota·bootloader·固件升级·加密升级
BreezeJuvenile19 小时前
外设模块学习(15)——MQ-2烟雾气体传感器(STM32)
stm32·单片机·学习·mq-2·烟雾气体传感器
Jie_jiejiayou1 天前
定时器详解以及呼吸灯实现 — STM32(HAL库)
stm32·单片机·嵌入式硬件·定时器
逆小舟1 天前
【STM32】定时器、PWM
stm32·单片机·嵌入式硬件
XH1.1 天前
学习RT-thread(RT-thread定时器)
stm32·单片机·学习