资源简介

本资源主要是以stc15w60s2为开发平台,进行铁电读取与擦写实验,适用于数据的快速存储与高擦写次数的研究。

资源截图

代码片段和文件信息

#include “fm25xx.h“

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// *******************************************************************  
// 模拟SPI通讯 -- 写FM25040B
// ******************************************************************* 
void FM_WriteByte(u8 dat)
{
u8 i;
for(i = 0;i < 8;i++)
{
FM_SCK = 0;
// Delay1us();

if(dat & 0x80)  
FM_MOSI = 1;
else
FM_MOSI = 0;

dat <<= 1;
// Delay1us();

FM_SCK = 1;
// Delay1us();
}

FM_SCK = 0;
// Delay1us();
}

// *******************************************************************  
// 模拟SPI通讯 -- 读FM25040B
// ******************************************************************* 
u8 FM_ReadByte()
{
u8 idat = 0;

for(i = 0;i < 8;i++)
{
FM_SCK = 0;
// Delay1us();
dat <<= 1;

if(FM_MISO == 1)
dat  |= 0x01;
// Delay1us();

FM_SCK = 1;
// Delay1us();
}

FM_SCK = 0;
// Delay1us();

return dat;
}
// *******************************************************************
//FM25040写使能
//
// *******************************************************************
void FM_WriteEnable()
{
FM_CS = 0; //片选使能
// delay_us(1);

FM_WriteByte(FM_WREN); //发送写使能指令
    
FM_CS = 1; //片选失能
// delay_us(1);
}

// *******************************************************************
//FM25040写禁止
//
// *******************************************************************
void FM_WriteDisable()
{
FM_CS = 0; //片选使能
// delay_us(1);

FM_WriteByte(FM_WRDI); //发送写失能指令

FM_CS = 1; //片选失能
// delay_us(1);
}

// *******************************************************************
//FM25040写状态寄存器
//
// *******************************************************************
void FM_WriteStateRegister(u8 cmd)
{
FM_WriteEnable(); //写使能

FM_CS = 0; //片选使能
// delay_us(1);

FM_WriteByte(FM_WRSR); //发送写状态寄存器指令

FM_WriteByte(cmd); //发送命令

FM_CS = 1; //片选失能
// delay_us(1);
}

// *******************************************************************
//FM25040读状态寄存器
//
// *******************************************************************
u8 FM_ReadStateRegister()
{
u8 tmp;

FM_WriteEnable(); //写使能

FM_CS = 0; //写使能
// delay_us(1);

FM_WriteByte(FM_RDSR); //发送读状态寄存器指令

tmp = FM_ReadByte(); //读取寄存器状态

FM_CS = 1; //片选失能
// delay_us(1);

return tmp;
}

//// *******************************************************************
////FM25040读数据
////addr: 共9位地址
////读取SPI FLASH  
////在指定地址开始读取指定长度的数据
////pBuffer:数据存储区
////ReadAddr:开始读取的地址(24bit)
////NumByteToRead:要读取的字节数(最大65535)
////u8 FM_Read(u8* pBufferu32 ReadAddru16 NumByteToRead) 
////返回:0(成功),1(失败)
//// *******************************************************************
//u8 FM_Read(u8* pBufferu16 ReadAddru16 NumB

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       13293  2018-09-11 11:52  FM25xx\fm25xx.c
     文件        1174  2018-09-07 09:18  FM25xx\fm25xx.h
     目录           0  2018-12-13 13:44  FM25xx\

评论

共有 条评论