こんにちは、私はLPSPIを使用して作業しており、LPSPI_MasterTransferBlockingを使用しています。これはブロッキング機能なので、転送が完了するとLPSPIペリフェラルは空いていると予想しています。しかし、私は何か違うことを観察しました。
ブロッキング転送後、LPSPI_GetStatusFlagsを使ってSR(Status Register)を読み込み、返ってきた値は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は同じです。