在使用EDMA3进行SPI通信时会出现开启spi的rx传输后会出现接收buffer多出未知的三个字节数据。当前我是这样配置的:
1.SPI为slave模式 cs=2
2.spi使用的edma3通道为EDMA3_CHA_SPI0_TX, EDMA3_CHA_SPI0_RX用于发送和接收
3.初始化EDMA3的过程是: 设置传输完成中断和错误中断=》请求DMA通道=》设置中断回调函数=》开启RX的DMA(不开TXDMA)
4.中断处理函数中刚开始能正常接收数据,后来在接收到特定数据后我使用EDMA3DisableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_SPI0_RX, EDMA3_TRIG_MODE_EVENT) 把rx关闭,同时用EDMA3EnableTransfer开启TX 的DMA传输。待数据全部发送完成后在tx的完成中断中使用EDMA3DisableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_SPI0_TX, EDMA3_TRIG_MODE_EVENT)关闭TX,然后再EDMA3EnableTransfer开启RX。这时会出现一个奇怪的问题,当再次发生rx的DMA完成中断时接收buffer的的前三个字节数据并不是master发送过来的。
请教一下我这样使用EDMA3有什么问题吗?为什么会多出几个字节,我已经用示波器测量过这三个字节确实不是master发送出来的。