【语音平台开发进程】:SPI的CS管脚配置
SPI接口是由摩托罗拉公司提出的一种全双工同步通信协议,较其它的通信协议SPI的通信速率相对较高,一般均可达到2M b/s的速率,正是由于SPI的这些特点,使得SPI在一些较高速数据传输的场合,如:音频传输接口、SD卡读写接口、ROM读写接口等。在本次开发用的SAKURA开发板其本身就提供了Micro-SD卡,同时其在该板上又是采用SPI读写格式的,因此,Micro-SD卡在板级设计时就分配了SPI的其中的一个CS管脚给Micro-SD卡使用,所以在使用SPI的CS时候一定要考虑到这一点。为此,我们查找了《SAKURA开发板硬件原理图》,在其中找到了SD-Card所使用的CS管脚(SPICS1管脚),对于与Arduino兼容的SPI来说,共提供了4个CS管脚,分别为:CS0、CS1、CS2、CS3。具体分配情况如下图所示:
由于本次设计(SAKURA语音平台)需要用SD-Card来存放音乐文件,所以CS1引脚不能用作它用,因此,本次设计拟采用CS0来控制VS1053B的XCS引脚,实现对VS1053B控制命令的传输,拟采用CS2来控制VS1053B的XDCS引脚,实现对VS1053B音频数据的传输,另外,还有CS3未使用,以留作功能扩展备用。
至于,如何用同一个SPI分别对Micro-SD卡、VS1053B的XCS、VS1053B的XDCS进行控制和数据传输?SAKURA开发板的Web编译器也给出了特定的控制命令:
SPI.port=SPI_PORT_CS0_DUINO; //此时,SPI选用CS0为其临时CS信号来控制XCS;
SPI.port= SPI_PORT_RAXINO_SDMMC; //此时,SPI选用CS1为其临时CS信号来控制Micro-SD;
SPI.port= SPI_PORT_CS2_MARY2; //此时,SPI选用CS2为其临时CS信号来控制XDCS;
当需要使用SPI对不同的模块(XCS、Micro-SD、XDCS)进行控制和数据传输时,只需在使用前,先将SPI.port如上指令所示,分别赋予相应的值,然后再使用就可以了,至于数据传输的transfer();无需更改即可直接使用,用起来十分方便。