//读取SPI FLASH
//在指定地址开始读取指定长度的数据
//pBuffer:数据存储区
//ReadAddr:开始读取的地址(24bit)
//NumByteToRead:要读取的字节数(最大65535)
void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead)
{
u16 i;
SPI_FLASH_CS=0; //使能器件
SPI2_ReadWriteByte(W25X_ReadData); //发送读取命令
SPI2_ReadWriteByte((u8)((ReadAddr)>>16)); //发送24bit地址
SPI2_ReadWriteByte((u8)((ReadAddr)>>8));
SPI2_ReadWriteByte((u8)ReadAddr);
for(i=0;i<NumByteToRead;i++)
{
pBuffer=SPI2_ReadWriteByte(0XFF); //循环读数
}
SPI_FLASH_CS=1;
}
用的flash是w25q64想问下这里的地址是怎么确定的 24bit表示2的24次方的地址空间吗 为什么是24?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
for(sum = 0; sum < D_Len; sum++)
{
W25QXX_Read(Data, FLASH_SIZE + (User_Info[sum] * 4096), 20);
sprintf((char *)buf, "(%d)用户 ", User_Info[sum]);
printf("%s", buf);
sprintf((char *)buf, "用户名为:%s ", Data);
printf("%s", buf);
}
User_Info[sum] 为1时读取正常
User_Info[sum] 为2时就会连1的一起读出来
W25QXX_Write(USART1_BUF, FLASH_SIZE + (User_zc * 4096), 20);
User_zc和User_Info[sum] 值对应
一周热门 更多>