新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2015-1-31
- 在线时间
- 0 小时
|
5金钱
能够读出芯片的ID,但是读数据的时候,读出来却是一堆乱码,并不是我以前写入的数据,也不是0XFF,换任何空间读出来都一样,请教大神,我该从哪入手找原因呢?
//读函数,照操原子哥的。
void SPI_Flash_Read(u8 *pBuffer,u32 ReadAddr,u16 NumByteToRead)
{
u16 i;
SPI_FLASH_CS=0; //片选
SPIx_ReadWriteByte(SST25_ReadData); //发送读命令
//发送24位地址
SPIx_ReadWriteByte((u8)(ReadAddr)>>16);
SPIx_ReadWriteByte((u8)(ReadAddr)>>8);
SPIx_ReadWriteByte((u8)ReadAddr);
SPIx_ReadWriteByte(0xFF);
for(i=0;i<NumByteToRead;i++)
{
pBuffer=SPIx_ReadWriteByte(0XFF); //连续读
}
SPI_FLASH_CS=1; //取消片选
}
以下为主函数
const u8 TEXT_Buffer[]={"Mini STM32"};
#define SIZE sizeof(TEXT_Buffer)
int main(void)
{
#ifdef DEBUG
debug();
#endif
u16 key;
u8 datatemp[SIZE];
Init_Function();
POINT_COLOR=RED; //
key=SPI_Flash_ReadID();
while(SPI_Flash_ReadID()!=FLASH_ID) //读芯片的ID,我读出的ID是正确的。
{
LCD_ShowString(60,130,"SST25VF Check Failed!");
delay_ms(500);
}
LCD_ShowString(60,110,"SST25VF Ready!");
LCD_ShowString(60,130,"KEY1:Write KEY2:Read");
POINT_COLOR=BLUE;
while(1)
{
key=Key_Scan();
if(key==1)//按键1按下,写?FLASH
{
LCD_Fill(0,170,239,319,WHITE);
LCD_ShowString(60,170,"Start Write SST25V");
SPI_Flash_Write((u8*)TEXT_Buffer,1000,SIZE); //
LCD_ShowString(60,170,"SST25V Write Finished");
}
if(key==2) //按健2按下,FLASH
{ SPI_Flash_Erase_Chip();//因为读不出正确,我就把整个芯片全擦除了一遍,看读出的数是多少,结果读出的还是乱码,不是0XFF;
LCD_ShowString(60,150,"Start Read SST25V");
SPI_Flash_Read(datatemp,1000,5); //
LCD_ShowString(60,170,"The Data Is: ");
LCD_ShowString(157,170,datatemp);
delay_ms(500);
}
}
}
我始终读出的都是乱码,不知道怎么回事,请教一下大神,帮我看看哪弄错了,是不是写入的英文,读出来需要怎么弄才能显示?或者告诉我一下,我该怎么入手?
|
|