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

使用STM32F10X捕获SENT(单边沿半字节)信号的疑惑

[复制链接]
haganh 提问时间:2019-4-18 23:55 /

单帧完整的SENT信号

单帧完整的SENT信号

像上图这样的是一个完整帧的SENT信号。
我使用STM32F103C8的TIM2捕获信号的下降沿,根据定时器取得时钟握手之后开始记录帧内各段的时长,捕获到完整帧之后转入CRC校验。
根据SENT协议规范可知,最短的两次中断之间是12个Ticks,每个Tick是3us,也就是最小的两次中断之间时长差不多只有36us

虽然STM32能正确的解码,但是很不稳定。
MCU会死机,有时候开机就死,有时候能坚持持续工作十几个小时以上。

所以呢,我希望中断不要发生得那么频繁,比如每次10次下降沿触发一次中断,是否可能?
盼望大神相助。


收藏 评论8 发布时间:2019-4-18 23:55

举报

8个回答
toofree 回答时间:2019-4-19 09:30:50
“每次10次下降沿触发一次中断”,这个真的做不到。
程序死机得看是程序问题,还是硬件问题。程序不要有死循环,可以用状态机,并带超时退出机制。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

Dylan疾风闪电 回答时间:2019-4-19 11:43:57
思路:TIM捕获边沿->触发DMA操作->DMA 10次传输完成->触发DMA中断,以此来实现需求。
应该可以实现,具体的你可以创建一个工程测试一下。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

Kevin201707 回答时间:2019-4-20 21:00:11
楼上正解,不过要查查死机的原因,这个时间MCU还是能够处理过来的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

haganh 回答时间:2019-4-20 22:03:24
Dylan疾风闪电 发表于 2019-4-19 11:43
思路:TIM捕获边沿->触发DMA操作->DMA 10次传输完成->触发DMA中断,以此来实现需求。
应该可以实现,具体的 ...

楼上正解。多谢多谢。
haganh 回答时间:2019-4-20 22:03:58
Kevin201707 发表于 2019-4-20 21:00
楼上正解,不过要查查死机的原因,这个时间MCU还是能够处理过来的。

查到问题了,CRC校验指针跑飞了。哈~尴尬
zxcv1ddd 回答时间:2019-4-21 00:38:24
谢谢分享
suoma 回答时间:2019-7-28 20:29:37
我也在做这个sent通信,可以分享代码参考下吗?
春夜喜小雨 回答时间:2020-11-7 15:45:15
还有人么

所属标签

相似问题

官网相关资源

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