打印
[技术问答]

华大HC32F4A0系列MCU通用同步异步收发器的UART不定长数据接收

[复制链接]
1138|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1、摘要
在通信中,用户经常会处理不定长的数据包。发送数据时,只需要根据指定长度发送数据包,处理相对简单,而接收数据时则需要检查数据包的结束。
本篇应用笔记主要介绍HC32F4A0系列通用同步异步收发器(Universal Synchronous Asynchronous Receiver Transmitter,USART)的UART模式,结合定时器Timer0,实现接收不定长数据。

2、UART 简介
HC32F4A0 系列 MCU 搭载通用串行收发器模块(USART)10 个单元。全通道支持通用异步串行通信接口 (Universal Asynchronous Receiver Transmitter,UART)。UART(USART_1,USART_2,USART_6,USART_7)和 Timer0 模块配合支持 UART 接收 TIMEOUT 功能。
2.1 UART 主要特性
●数据长度可编程:8 位/9 位
●校验功能可配置:奇校验/偶校验/无校验
●停止位可配置:1 位/2 位
●时钟源可选:内部时钟源(内部波特率生成器生成的时钟)/外部时钟源(USARTn_CK 管脚输入的时钟)
●接收错误:校验错误,帧错误,上溢错误
●支持多个处理器间通信
●内置数字滤波器
●支持接收数据超时功能
●单元 1 支持停止模式唤醒功能

3、UART 接收超时功能
UART 接收数据停止位被检测时 TIMEOUT 计数器启动,经过设定的 TIMEOUT 时间(设定单位为接收位数)后未检测到下一帧接收数据时,发生 TIMEOUT,如果此时 CR1.RE=1,则TIMEOUT 状态位 USARTn_SR.RTOF 置位,如果此时 USARTn_CR1.RE=0,则等待USARTn_CR1.RE=1 后 TIMEOUT 状态位 USARTn_SR.RTOF 置位。
TIMEOUT 计数器采用 Timer0 模块的计数器,具体对应关系如下:
USART1:Timer0 Unit1 A 通道
USART2:Timer0 Unit1 B 通道
USART5:Timer0 Unit2 A 通道
USART6:Timer0 Unit2 B 通道
TIMEOUT 功能 Timer0 比较计数器值设定:
Timer0 为 16 位计数器,计数时钟最大可以选择 1024 分频,TMR0_CMPA<B>R 值设定计算公式如下:

CMPA<B>R: TMR0_CMPA<B>R 寄存器值
RTB: Receive Timeout Bits
CKDIRA<B>: TMR0.BCONR.CKDIVA<B>位寄存器值

4、UART 不定长数据接收
4.1 UART 接收不为空和超时标志设置时序
UART 接收数据停止位被检测时超时计数器启动,经过设定的超时接收位数后未检测到下一帧接收数据时,将置位接收超时标志 RTOF。


4.2 工作流程
4.2.1 定时器 Timer0 配置
样例代码中 Timer0 操作流程如下图所示:

使用特权

评论回复
沙发
jonas222| | 2022-12-1 17:19 | 只看该作者
定时器判断数据首发完成最简单了。

使用特权

评论回复
板凳
mnynt121| | 2022-12-1 20:53 | 只看该作者
这个是不是可以通过串口闲置中断呢?

使用特权

评论回复
地板
jonas222| | 2022-12-1 21:45 | 只看该作者
一帧数据可以使用头尾进行判断的。

使用特权

评论回复
5
tpgf| | 2022-12-8 14:22 | 只看该作者
不定长的数据是如何确定接收完成了呢

使用特权

评论回复
6
八层楼| | 2022-12-8 15:10 | 只看该作者
数据接受完成的时候接收数据寄存器会有标志位置位的

使用特权

评论回复
7
guanjiaer| | 2022-12-8 15:27 | 只看该作者
jonas222 发表于 2022-12-1 17:19
定时器判断数据首发完成最简单了。

如何用定时器怎么判定首发完成了  根据波特率计算?

使用特权

评论回复
8
观海| | 2022-12-8 15:39 | 只看该作者
可以在主函数中通过轮询来读取这个硬件触发事件吗

使用特权

评论回复
9
heimaojingzhang| | 2022-12-8 15:50 | 只看该作者
数据不定长的话 超时时间怎么规定呢

使用特权

评论回复
10
keaibukelian| | 2022-12-8 16:02 | 只看该作者
jonas222 发表于 2022-12-1 17:19
定时器判断数据首发完成最简单了。

为什么经过定时器判定是最简单的呢  

使用特权

评论回复
11
jinyiheng| | 2022-12-15 23:14 | 只看该作者
为什么我手册里是这样的【图片】

1.png (329.38 KB )

1.png

使用特权

评论回复
12
李旭昂| | 2024-3-7 13:18 | 只看该作者
在使用串口超时中断时遇到了些问题,可以和您沟通一下嘛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

45

帖子

0

粉丝