我这边使用CC2650的SPI模块与单片机进行通信,具体的SPI程序如下:
static void transferCallback(SPI_Handle ghSpiHdl, SPI_Transaction *slaveTranData)
{
events |= SBP_MSPI_SEND_EVT;
// Start another transfer
SPI_transfer(ghSpiHdl, slaveTranData);
Semaphore_post(sem);
}
SPI_Handle ghSpiHdl = NULL;
SPI_Params ltSpiParams = {0};
SPI_Transaction slaveTranData;
SPI_Params_init(<SpiParams);
ltSpiParams.bitRate = 1000000;
ltSpiParams.frameFormat = SPI_POL1_PHA1;
ltSpiParams.mode = SPI_SLAVE;
ltSpiParams.transferMode = SPI_MODE_CALLBACK;
ltSpiParams.transferCallbackFxn = transferCallback;
slaveTranData.count = 20; //所要写的数据长度,字节单位
slaveTranData.txBuf = MTranBuf; //所要被写数据的地址
slaveTranData.rxBuf = MRecvBuf; //接收数据所存放的地址
ghSpiHdl = SPI_open(Board_SPI0, <SpiParams);
SPI_transfer(ghSpiHdl, &slaveTranData);
实验现象如下:在线调试直接跳过了SPI transfer,但使用示波器去测量CS,CLK,MOSI引脚均有数据。
请问是我SPI程序哪里有问题吗?
望指教,谢谢!