SPI接口是4线串口,可以连接SPIFLASH,SPI接口的AD,DA等等。ADSP-BF53x的SPI接口支持主机模式和从机模式,它有7个SPI从机片选,在主机模式下,它同时可以挂载7个SPI设备,还可以在主机模式或从机模式下进行BOOT启动。
SPI管脚定义:
管脚定义 | 功能 |
MOSI | 主输入从输出接口,根据主机和设备模式确定功能 |
MISO | 从输入主输出接口,根据主机和设备模式确定功能 |
SCK | SPI时钟 |
SPISELx | SPI设备选则接口 |
SPISS | SPI从机片选接口 |
SPI接口时钟最快可以到系统时钟的1/4,其配置公式为:
SCK Frequency = (Peripheral clock frequency SCLK)/(2 x SPI_BAUD)
*pSPI_BAUD=2; //配置速率为1/4系统时钟 SPI速率 = SCLK/2*SPI_BAUD
*pSPI_FLG |=FLS2; //选择SPISEL2接口
*pSPI_CTL = 0x1001|CPHA| CPOL; //配置模式为手动片选模式
*pSPI_CTL = (*pSPI_CTL | SPE); //使能SPI接口
*pSPI_FLG &= ~FLG2; //将SPISEL2拉到0
while(!(*pSPI_STAT & SPIF)); //查看SPI传输状态是否完成
*pSPI_TDBR = 0x55; //将数据送入SPI传输数据寄存器
*pSPI_FLG |= FLG2; //将SPISEL2拉到1,完成数据传输
*pSPI_FLG &= ~FLG2; //将SPISEL2拉到0
while(*pSPI_STAT & RXS)//查看SPI传输状态是否有数据需要接收
i = *pSPI_RDBR; //读取数据
*pSPI_FLG |= FLG2; //将SPISEL2拉到1,完成数据传输
ADSP-BF53x的SPI接口支持手动片选和自动片选两种模式,通过SPI_CTL寄存器的CPHA和CPOL位配置,例子代码采用的是手动片选模式,每次读取数据和数据读取结束后需要通过代码来选通和关闭片选,自动片选的例子可以参考板卡驱动程序中的SD卡驱动代码。
代码实现了采用SPI接口发送0x55数据和读取SPI接口数据。
由于没有相关硬件为SPI发送数据,所以代码只是为了学习SPI接口的使用,实现了读取和传输数据的功能,并不能查看发送数据和读取数据的结果。
SPI接口发送数据0x55后读取SPI接口数据。
「该帖子被 andy 在 2011-06-08 20:02:38 编辑过」