25系列的EEPROM的基本操作几乎是完全一样的
CS的时序很重要的
这是一个写入函数,你参考一下
void Write_Data_25AA(u8 WriteByte,u8 Addr)//向指定地点写入一个字节的数据
{
u8 i;
CS_SPI_LOW; //CS=0
SPI_Write_Byte(WREN); //写入"写使能命令"
CS_SPI_HI; //CS=1
delay_us(10); //延时
CS_SPI_LOW; //CS=0
SPI_Write_Byte(WRITE); //写入"写命令"
SPI_Write_Byte(Addr); //SPI写入地址
SPI_Write_Byte(WriteByte); //写入数据
CS_SPI_HI; //CS=1,写入之后要把CS拉高,才能完成写入
delay_us(10); //延时
do
{
CS_SPI_LOW; //CS=0
SPI_Write_Byte(RDSR); //写入读取STATUS状态位命令
i=SPI_Read_Byte(); //读取STATUS状态位中的:写使能位=WEL,此位为1时,可以写入
CS_SPI_HI; //CS=1
} //读取STATUS状态位中的:写进行位=WIP,此位为1时,正在写入
while(i&0x01); //等待写进行位变成0*/
}
|