初级会员
- 积分
- 80
- 金钱
- 80
- 注册时间
- 2015-4-11
- 在线时间
- 7 小时
|
5金钱
用stc单片机读写w25q64用
http://wenku.baidu.com/link?url=FMCIJpyVAzz2tEZssvkBWzzQdCrtddtMUya3YA9VIjPZ8UP1ObaYVsrPWCr_6ERz3i_5i6QeA0QJembw5dOFTv3jdLI2HVor_qLIH10cpIm
的程序改的。
可是读id 为ee16 不是ef16.
看我的初始化
void SPI_Flash_Init(void)
{
P2M0 =0x00;
P2M1 =0x00;
ACC = P_SW1;
ACC &= ~(SPI_S0 | SPI_S1); ///stc15w5k56s4单片机用P2口SPI
ACC |= SPI_S0; //(P2.4/SS_2, P2.3/MOSI_2, P2.2/MISO_2, P2.1/SCLK_2)
P_SW1 = ACC;
SPCTL = 0xd0; //设置1101,0000
SPSTAT = 0xc0;
SPI_Flash_WAKEUP() ;
SPI_FLASH_TYPE = SPI_Flash_ReadID();//读取FLASH ID.
}
unsigned char SPI2_ReadWriteByte(unsigned char dat)
{
SPDAT = dat;//开始传输
while(!(SPSTAT&0x80)); // 等待SPIF = 1,传输完成
dat= SPDAT;
SPSTAT = 0xc0; //_
return dat;
}
现在的情况是:
可是读id 为ee16 不是ef16.
状态寄存器读出为0.
擦除命令后回读值 均为 0xFF
写入再回读,读出的内容不是写入的内容。
例如写入buff[0]=0x0 buff[1]=0x11 buff[2]=0xff buff[3]=0xff buff[4]=0xff buff[5]=0xff buff[6]=0xff buff[7]=0xff buff[8]=0xff buff[9]=0xff buff[10]=0xff buff[11]=0xff buff[12]=0xff buff[13]=0xff buff[14]=0xff buff[15]=0xff buff[16]=0xff buff[17]=0xf0 buff[18]=0x0
读出为BUF[0]=0x0 BUF[1]=0x3 BUF[2]=0xff BUF[3]=0xff BUF[4]=0xff BUF[5]=0xff BUF[6]=0xff BUF[7]=0xff BUF[8]=0xff BUF[9]=0xff BUF[10]=0xff BUF[11]=0xff BUF[12]=0xff BUF[13]=0xff BUF[14]=0xff BUF[15]=0xff BUF[16]=0xff BUF[17]=0xc0 BUF[18]=0x0
单片机频率降为11M了又加延时 结果还是一样。每次运行结果都一样。读出的内容随写入的内容变化。但就不是原值。
烦请看看是哪里出问题啦
|
|