STM32的SPI采用DMA方式传输测试
文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明.
环境:
主机:WIN7
开发环境:MDK4.23
MCU:STM32F103CBT6
说明:
参考链接:http://www.openedv.com/posts/list/3159.htm
SPI传输数据分为连续传输和非连续传输.
连续传输时序图:
非连续传输时序图:
非连续传输模式可以参考上篇文章:http://blog.youkuaiyun.com/jdh99/article/details/7598573
官方pdf关于连续和非连续传输的说明:
当在主模式下发送数据时,如果软件足够快,能够在检测到每次TXE的上升沿(或TXE中断),并立即在正在进行的传输结束之前写入SPI_DR寄存器,则能够实现连续的通信;此时,在每个数据项的传输之间的SPI时钟保持连续,同时BSY位不会被清除。
简而言之,就是要及时监测TXE.在SPI在1M以上波特率传输时,传输一位时间为1us,导致软件不能及时判断,此时可以用dma的方式来进行SPI传输.
源代码:
配置:
#define buffersize 512#define SPI1_DR_Addr ( (u32)0x4001300C )extern uint8_t SPI1_TX_Buff[buffersize];extern uint8_t SPI1_RX_Buff[buffersize];
void