CAN0_ORed_0_15_MB_IRQHandler 开始可以进中断,运行一段时间后无法进入中断
-
我在调试 autosar 过程中,发现发送端发送如下帧数据,

接收中断只能进入两次,后面再发送数据也无法进入 CAN0_ORed_0_15_MB_IRQHandler 接收中断了,看了下相关寄存器如下:(gdb) x/3x 0x400d0030 0x400d0030: 0x00000000 0x00100000 0x00006000 (gdb) x/3x 0x400d001c 0x400d001c: 0x00000000 0x00040080 0x00000000全局中断是开的,
是因为

是因为这两个位置1导致的么?
或者还有什么可能的原因?
-
只能触发两次中断看起来像是邮箱没有解锁:

对比一下你的代码有没有类似的操作
-
jiankang_wang
感谢,在中断处理函数中添加了读取 TIMER 寄存器,目前通信正常了。 -
信息太少了。
总线负载率是什么样的情况?
发送报文前,有没有检查邮箱状态?
丢CAN报文,指的是总线上没有对应报文,还是对应的中断没有被调用? -
jiankang_wang 发送报文前,走的是 can-isotp 上位机发送,问题主要是出现在设备端接收侧,丢CAN报文,指的是总线上没有对应报文(有报文,使用 candump 监控的),初步看是对应的中断没有被调用
-
你的意思是你用的上位机发送,然后MCU接收,上位机发送成功了,但是MCU没有触发接接收的逻辑?
如果是这样的话,中断优先级应该只会影响消息到达的时机,不会导致丢帧,除非你的高优先级中断一直处于active。
感觉还是你处理逻辑的问题,可以先看看你的邮箱ram区域,有没有收到数据,对应的CS状态字是什么。
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...