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

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

相关推荐
Miuney_MAX7 小时前
【单片机】之HC32F460中断向量选择
单片机·嵌入式硬件
XINVRY-FPGA10 小时前
XC3S1000-4FGG320I Xilinx AMD Spartan-3 SRAM-based FPGA
嵌入式硬件·机器学习·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
猫猫的小茶馆12 小时前
【ARM】ARM的介绍
c语言·开发语言·arm开发·stm32·单片机·嵌入式硬件·物联网
猫猫的小茶馆12 小时前
【PCB工艺】数模电及射频电路基础
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·pcb工艺
点灯小铭12 小时前
基于单片机的智能药物盒设计与实现
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
梓德原13 小时前
【基础】详细分析带隙型稳压电路的工作原理
单片机·嵌入式硬件·物联网
国科安芯14 小时前
航天医疗领域AS32S601芯片的性能分析与适配性探讨
大数据·网络·人工智能·单片机·嵌入式硬件·fpga开发·性能优化
小李做物联网15 小时前
【物联网毕业设计】60.1基于单片机物联网嵌入式项目程序开发之图像厨房监测系统
stm32·单片机·嵌入式硬件·物联网
贝塔实验室15 小时前
新手如何使用Altium Designer创建第一张原理图(三)
arm开发·单片机·嵌入式硬件·fpga开发·射频工程·基带工程·嵌入式实时数据库
@good_good_study16 小时前
STM32 ADC多通道采样实验
stm32·单片机·嵌入式硬件