STM32
直播中

golabs

8年用户 900经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表
私信 关注
[问答]

使用STM32H750 QSPI W25Q64作为外部FLASH,映射后读0X90010000地址的数据读到的是0XFF的原因?

我使用STM32H750   QSPI  W25Q64 作为外部FLASH,使用非映射方式读写FLASH 正常,映射后,读0X90000000地址的数据也正常,但是读0X90010000 地址的数据读到的是0XFF,但是 用W25Qx_QSPI_FastRead 读 0X10000确是正常的,请问哪位大侠知道是怎么回事情
if(W25Qx_QSPI_Init()!=QSPI_OK){while(1);}
//      W25Qx_QSPI_Read(ucD,0x0,8);W25Qx_QSPI_FastRead( ucD[20],0x0000,8); W25Qx_QSPI_FastRead( ucD[30],0x10000,8);//      W25Qx_QSPI_Erase_Block(0);//      W25Qx_QSPI_Write(ucDat,0x0,8);//      W25Qx_QSPI_Read(ucD,0x0,8);W25Qx_QSPI_FastRead( ucD[38],0x10008,8);
if(QSPI_EnableMemoryMappedMode( hqspi)!= QSPI_OK){while(1);}
ucD[0] = *(unsigned char*)(0x8000000UL);ucD[11] =   [i](unsigned char)(0x90000000UL);ucD[12] =   [i](unsigned char)(0x90000001UL);ucD[13] =   [i](unsigned char)(0x90000002UL);ucD[14] =   [i](unsigned char)(0x90000003UL);
ucD[1] =   [i](unsigned char)(0x90010000UL);ucD[2] =   [i](unsigned char)(0x90010001UL);ucD[3] =   [i](unsigned char)(0x90010002UL);ucD[4] =   [i](unsigned char)(0x90010003UL);

回帖(2)

张涵

2024-4-1 11:29:20
是QSPI 配置的地方写的不太对
举报

刘敏

2024-4-1 16:57:57
有几个可能的原因导致你读取0X90010000地址的数据为0XFF:

1. QSPI Flash映射配置错误:请确保你正确配置了QSPI Flash的映射地址和大小。在使用映射方式读写Flash时,需要将Flash的映射地址配置到正确的区域,以便CPU能够正确访问。

2. Flash写入错误:在使用映射方式读写Flash之前,你可能已经使用非映射方式向Flash写入了数据。由于映射和非映射方式读写Flash的操作方式不同,这可能导致映射后读取的数据不正确。建议在映射方式下仅使用映射方式对Flash进行读写操作。

3. 读取地址错误:请确保你使用的是正确的地址进行读取操作。有时候可能会通过偏移量计算地址时出现错误导致读取到错误的数据。

总结起来,要解决这个问题,你可以检查QSPI Flash映射配置、避免在映射方式下使用非映射方式读写Flash、确保读取的地址是正确的。如果问题依然存在,你可以参考ST官方的文档或联系ST技术支持获取更多帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分