SD卡操作分为SPI模式与SDIO模式,这里选择SPI模式,DSP为SPI主机,SD卡为从机,本文对SD卡SPI通信进行说明,关于SPI双机通信后续有时间也会特别写篇文章进行说明
SPI---串行外设接口,
优点:通信简单,支持全双工通信,数据传输速率快
缺点:没有指定的控制流,完全以时钟携带数据进行通信,没有应答机制,相对来说通信数据的可靠性上有一定缺陷(相对I2C总线协议)
特点:高速,同步,全双工,非差分,总线方式,主从机方式通信
通信时序:
主从方式通信,接线分为4根或3根(使用较少,用于单向传输)
简要概括:主机首先进行片选,选中从机,同时产生通讯时钟,每到来一个时钟周期,按照配置的SPI通信模式,主机移出一位数据发送到从机,同时从机发送一位数据到主机,完成一位数据交换,重复多次,即可完成一个字节数据,若此次传输完成,取消片选。(类似说明文件很多,此处仅作简要说明)
接线:SPISIMO 主收从发
SPISOMI 主发从收
SPICLK 时钟线(主设备产生)
SPICS 片选(主设备控制,一主多从时可控制选择从机)
配置步骤(使用SPIFIFO---16级FIFO,若不需要可舍去该部分配置):
- 使spi保持复位模式,SPISWRESET=0;
- 配置该机主从模式
- 配置时钟相位 (0=without delay,1=with delay)
- 使能传输通道
- 配置时钟极性(0=rising,1=failing)(注:时钟相位与时钟极性共同确定数据传输模式)
- 选择单个传输的数据位数
- 配置spi波特率
- 清除overrun_flag及int_flag
- 使能spi 的FIFO模式
- 使能 接收及发送FIFO的级数
- 使能 接收及发送FIFO的中断
- 复位接收及发送FIFO寄存器
- 复位spi(spirst) (此步骤位置可移动,但不建议改变)
- 完成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配置。