上传者: 62434750
|
上传时间: 2025-12-18 19:02:52
|
文件大小: 546KB
|
文件类型: PDF
Tx Handling 是 M_CAN 发送链路中枢,协调专用 Tx Buffer、Tx FIFO、Tx Queue 与 CAN Core 的数据流,确保消息按优先级传输,平衡 CPU 配置与总线速率,支持 Classic CAN/CAN FD
M_CAN 发送链路的中枢,即 Tx Handling(发送处理),是负责协调专用 Tx Buffer、Tx FIFO 和 Tx Queue 与 CAN Core 之间数据流的核心组件。它的主要任务是确保 CAN 总线上的消息可以按照既定的优先级被无冲突地传输,同时平衡 Host CPU 的消息配置速度和 CAN 总线的实际传输速率。
M_CAN 支持灵活的消息传输模式,包括 Classic CAN 和 CAN FD(Flexible Data-rate)。其中,专用 Tx Buffer 数量最多支持32个,它们可以通过 TXBC 寄存器配置为 Tx FIFO 或 Tx Queue 元素。每个 Tx Buffer 的传输模式可以独立配置为 Classic CAN 或 CAN FD,这由 CCCR 寄存器的全局配置和 Tx Buffer 元素的局部配置共同决定。
在 Classic CAN 模式下,若 CCCR 配置 BRSE=任意,FDOE=0,则所有消息强制按 Classic CAN 传输。若需要启用 CAN FD 模式,必须满足 CCCR 寄存器中 FDOE=1 的条件。而在 CAN FD 模式下,如果需要比特率切换,还需要满足 CCCR 中 BRSE=1 和 Tx Buffer 中的 FDF=1 以及 BRS=1 的条件。这表示 CAN FD 传输可以是有比特率切换的,也可以是没有比特率切换的,而这一点是由相应的寄存器位决定的。
在 Tx Handler 的管理下,Host 通过 TXBAR 发起传输请求,或通过 TXBCR 发起取消请求,控制消息的传输。消息传输后,相关信息会存入 Tx Event FIFO,供 Host 查询传输状态。Tx 扫描是 Tx Handler 实现消息按优先级传输的核心机制,它在 TXBRP 寄存器更新时启动。通过遍历所有置位的 TXBRP 寄存器位,读取对应的 Tx Buffer 消息 ID,找出 ID 最小的 Tx Buffer,并标记为最高优先级待传输请求。这样做的目的是加快后续传输。消息的传输是由 CAN Core 实现的。
M_CAN 的传输优先级由消息 ID 的大小决定,ID 越小优先级越高,这符合 CAN 协议的仲裁规则。在传输过程中, Tx 扫描和临时缓冲区预加载机制确保传输效率。Host 时钟频率、 Tx Buffer 数量和共享 Message RAM 的 M_CAN 数量决定了 Tx 扫描所需的时间。在当前传输或接收结束前完成临时缓冲区预加载,以减少延迟并快速启动预加载消息的传输。
M_CAN 的 Tx Handling 在设计上考虑了优先级反转的风险,即在 Tx 扫描加上临时缓冲区预加载的过程中可能出现的优先级问题。确保了消息能够按照既定优先级无冲突地传输,同时平衡了 CPU 的配置速度和 CAN 总线的传输速率。通过精心设计的机制和硬件资源配置,M_CAN 能够支持 Classic CAN 和 CAN FD 两种灵活的传输模式,以满足各种 CAN 应用场景的需求。