大家好,
我目前正在 i.MXRT1160 上开展一个项目,遇到了一个问题。自从我添加了一个使用半双工 4 位 LPSPI 连接的 ADC 后,代码在调试时不再正常运行。当我在没有调试的情况下刷新设备并且 ADC 读数似乎是正确的时,代码仍然有效。当我开始调试时,代码中断并显示下图中的消息:
当我禁用半双工 LPSPI 连接时,调试再次工作,所以这似乎是问题的原因。有谁知道会发生什么?下面的代码显示了 LPSPI 模块的配置:
const lpspi_master_config_t LPSPI1_config = {
.baudRate = LPSPI_ADC1_BAUDRATE,
.bitsPerFrame = 56UL,
.cpol = kLPSPI_ClockPolarityActiveLow,
.cpha = kLPSPI_ClockPhaseSecondEdge,
.direction = kLPSPI_MsbFirst,
.pcsToSckDelayInNanoSec = 50UL,
.lastSckToPcsDelayInNanoSec = 0UL,
.betweenTransferDelayInNanoSec = 0UL,
.whichPcs = kLPSPI_Pcs0,
.pcsActiveHighOrLow = kLPSPI_PcsActiveLow,
.pinCfg = kLPSPI_SdiInSdoOut,
.dataOutConfig = kLpspiDataOutTristate,
.width_config = kLPSPI_Width4,
.pcs_config = kLPSPI_PCS_4BitsTransfer
};
static void LPSPI1_init(void)
{
lpspi_which_pcs_t whichPcs;
uint8_t tx水印;
uint8_t rx水印;
uint8_t masterFifoSize;
LPSPI_MasterInit(LPSPI1, &LPSPI1_config, BOARD_BOOTCLOCKRUN_LPSPI1_CLK_ROOT);
whichPcs = LPSPI_MASTER_PCS_FOR_INIT;
/* TX 和 RX FIFO 大小始终相同。*/
masterFifoSize = LPSPI_GetRxFifoSize(LPSPI1);
如果(masterFifoSize > 1)
{
txWatermark = 1;
rx水印 = 0;
}
else
{
txWatermark = 0;
rx水印 = 0;
}
LPSPI_SetFifoWatermarks(LPSPI1, txWatermark, rxWatermark);
LPSPI_Enable(LPSPI1, false);
LPSPI1->CFGR1 &= (~LPSPI_CFGR1_NOSTALL_MASK);
/* 刷新 FIFO,清除状态,禁用所有中断。*/
LPSPI_FlushFifo(LPSPI1, true, true);
LPSPI_ClearStatusFlags(LPSPI1, kLPSPI_AllStatusFlag);
LPSPI_DisableInterrupts(LPSPI1,kLPSPI_AllInterruptEnable);
LPSPI_SelectTransferPCS(LPSPI1, whichPcs);
LPSPI_Enable(LPSPI1, 真);
}
我真的很想能够在激活 ADC 模块的情况下调试我的代码。
0
|