新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2016-4-1
- 在线时间
- 8 小时
|
2金钱
void SPI_FLASH_task(void *pdata)
{
SPI_Flash_class Flash;
u8 temp[64];
u8 WriteTemp[64];
for(u8 i =0;i<64;i++)
{
WriteTemp=i;
}
Flash.SPI_Flash0_Write((u8 *)WriteTemp,173554434-64,64); //33554432 Flash.FLASH_SIZE0 // 此处我用C++语言编写W25Q32的驱动,
// 这边算了一下W25Q32最大能有32*1024*1024的存储地址,最大的地址也就是33554432
// 可是173554434已经超过了这个数了,芯片为什么还能正常读写 我的驱动和原子的驱动一样的,只是上层我用C++再封装了一遍
while(1)
{
//printf("W25Qxx ID is %x\r\n",W25QXX0_TYPE);
//printf("W25Qxx ID is %x\r\n",W25QXX1_TYPE);0x13380
Flash.SPI_Flash0_Read((u8 *)temp,173554434-64,64);
OSTimeDlyHMSM (0,0,1,100);
}
}
// 这边算了一下W25Q32最大能有32*1024*1024的存储地址,最大的地址也就是33554432
// 可是173554434已经超过了这个数了,芯片为什么还能正常读写 我的驱动和原子的驱动一样的,只是上层我用C++再封装了一遍
|
最佳答案
查看完整内容[请看2#楼]
我找到原因了,是因为驱动哪边有个跨区读写,如果超过了存储的最大值,驱动哪边的程序会从最小的内存地址偏移开始读写
|