Questions:SPI 本身可以正常读取外部 SPI FLASH,当 SPI 开启 DMA 后发现不能正常读取到FLASH 内部的数据
Answer:
在 DMA 读数据请求挂起的时候,软件去读取数据寄存器(SPI_DT)不会清除 DMA 读请求,为了回避这一情况,SPI 开启 DMA 读取 FLASH 的时候,建议代码顺序如下:
1. 软件使能 SPI 的 DMA 读写请求
2. 使用 SPI 全双工模式发送数据
3. 传输完毕后关闭 DMA 发送通道
4. 清除 ROERR 标志(通过先读寄存器 SPI_STS 再读寄存器 SPI_DT 来清除)
|