SD卡操作分为SPI模式与SDIO模式,这里选择SPI模式,DSP为SPI主机,SD卡为从机,本文对SD卡SPI通信进行说明,关于SPI双机通信后续有时间也会特别写篇文章进行说明

SPI---串行外设接口,

优点:通信简单,支持全双工通信,数据传输速率快

缺点:没有指定的控制流,完全以时钟携带数据进行通信,没有应答机制,相对来说通信数据的可靠性上有一定缺陷(相对I2C总线协议)

特点:高速,同步,全双工,非差分,总线方式,主从机方式通信

通信时序:

主从方式通信,接线分为4根或3根(使用较少,用于单向传输)

简要概括:主机首先进行片选,选中从机,同时产生通讯时钟,每到来一个时钟周期,按照配置的SPI通信模式,主机移出一位数据发送到从机,同时从机发送一位数据到主机,完成一位数据交换,重复多次,即可完成一个字节数据,若此次传输完成,取消片选。(类似说明文件很多,此处仅作简要说明)

接线:SPISIMO        主收从发        

           SPISOMI        主发从收

           SPICLK           时钟线(主设备产生)

           SPICS             片选(主设备控制,一主多从时可控制选择从机)

配置步骤(使用SPIFIFO---16级FIFO,若不需要可舍去该部分配置):

  1. 使spi保持复位模式,SPISWRESET=0;
  2. 配置该机主从模式
  3. 配置时钟相位 (0=without delay,1=with delay)
  4. 使能传输通道
  5. 配置时钟极性(0=rising,1=failing)(注:时钟相位与时钟极性共同确定数据传输模式)
  6. 选择单个传输的数据位数
  7. 配置spi波特率
  8. 清除overrun_flag及int_flag
  9. 使能spi 的FIFO模式
  10. 使能 接收及发送FIFO的级数
  11. 使能 接收及发送FIFO的中断
  12. 复位接收及发送FIFO寄存器
  13. 复位spi(spirst) (此步骤位置可移动,但不建议改变)
  14. 完成SPI配置 ,SPISWRESET=1;

注:时钟极性CPOL及时钟相位CPHA说明----决定通信模式:        

上图为28377D芯片手册上对于SPI时钟相位及极性的说明,分为4种模式:

SPI在SPICLK的下降沿传输数据,在SPICLK的上升沿接收数据。

SPI在SPICLK信号下降沿前半个周期发送数据,在SPICLK信号下降沿接收数据。

SPI在SPICLK信号的上升沿传输数据,在SPICLK信号的下降沿接收数据。

SPI在SPICLK信号上升沿前半周传输数据,在SPICLK信号上升沿接收数据。

下图为4种模式传输数据图解:

极性与相位配置最好主从机保持一致,避免出现问题(测试过不一致的情况,数据也能正常传输)

由于SPI的主从机制,从机无法主动发送数据之主机,可选择主从机间进行连线,触发外部中断形式来使主机启动通信。

以上为SD卡spi模式之SPI配置。

更多推荐