FM25L256支持无限制读写,适用与需要对存储器经常性读写的系统。<br /><br />/*<br />功能:把地址中Addr的数据读出放到指针指向的地址<br />调用外部函数:SPI0_RW_Byte(uint8);<br />*/<br />uint8 FMByteRead(uint16 Addr,uint8 *byte)<br />{<br />uint8 r_content;<br /><br />FM25L256_CS_EN;<br />SPI0_RW_Byte(READ); // read memory command<br />SPI0_RW_Byte(Addr>>8); // high 8 bits address<br />SPI0_RW_Byte((uint8)(0x00ff&Addr)); // low 8 bits address<br />SPI_SPDR=0xFF; //写该寄存器将启动数据传输<br />while(0==(SPI_SPSR&0x80));<br />r_content = SPI_SPDR;<br />FM25L256_CS_DIS;<br />delay_ms(1);<br />//读多一遍判断是否与上一次相同<br />FM25L256_CS_EN;<br />SPI0_RW_Byte(READ); // read memory command<br />SPI0_RW_Byte(Addr>>8); // high 8 bits address<br />SPI0_RW_Byte((uint8)(0x00ff&Addr)); // low 8 bits address<br />SPI_SPDR=0xFF; //写该寄存器将启动数据传输<br />while(0==(SPI_SPSR&0x80));<br />*byte = SPI_SPDR;<br />FM25L256_CS_DIS;<br /><br />//判断读出来的结果<br />if(r_content==*byte)<br />return 1;<br />else return 0;<br />}<br /><br />/*<br />功能:往地址Addr中写数据Data;<br />调用外部函数:SPI0_RW_Byte(uint8);<br />*/<br /><br />uint8 FMByteWrite(uint16 Addr,uint8 Data)<br />{<br />uint8 r_content;<br />//把数据写进去<br />FM25L256_CS_EN; <br />SPI0_RW_Byte(WREN); // write enable command <br />FM25L256_CS_DIS;<br />delay_ms(1);<br />FM25L256_CS_EN;<br />SPI0_RW_Byte(WRITE); // write memory command<br />SPI0_RW_Byte(Addr>>8); // high 8 bits address<br />SPI0_RW_Byte((uint8)(0x00ff&Addr)); // low 8 bits address<br /><br />SPI0_RW_Byte(Data);<br /><br />FM25L256_CS_DIS;<br /><br />//把写进去的数据在读出来看看是否相同<br />delay_ms(1);<br />FM25L256_CS_EN;<br />SPI0_RW_Byte(READ); // read memory command<br />SPI0_RW_Byte(Addr>>8); // high 8 bits address<br />SPI0_RW_Byte((uint8)(0x00ff&Addr)); // low 8 bits address<br />SPI_SPDR=0xFF; //写该寄存器将启动数据传输<br />while(0==(SPI_SPSR&0x80));<br />r_content = SPI_SPDR;<br />FM25L256_CS_DIS;<br /><br />if(r_content==Data)<br />return 1;<br />else <br />return 0;<br />}<br /> |
|