中止发送
3 Mar 2025
Read time: 1 minute(s)
如果发送缓冲器的消息由于优先级低而无法发送,将长时间阻塞缓冲器。为了避免这种情况,如果传输尚未开始,主机控制器可以通过分别置位 TPA 或 TSA 来撤回传输请求。
TPA 和 TSA 都使能一个中断标志 AIF。只有当 CANFD 控制器没有向 CAN 总线传输任何内容时,才会执行中止操作。
中止操作的执行会有以下情况:
- 如果节点丢失仲裁,将在仲裁之后执行中止操作。
- 在 CAN 节点未收到确认的不成功传输后,错误计数器会增加,并且将执行中止操作。
- 如果 STB 中至少还有一帧信息剩余,而主机已命令传输所有帧 (TSALL = 1),控制器则会向主机发出完成的帧信息和中止信号。
中止传输需要一些时间,具体取决于 CAN 帧信息通信速度和帧长度。执行中止,则会导致以下结果:
- TPA 释放 PTB 导致 TPE = 0。释放 PTB 后,帧数据仍保存在 PTB 中。
- TSA 释放 STB 的单个消息或所有消息。这取决于是使用 TSONE 还是 TSALL 来启动传输。TSSTAT 将相应更新。
注: 不建议同时置位 TPA 和 TSA。如同时置位 TPA 和 TSA,则 AIF 将被置位,PTB 和 STB
的传输都可能被中止,以下中断标志可能被置位:
- AIF(每次 PTB 和 STB 传输中止触发一次)
- TPIF + AIF
- TSIF + AIF
- TPIF + TSIF(很少见,只有当控制器没有立即处理 TPIF 时才会发生)
- TPIF + TSIF + AIF(很少见,只有当控制器不立即处理 TPIF 和 TSIF 时才会发生)