Edit online

功能描述

3 Mar 2025
Read time: 1 minute(s)

发送数据

作为发送者时,TX_FIFO_FULL_EN 配置为 1,当 FIFO 达到 TX_FIFO_LEVEL 配置的水位,则 FULL 状态触发,产生 FIFO 为满中断信号,则停止进行写操作。每次写操作为一个 32bit message。TX_FIFO 为满,若进行写操作则会数据上溢出造成数据丢失。上溢出时数据覆盖或禁止写入可由 CTL 进行配置选择。

假设单次发送有 N 个 messages,当 N=1 时,只需要往 WCOMP 寄存器写 message 即可完成发送并且产生中断。当 N>1 时,需要往 WMSG 寄存器写 N-1 个 messages,往 WCOMP 寄存器写进最后一个 message 完成发送并且产生中断。

CPUa 作为发送方时 CPUa 发送数据 示意图如下


mbox_function_atx

1. CPUa 发送数据

CPUb 作为发送方时 CPUb 发送数据 示意图如下


mbox_function_btx

2. CPUb 发送数据

接收数据

作为接收者时,RX_FIFO_FULL_EN 配置为 1,当 FIFO 达到 RX_FIFO_LEVEL 配置的水位,则 FULL 状态触发,产生 FIFO 为满中断信号,可进行读操作。每次读操作为一个 32bit message。RX_FIFO 为空,若继续进行读操作则造成下溢出,数据发生错误。

假设单次接收有 N 个 messages,当 N=1 时,只需要往 RCOMP 寄存器读 message 即可完成接收并且产生中断。当 N>1 时,需要往 RMSG 寄存器读 N-1 个 messages,读取 RCOMP 寄存器获得最后一个 message 完成接收并且产生中断。

CPUa 作为接收方时 CPUa 接收数据 示意图如下


mbox_function_arx

3. CPUa 接收数据

CPUb 作为接收方时 CPUb 接收数据示意图如下


mbox_function_brx

4. CPUb 接收数据

Debug 模式

配置为 debug 模式,则单个 CPU 核可以完成发送与接收数据。

CPUa Debug 模式数据路径: CPUa–FIFO(a to b)—FIFO(b to a)–CPUa

CPUb Debug 模式数据路径: CPUb–FIFO(b to a)—FIFO(a to b)–CPUb