现象:
1.中断已接入ARM,且正确初始化。
2.DMA寄存器正常读取,且工作正常。
可能原因有两个:
一、FIFO的输出端口未使能t_keep信号,而DMA写入端口有该信号。该信号作用是标明单次进入DMA的数据每个字节是否有效,因此传输时要拉高此信号。
https://www.freesion.com/article/74801352263/
二、假设ARM端配置的DMA传输长度(BYTE)为N,DMA IP核在启动传输以后在等待N个BYTE传输结束的时间后,在AXI_Stream接口上依然未等待到t_last信号,因此DMA IP核会进入报错状态,可以通过DMA的寄存器读取到该状态。当DMA的传输长度(从t_valid到t_last)为M时,就将N配置为大于等于M,当DMA传输到M时,遇到t_last会自动停止,并且可以通过读取寄存器获取到已传输的长度M。