打印
[应用相关]

STM32 串口断帧检测

[复制链接]
669|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢动作|  楼主 | 2021-2-28 23:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在某些串行工业总线协议中,如 Profibus,每帧发送的数据长度不定,导致接收方在接收数据时无法确定帧的结束点。

使用特权

评论回复
沙发
慢动作|  楼主 | 2021-2-28 23:46 | 只看该作者
调研:

STM32 系列产品的定时器具有 slave reset 模式。利用该功能可以捕获总线上的设定长度的空闲位。

使用特权

评论回复
板凳
慢动作|  楼主 | 2021-2-28 23:46 | 只看该作者
结论:
本例程在 STM3220G-EVAL 上实现了 USART 空闲帧的检测,空闲帧的长度可配置。在 Profibus 协议中,空闲帧长度为 33 位。检测到空闲帧后,接收方认为该帧结束,停止 DMA 接收数据。

使用特权

评论回复
地板
慢动作|  楼主 | 2021-2-28 23:48 | 只看该作者
处理:
该例程可在 STM3220G-EVAL 上运行。使用 USART6 的 DMA 方式收发数据,使用 tiM9 的 SlaveReset 模式: TIM9_CH1 用于捕获串口的接收数据波形,并在下降沿将 TIM9 的计数器清零;TIM9_CH2 用于输出比较,监测是否收到连续 33 位的高电平,即空闲帧;PG8 用于输出空闲帧信号,每次检测到空闲帧时信号点平翻转。

使用特权

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

本版积分规则

63

主题

695

帖子

0

粉丝