STM32学习————USART串口协议

通信接口

STM32学习————USART串口协议_第1张图片
通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
通信协议: 制定通信的规则,通信双方按照协议规则进行数据收发

串口通信介绍

TX(Transmit Exchange)是数据发送脚,RX(Receive Exchange)是数据接收脚

SPI通信

SCLK(Serial Clock)是时钟,MOSI(Master Ouput Slave Input) 是主机输出数据脚,发送;MISO(Master Input Slave Ouput ) 是主机输入数据脚,接收。CS(chip Select)是片选,用于指定通讯的对象

CAN通信

差分数据脚

USB通讯

DP(Data Positive) 和DM (Data Minus)
或者是D+ D-

全双工:一般全双工的通讯都有两根通讯线,比如串口,一根TX发送,一根RX接收,发送和接收互不影响。
半双工:都只有一根数据线
单工:只在设备到另一个设备,不能反着来
同步时钟线:接收方可以再时钟信号的指引下采样
异步时钟线:双方需要约定一个采样频率,并且要加上帧头帧尾等,进行采样位置的对齐
单端电平信号:引脚的高低电平都是对GND的电压差,所以单端信号通信的双方必须要共地
差分电平信号:一般不需要共地,可以极大地提高抗干扰特性
设备:单设备或者多设备

串口通信

STM32学习————USART串口协议_第2张图片

硬件电路

当外设没有VCC电源时,需要设备1接线到设备2接VCC。单工通讯时只要接TX到RX就行。

STM32学习————USART串口协议_第3张图片

需要注意的是需要设备之间电平相同的电平标准

STM32学习————USART串口协议_第4张图片

串口参数及时序

STM32学习————USART串口协议_第5张图片
数据位:奇,偶数校验的数据验证方法
无校验:不需要校验
奇校验:数据在发送中会判断1的个数,如果一开始有3个1,那么末尾会补0,接收方检验是否是奇数个1,如果不是那么数据传输出错
偶校验:数据在发送中会判断1的个数,如果一开始有3个1,那么末尾会补1,接收方检验是否是偶数个1,如果不是那么数据传输出错

如果需要读取的数据更加精确,那么CRC校验更加适合
值得注意的是:发送数据时,数据是从低位向高位发的,所以看时序时应该反过来看

STM32学习————USART串口协议_第6张图片

USART串口外设

USART简介

STM32学习————USART串口协议_第7张图片

STM32学习————USART串口协议_第8张图片

同样的当接收移位寄存器在转移的时候,也会有一个数据RENE,接收到接收寄存器非空后,RENE置1,就可以把数据读走了
这里发送和接收数据都是低位先行,一次接收一次发送正好接收到正确顺序数据

硬件流控

如果发送数据发送太快,接收数据来不及处理,就会出现数据丢弃或者覆盖现象

STM32学习————USART串口协议_第9张图片

STM32学习————USART串口协议_第10张图片

STM32学习————USART串口协议_第11张图片

USART基本结构

STM32学习————USART串口协议_第12张图片

但是在软件层面,只有一个DR寄存器供我们读写、

数据帧

STM32学习————USART串口协议_第13张图片

时钟的最后一位可以通过LBCL控制,要不要输出

STM32学习————USART串口协议_第14张图片

STM32学习————USART串口协议_第15张图片

STM32学习————USART串口协议_第16张图片

波特率发生器

STM32学习————USART串口协议_第17张图片

比如说要求波特率为9600,DIV = 72000000 / 9600 / 16  = 468.75
换算成2进制为 11101 0100.11

手册

P520

你可能感兴趣的:(stm32,学习,嵌入式硬件)