haganh 发表于 2019-4-18 23:55:29

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


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

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

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


toofree 发表于 2019-4-19 09:30:50

“每次10次下降沿触发一次中断”,这个真的做不到。
程序死机得看是程序问题,还是硬件问题。程序不要有死循环,可以用状态机,并带超时退出机制。

Dylan疾风闪电 发表于 2019-4-19 11:43:57

思路:TIM捕获边沿->触发DMA操作->DMA 10次传输完成->触发DMA中断,以此来实现需求。
应该可以实现,具体的你可以创建一个工程测试一下。:)

Kevin201707 发表于 2019-4-20 21:00:11

楼上正解,不过要查查死机的原因,这个时间MCU还是能够处理过来的。

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

还有人么
页: [1]
查看完整版本: 使用STM32F10X捕获SENT(单边沿半字节)信号的疑惑