Tx处理
Tx处理程序处理专用Tx缓冲区、TxFIFO和Tx队列的传输请求控制传输消息到CAN核心、放置和获取索引以及Tx事件FIFO的传输。最多可以为消息传输设置32个Tx缓冲区。可以为每个Tx缓冲区元素单独配置传输CAN模式(经典CAN或CANFD)。
Tx事件处理
M_CAN的Tx Event FIFO是一个关键组件,它在CAN总线上成功发送消息后,会将该消息的ID和时间戳存储到发送事件先入先出队列中。这种设计将消息的发送处理与发送状态信息的处理分离开来,提高了效率:发送缓冲区负责存储待发送的消息,而发送状态信息则单独保存在Tx Event FIFO中。每当一个消息从Tx Buffer发送出去后,其消息标记会复制到Tx Event FIFO的一个元素中,以此关联发送事件和FIFO元素。用户可以配置最多32个元素的Tx Event FIFO,每个元素的详细描述可以参考手册的第40.4.6.4节。
这种动态管理发送队列的方式具有显著优势:一旦Tx Buffer中的消息发送成功,它就可以立即被用来存储新的消息,无需等待发送状态信息被保存后才能覆写。但是,这也需要妥善管理Tx Event FIFO以避免溢出。当Tx Event FIFO满时,会设置中断标志IRi (i=0-3).TEFF,此时不会再有新元素写入,直到至少有一个元素被读取并且递增了获取索引。为了防止溢出,还可以设置Tx Event FIFO水位线:当填充水平达到TXEFCi (i=0-3).EFWM所配置的水位线时,将会设置中断标志IRi.TEFW。读取Tx Event FIFO时,需要将两倍的获取索引(TXEFSi (i=0-3).EFGI)加到起始地址(TXEFCi (i=0-3).EFSA)上&#x