关于STC的SPI以前测试过。普通模式发送一字节,到下一个字节需要等待很长时间。
SPI DMA模式开启FIFO。CLK间隔时间更短,最短1.5T ,就是1.5个SPI时钟节拍。
- void DMA_Config(void)
- {
- DMA_SPI_STA = 0x00;
- DMA_SPI_CFG = 0xE0; //bit7 1:Enable Interrupt
- DMA_SPI_AMT = 0xff; //设置传输总字节数:n+1
-
- DMA_SPI_TXAH = (u8)((u16)&DmaTxBuffer >> 8); //SPI发送数据存储地址
- DMA_SPI_TXAL = (u8)((u16)&DmaTxBuffer);
- DMA_SPI_RXAH = (u8)((u16)&DmaRxBuffer >> 8); //SPI接收数据存储地址
- DMA_SPI_RXAL = (u8)((u16)&DmaRxBuffer);
-
- DMA_SPI_CFG2 = 0x01; //01:P2.2
- DMA_SPI_CR = 0x80; //bit7 1:使能 SPI_DMA, bit6 1:开始 SPI_DMA 主机模式, bit0 1:清除 SPI_DMA FIFO
-
- HSSPI_CFG = 0x00; //高速模式时SS 控制信号的HOLD 和SETUP 时间设置0,CLK最小间隔1.5T
- HSSPI_CFG2 = 0x00; //高速模式时SS 控制信号的DEACTIVE 时间设置0,CLK最小间隔1.5T
- HSSPI_CFG2 |= 1<<5; //使能SPI高速模式
-
- }
复制代码
|