This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C SSI 接收DMA 接收完成中断 触发时机

麻烦请教大家一个关于SSI 接收DMA 接收中断 触发时机的问题

应用背景

使用TI TM4C1294 SSI DMA进行报文接受。

DMA 配置如下 :

ROM_uDMAChannelTransferSet(UDMA_CHANNEL_SSI0RX | UDMA_PRI_SELECT,
                                                             UDMA_MODE_BASIC,
                                                             (void *)(SSI0_BASE + SSI_O_DR),
                                                             g_ui8RxBuf, sizeof(g_ui8RxBuf));

HWREG(SSI0_BASE + SSI_O_IM) |= SSI_IM_DMATXIM | SSI_IM_DMARXIM;  //使能DMA接收发送完成终端

我的问题如下:

当对端有数据发给TM4C 的SPI接受,但发送的数据长度小于sizeof(g_ui8RxBuf),麻烦问一下在接受完对端发送

的数据后是否能产生DMA接受完成中断SSI_MIS_DMARXMIS?

如果可以,是不是意味着如果我使用了SSI DMA接受数据,那么只需要在SSI 的终端处理函数中 处理SSI_MIS_DMARXMIS

这个中断,就可以完成接受数据的任务?

多谢

  • 在使能μDMA操作后,SSI模块在接收FIFO或发送FIFO可以传输数据时向接收或发送通道产生μDMA请求。对于接收通道,只要接收 FIFO中有数据,就会发出
    单次传输请求。如果接收 FIFO 中的数据是 4 个或者更多,就会发出多个连续传输请求。对于发送通道,只要发送 FIFO 中存在一个空位,单次传输请求就会发出。如果发送 FIFO 中的空位有 4 个或者更多,就会发出多个连续传输请求。

    这是手册中说的。即使你FIFO中的数据不满,也会触发传输。但是不会满足DMA接收完成中断的。

  • 这是手册中说的。即使你FIFO中的数据不满,也会触发传输。但是不会满足DMA接收完成中断的。 


    您好,如果这时没有DMA的接受完成中断,那么我们怎么处理DMA已经接收的数据呢?

    谢谢

  • DMA接收到后你存到数组中,想怎么处理就怎么处理。