ercircle 发表于 2024-11-21 22:55:13

QSPI阻塞问题定位

本帖最后由 ercircle 于 2024-11-21 22:55 编辑

问题背景:
测试Ai8051U 实验箱例程包72.4例程,C51环境下

问题现象:
flash编程数据超过4Byte时阻塞在QSPI_WRITE_INSTR_SADDR24_SDATA函数QSPI_CheckTransfer循环中

定位过程:
简单粗暴加日志打印:



调试过程中发现,在以下代码段中添加打印或者加NOP(12)则不会阻塞
    while (datalen)
    {
      QSPI_WriteData(*pdat);      //写数据到FIFO中
      pdat++;
      datalen--;
                        //printf("FIFOLevel:%bd , 0x%02bx\n",QSPI_CheckFIFOLevel()                ,QSPI_CheckFIFOLevel()                );
                        //NOP(12);
    }
为什么FIFO为空但是一直处于BUSY状态,不懂,发帖请教下,请大佬指点下,谢谢~



触发流程:
下载hex后,给串口助手发送以下flash编程报文触发:
41 49 43 F3 00 00 00 00 00 00 01 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

测试工程:


ercircle 发表于 2024-11-21 23:59:57

加延时虽然不阻塞了,但是从W25Q128回读的数据对不上。读取函数里加NOP没变化




测试报文:
写:
41 49 43 F3 00 00 00 00 00 00 01 00 46 41 54 00 00 00 00 0D 00 00 01 00 00 02 59 00 00 04 B1 00 00 07 09 00 00 09 61 00 00 0B B9 00 00 0E 11 00 00 10 69 00 00 12 C1 00 00 15 19 00 00 17 71 00 00 19 C9 00 00 1C 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

读:
41 49 43 F2 00 00 00 00 00 00 01 00

测试工程:

ercircle 发表于 2024-11-22 00:28:01

ercircle 发表于 2024-11-21 23:59
加延时虽然不阻塞了,但是从W25Q128回读的数据对不上。读取函数里加NOP没变化




2楼问题是没先发清除指令41 49 43 F5 00 00 00 00
只剩延时问题

DebugLab 发表于 2024-11-26 12:31:19


传输8字节测试没有发现阻塞的问题




DebugLab 发表于 2024-11-26 12:34:51

DebugLab 发表于 2024-11-26 12:31
传输8字节测试没有发现阻塞的问题

使用C251模式测试
建议使用C251模式

ercircle 发表于 2024-11-26 23:07:06

{:4_196:}{:4_196:}感谢超版回复
页: [1]
查看完整版本: QSPI阻塞问题定位