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

使用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个回答
七哥 回答时间: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

查看全部评分

Kevin_G 回答时间: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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版