多个SPI主机同时使用PDMA进行数据收发,数据传完后发现接收通道没有产生PDMA通道传完标志。
2023/06/01 16:58
分析:测试发现发生了SPI RX FIFO溢出错误。是因为SPI RX对应的PDMA通道的通道号比较大,优先级低于TX 通道。SPI接收到数据后PDMA来不及将数据搬走,产生SPI RX FIFO溢出,从而丢数据。PDMA搬运不到指定个数的数据,无法结束传输,也不会产生通道传完标志。
解决:将SPI的RX对应的PDMA通道设置为固定优先级,或者选择通道号较小的通道。