您好,我正在使用 LPSPI 并使用 LPSPI_MasterTransferBlocking。由于这是一个阻塞功能,我希望一旦传输完成,LPSPI 外围设备就会空闲。然而,我观察到了一些不同的东西。
阻塞传输后,我使用LPSPI_GetStatusFlags读取SR(状态寄存器),返回值为0x1001101。
你有什么建议吗?理想情况下,阻塞传输之后,LPSPI 应该处于空闲状态。我在下面分享一个代码快照以供参考。
if((staus_flag & kLPSPI_ModuleBusyFlag) == kLPSPI_ModuleBusyFlag)
{
ret = STATUS_BUSY;
PRINTF("SPI Busy, %x, %d\r\n", staus_flag, count);
}
else
{
masterXfer.txData = SpiTxData;
masterXfer.rxData = SpiRxData;
masterXfer.dataSize = spiTransferSize;
masterXfer.configFlags =
kLPSPI_MasterPcs0 | kLPSPI_MasterPcsContinuous;
status = LPSPI_MasterTransferBlocking(LPSPI1, &masterXfer);
ret = STATUS_SUCCESS;
staus_flag = LPSPI_GetStatusFlags(IMU_SPI_IF);
PRINTF("staus_flag: %x\r\n", staus_flag);
count++;
//sw_asm_delay_us(2U);
}顺便说一下,LPSPI1 和 IMU_SPI_IF 是相同的。