首先感谢管理员OpenADSP。上面的问题已经解决了,现将这部分总结下,供初学者参考!
所用的硬件平台:OpenADSP的21489核心板
想要实现的功能:21489两个SPI模块SPI、SPIB之间单向通信,SPI(主)—>SPIB(从)
现将验证通过的代码贴出来:
SRU: //master
SRU(SPI_CLK_PBEN_O,DPI_PBEN03_I); //CLK->DPI_PB03
SRU(SPI_CLK_O,DPI_PB03_I);
SRU(SPI_MOSI_PBEN_O,DPI_PBEN02_I); //DATA->DPI_PB02
SRU(SPI_MOSI_O,DPI_PB02_I);
SRU(SPI_FLG0_PBEN_O,DPI_PBEN01_I); //CS ->DPI_PB01
SRU(SPI_FLG0_O,DPI_PB01_I);
//slave
SRU(HIGH,DPI_PBEN06_I); //CLK
SRU(DPI_PB03_O,DPI_PB06_I);
SRU(DPI_PB06_O,SPIB_CLK_I);
SRU(HIGH,DPI_PBEN04_I); //DATA
SRU(DPI_PB02_O,DPI_PB04_I);
SRU(DPI_PB04_O,SPIB_MOSI_I);
SRU(HIGH,DPI_PBEN05_I); //CS
SRU(DPI_PB01_O,DPI_PB05_I);
SRU(DPI_PB05_O,SPIB_DS_I);
SPI:
//master configure
*pSPICTL = (TXFLSH | RXFLSH); //clear some register
*pSPIFLG = 0;
*pSPIFLG = DS0EN;
*pSPIBAUD = 25;
*pSPICTL = (SPIEN | SPIMS | WL8 | MSBF | TIMOD1 | SENDZ | GM | CPHASE | CLKPL);
//slave configure
*pSPICTLB = (TXFLSH | RXFLSH) ; //clear some register
*pSPICTLB = (SPIEN | WL8 | MSBF | CPHASE | CLKPL);
这里注意删除了从设备关于FLG和波特率寄存器的设置。
总结:SPI比较简单吧,但是好几天没调出来,确实是急坏了!导致对问题的分析变的比较盲目,找不到解决问题关键所在!
一般来说处理器都是主设备,很少用作从设备,所以在从设备设置这方面出了点问题。