STM32 HAL库 UART 串口读写功能笔记

STM32 HAL库 UART 串口读写功能笔记
串行通讯
数据被(逐位按顺序传送)(一般是在同一根线上)
STM32 HAL库 UART 串口读写功能笔记_第1张图片
反之,数据各位在不同的线上(同时传输)的通讯方式称为并行通讯。

STM32 HAL库 UART 串口读写功能笔记_第2张图片

一、同步串口
STM32 HAL库 UART 串口读写功能笔记_第3张图片
二、异步串口(没有时钟线)
(图一)
STM32 HAL库 UART 串口读写功能笔记_第4张图片
(图二)

STM32 HAL库 UART 串口读写功能笔记_第5张图片
DATA输入为高电平时8050导通,振荡器开始震荡,形成的射频信号发送到天线上;
DATA输入为低电平时8050关闭。
(串口本质输出是高低电平)

但问题是信号只有一个DATA进来,没有时钟线,如何知道通讯开始?
即异步串口如何实现数据同步接发?(我通知你,现在开始通讯了)
STM32 HAL库 UART 串口读写功能笔记_第6张图片
我们要实现以下条件:

1、不通讯时,总线必须有个一确定的静态(输出高电平置1)
2、因为没有时钟线,通讯之前,收发双方必须有一个同步的过程:
即 如果是有一个从1到0的跳变,并且持续一段时间,这个位即为Start
3、由于收发双方没有时钟线了,但串行通信是逐位按顺序传送,那么收发双方必须事先知道,一个位在总线上传输的时间;
4、收发双方必须约定高低位在总线上传输的先后顺序;
5、因为收发双方的时钟总是存在误差,所以通讯不可能持续不断进行。

三、波特率
(图一)
STM32 HAL库 UART 串口读写功能笔记_第7张图片
(图二)
STM32 HAL库 UART 串口读写功能笔记_第8张图片

四、 帧结构与数据的传输
(图一)
STM32 HAL库 UART 串口读写功能笔记_第9张图片
STM32 HAL库 UART 串口读写功能笔记_第10张图片
1:地址帧含有9个Bit,用于区分帧内信息的性质(地址/数据)
2:一般单片机串口的硬件可以甄别出地址帧并产生标志
3:在串口组网(RS485)中,该功能比较有用)

(图二)
STM32 HAL库 UART 串口读写功能笔记_第11张图片
1:校验:是指在传输信息的同时传输一些与该信息密切相关的附加信息,以便接收方验证在传输中是否出现错误并加以纠正、控制。
2:启用奇偶校验后,每个帧也有9个Bit,多出的这个Bit就是“校验信息”。
3:校验的方法是填充校验位,使得该帧内含的“1”的个数为奇数个或偶数个
4:接收方事先设定了与发送方相同的校验方式,通过比对收到数据中“1”的个数来判断该帧是否出现了传输错误
5:奇偶校验只是一种非常简单的校验方法,并且只能检验出同一帧内奇数个位的错误。

五、数据与信息的关系
STM32 HAL库 UART 串口读写功能笔记_第12张图片
串口只管传输数据,每个帧只能传输1Byte(8Bit)的数据,如果信息编码超过8个Bit就分多次传输;如何传递接收数据由程序而定义。

六、串口调试技能
1):
串口助手可以帮助我们“看见”串口传输的数据(即每一个帧我收到了哪些数据)
STM32 HAL库 UART 串口读写功能笔记_第13张图片
UartInit();
while(1)
{
TxBuf = 0x55;
Delay_ms(10);
}

1:不要追求一步到位,第一步先以能发出数据为目标。
2:一个测试发送的伪代码,延时的时间应远大于数据帧的传输时间,以免发生数据混叠。

在调试数据接收
UartInit();
while(Flg_RxReady)
{
TxBuf = RxBuf;
Delay_ms(10);
}
1:(中断系统与中断完成标志位相互独立,即使中断系统有问题,中断标志位也会工作)
用Rx完成标志位来调试接收是很好的起点,可避免引入复杂的中断系统问题。

2:将收到的数据再通过串口发送出去,可以方便观察串口是否正确收到了数据信息。

2):
串口自环线调试方法

1:自环线是一种将自身串口TXD和RXD线直接相连,利用串口自身的收发功能进行调试

2:自环线调试可以快速判断串口硬件(包括外部转换器件电路)是否存在问题

3:使用自环线调试的前提是该串口支持双工模式

你可能感兴趣的:(STM32)