麻烦请教大家一个关于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
这个中断,就可以完成接受数据的任务?
多谢
xyz549040622:
在使能μDMA操作后,SSI模块在接收FIFO或发送FIFO可以传输数据时向接收或发送通道产生μDMA请求。对于接收通道,只要接收 FIFO中有数据,就会发出单次传输请求。如果接收 FIFO 中的数据是 4 个或者更多,就会发出多个连续传输请求。对于发送通道,只要发送 FIFO 中存在一个空位,单次传输请求就会发出。如果发送 FIFO 中的空位有 4 个或者更多,就会发出多个连续传输请求。
这是手册中说的。即使你FIFO中的数据不满,也会触发传输。但是不会满足DMA接收完成中断的。
yihui sun:
回复 xyz549040622:
这是手册中说的。即使你FIFO中的数据不满,也会触发传输。但是不会满足DMA接收完成中断的。
您好,如果这时没有DMA的接受完成中断,那么我们怎么处理DMA已经接收的数据呢?
谢谢
xyz549040622:
回复 yihui sun:
DMA接收到后你存到数组中,想怎么处理就怎么处理。