
本帖最后由 hpdell 于 2017-6-3 17:20 编辑 请教下,使用qspi MX25L25635 为何一次读写4MByte的数据就出错 ? 一次读写 3MByte 的数据非常好,没有任何错误 ![]() 一次读写4MByte 的数据就出错了,貌似是检查到一半左右的位置 ?? ![]() 读写函数: void QSPI_ReadWriteDemo(void) { // uint32_t RWDataSize = 1024*1024UL * 3UL; // 3MByte ok uint32_t RWDataSize = 1024*1024UL * 4UL; // 4MByte 错误 ???????????????????????????、 uint8_t * qspi_tx_buff = (uint8_t *)mymalloc(SRAMEX, RWDataSize ); uint8_t * qspi_rx_buff = (uint8_t *)mymalloc(SRAMEX, RWDataSize ); uint8_t i = 0; uint32_t cc = 0; uint32_t QspiAddr_RW; uint32_t TimeBegin, TimeEnd; for(cc=0;cc < ( RWDataSize );cc++) { *qspi_tx_buff ++ = i ; // qspi_rx_buff[cc] = 0 ; i ++; } QspiAddr_RW = (((0 + 4) * 4096) ) + 0; TimeBegin = HAL_GetTick(); QSPI_WriteBuffAutoEraseSector( (uint8_t *) qspi_tx_buff, (uint32_t)(QspiAddr_RW ), RWDataSize); TimeEnd = HAL_GetTick(); printf("QSPI WriteData = %d End ... ... %dms\r\n" , RWDataSize, TimeEnd - TimeBegin); TimeBegin = HAL_GetTick(); QSPI_ReadBuff( (uint8_t *) qspi_rx_buff, (uint32_t)(QspiAddr_RW ), RWDataSize); TimeEnd = HAL_GetTick(); printf("QSPI ReadData = %d End ... ... %dms\r\n" , RWDataSize, TimeEnd - TimeBegin); if( Buffercmp_8((uint8_t *) qspi_tx_buff, (uint8_t *) qspi_rx_buff, RWDataSize) == 0) printf("QSPI Data Read Write SizeData = %d KByte Test ... ...OK \r\n\r\n", RWDataSize/1024); else printf("QSPI Data Read Write SizeData = %d KByte Test ... ...Error \r\n\r\n", RWDataSize/1024); myfree(SRAMEX, qspi_tx_buff); myfree(SRAMEX, qspi_rx_buff); } |
STM32Cube_FW_F7_V1.7.0\Projects\STM32F723E-Discovery\Examples\QSPI
这个历程里面有,不过历程里面的是 512的,只要芯片类似,修改一下容量大小就可以了
评分
查看全部评分