你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】串口断帧检测

[复制链接]
STMCU小助手 发布时间:2022-2-19 18:23
问题:
在某些串行工业总线协议中,如 Profibus,每帧发送的数据长度不定,导致接收方在接收数据时无法确定帧的结束点。
调研:
STM32 系列产品的定时器具有 slave reset 模式。利用该功能可以捕获总线上的设定长度的空闲位。


结论:
本例程在 STM3220G-EVAL 上实现了 USART 空闲帧的检测,空闲帧的长度可配置。在 Profibus 协议中,空闲帧长度为 33 位。检测到空闲帧后,接收方认为该帧结束,停止 DMA 接收数据。

处理:
该例程可在 STM3220G-EVAL 上运行。使用 USART6 的 DMA 方式收发数据,使用 TIM9 的 Slave Reset 模式: TIM9_CH1 用于捕获串口的接收数据波形,并在下降沿将 TIM9 的计数器清零;TIM9_CH2 用于输出比较,监测是否收到连续 33 位的高电平,即空闲帧;PG8 用于输出空闲帧信号,每次检测到空闲帧时信号点平翻转。

T)`5WJE@4P`9@0M~Y`9E7%C.png

示波器波形图:

CQF46}8DZ]QLNAH})W7RUAN.png

建议:
本例程的缺陷:如果帧中最后的一个数据为 0xFF 时,将会被做为空闲帧的一部分处理。但是在Profibus 协议中,最后一个数据可自行定义。
在本例程的基础上,也可实现 SPI 等其它串行协议的断帧处理。

收藏 评论0 发布时间:2022-2-19 18:23

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版