打印

FM25L256的读写程序

[复制链接]
3365|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mervyn|  楼主 | 2008-4-12 13:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FM25L256支持无限制读写,适用与需要对存储器经常性读写的系统。

/*
功能:把地址中Addr的数据读出放到指针指向的地址
调用外部函数:SPI0_RW_Byte(uint8);
*/
uint8 FMByteRead(uint16 Addr,uint8 *byte)
{
uint8 r_content;

FM25L256_CS_EN;
SPI0_RW_Byte(READ); // read memory command
SPI0_RW_Byte(Addr>>8); // high 8 bits address
SPI0_RW_Byte((uint8)(0x00ff&Addr)); // low 8 bits address
SPI_SPDR=0xFF;                     //写该寄存器将启动数据传输
while(0==(SPI_SPSR&0x80));
r_content = SPI_SPDR;
FM25L256_CS_DIS;
delay_ms(1);
//读多一遍判断是否与上一次相同
FM25L256_CS_EN;
SPI0_RW_Byte(READ); // read memory command
SPI0_RW_Byte(Addr>>8); // high 8 bits address
SPI0_RW_Byte((uint8)(0x00ff&Addr)); // low 8 bits address
SPI_SPDR=0xFF;                     //写该寄存器将启动数据传输
while(0==(SPI_SPSR&0x80));
*byte = SPI_SPDR;
FM25L256_CS_DIS;

//判断读出来的结果
if(r_content==*byte)
return 1;
else return 0;
}

/*
功能:往地址Addr中写数据Data;
调用外部函数:SPI0_RW_Byte(uint8);
*/

uint8 FMByteWrite(uint16 Addr,uint8 Data)
{
uint8 r_content;
//把数据写进去
FM25L256_CS_EN;    
SPI0_RW_Byte(WREN); // write enable command 
FM25L256_CS_DIS;
delay_ms(1);
FM25L256_CS_EN;
SPI0_RW_Byte(WRITE); // write memory command
SPI0_RW_Byte(Addr>>8); // high 8 bits address
SPI0_RW_Byte((uint8)(0x00ff&Addr)); // low 8 bits address

SPI0_RW_Byte(Data);

FM25L256_CS_DIS;

//把写进去的数据在读出来看看是否相同
delay_ms(1);
FM25L256_CS_EN;
SPI0_RW_Byte(READ); // read memory command
SPI0_RW_Byte(Addr>>8); // high 8 bits address
SPI0_RW_Byte((uint8)(0x00ff&Addr)); // low 8 bits address
SPI_SPDR=0xFF;                     //写该寄存器将启动数据传输
while(0==(SPI_SPSR&0x80));
r_content = SPI_SPDR;
FM25L256_CS_DIS;

if(r_content==Data)
return 1;
else 
return 0;
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

24

帖子

1

粉丝