- 打卡等级:偶尔看看I
- 打卡总天数:11
- 最近打卡:2026-03-09 22:26:23
已绑定手机
注册会员
- 积分
- 103
|
现在学习QSPI的用法,发现FTF标志达到阀值后置1, QSPI传送仍然在继续. 这样导致FIFO中的数来不及保存,而出错.不知道大家怎么解决?
例程中的方法是接收完,再读取,但字节数超过32字节就不行.应该是缓存满了. 参考的下面函数.
void QSPI_READ_INSTR_SDATA(BYTE cmd, BYTE *pdat, WORD datalen)
{
while (QSPI_CheckBusy()); //检测忙状态
QSPI_SetReadMode(); //读模式
QSPI_SetDataLength(datalen-1); //设置数据长度
QSPI_SetDummyCycles(0); //设置DUMMY时钟
QSPI_InstructionSingMode(); //设置指令为单线模式
QSPI_NoAddress(); //无地址字节
QSPI_NoAlternate(); //无间隔字节
QSPI_DataSingMode(); //设置数据为单线模式
QSPI_SetInstruction(cmd); //设置指令
while (!QSPI_CheckTransfer()); //等到数据传输完成
QSPI_ClearTransfer(); //清除传输完成标志
while (datalen)
{
*pdat = QSPI_ReadData(); //从FIFO中读取数据
pdat++;
datalen--;
}
while (QSPI_CheckFIFOLevel()) //清空FIFO
QSPI_ReadData();
}
|
|