FM25L256的读写程序

[复制链接]
4361|0
 楼主| mervyn 发表于 2008-4-12 13:36 | 显示全部楼层 |阅读模式
FM25L256支持无限制读写,适用与需要对存储器经常性读写的系统。<br /><br />/*<br />功能:把地址中Addr的数据读出放到指针指向的地址<br />调用外部函数:SPI0_RW_Byte(uint8);<br />*/<br />uint8&nbsp;FMByteRead(uint16&nbsp;Addr,uint8&nbsp;*byte)<br />{<br />uint8&nbsp;r_content;<br /><br />FM25L256_CS_EN;<br />SPI0_RW_Byte(READ);&nbsp;//&nbsp;read&nbsp;memory&nbsp;command<br />SPI0_RW_Byte(Addr&gt&gt8);&nbsp;//&nbsp;high&nbsp;8&nbsp;bits&nbsp;address<br />SPI0_RW_Byte((uint8)(0x00ff&Addr));&nbsp;//&nbsp;low&nbsp;8&nbsp;bits&nbsp;address<br />SPI_SPDR=0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写该寄存器将启动数据传输<br />while(0==(SPI_SPSR&0x80));<br />r_content&nbsp;=&nbsp;SPI_SPDR;<br />FM25L256_CS_DIS;<br />delay_ms(1);<br />//读多一遍判断是否与上一次相同<br />FM25L256_CS_EN;<br />SPI0_RW_Byte(READ);&nbsp;//&nbsp;read&nbsp;memory&nbsp;command<br />SPI0_RW_Byte(Addr&gt&gt8);&nbsp;//&nbsp;high&nbsp;8&nbsp;bits&nbsp;address<br />SPI0_RW_Byte((uint8)(0x00ff&Addr));&nbsp;//&nbsp;low&nbsp;8&nbsp;bits&nbsp;address<br />SPI_SPDR=0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写该寄存器将启动数据传输<br />while(0==(SPI_SPSR&0x80));<br />*byte&nbsp;=&nbsp;SPI_SPDR;<br />FM25L256_CS_DIS;<br /><br />//判断读出来的结果<br />if(r_content==*byte)<br />return&nbsp;1;<br />else&nbsp;return&nbsp;0;<br />}<br /><br />/*<br />功能:往地址Addr中写数据Data;<br />调用外部函数:SPI0_RW_Byte(uint8);<br />*/<br /><br />uint8&nbsp;FMByteWrite(uint16&nbsp;Addr,uint8&nbsp;Data)<br />{<br />uint8&nbsp;r_content;<br />//把数据写进去<br />FM25L256_CS_EN;&nbsp;&nbsp;&nbsp;&nbsp;<br />SPI0_RW_Byte(WREN);&nbsp;//&nbsp;write&nbsp;enable&nbsp;command&nbsp;<br />FM25L256_CS_DIS;<br />delay_ms(1);<br />FM25L256_CS_EN;<br />SPI0_RW_Byte(WRITE);&nbsp;//&nbsp;write&nbsp;memory&nbsp;command<br />SPI0_RW_Byte(Addr&gt&gt8);&nbsp;//&nbsp;high&nbsp;8&nbsp;bits&nbsp;address<br />SPI0_RW_Byte((uint8)(0x00ff&Addr));&nbsp;//&nbsp;low&nbsp;8&nbsp;bits&nbsp;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);&nbsp;//&nbsp;read&nbsp;memory&nbsp;command<br />SPI0_RW_Byte(Addr&gt&gt8);&nbsp;//&nbsp;high&nbsp;8&nbsp;bits&nbsp;address<br />SPI0_RW_Byte((uint8)(0x00ff&Addr));&nbsp;//&nbsp;low&nbsp;8&nbsp;bits&nbsp;address<br />SPI_SPDR=0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写该寄存器将启动数据传输<br />while(0==(SPI_SPSR&0x80));<br />r_content&nbsp;=&nbsp;SPI_SPDR;<br />FM25L256_CS_DIS;<br /><br />if(r_content==Data)<br />return&nbsp;1;<br />else&nbsp;<br />return&nbsp;0;<br />}<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

24

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部