• 大小: 2KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-23
  • 语言: 其他
  • 标签: STM32  FM25CL64B  

资源简介

STM32和FM25CL64B 铁电存储器 SPI接口

资源截图

代码片段和文件信息

/****************************************************************************
* 文件名: FM25CL64B.c
* 内容简述: 本模块实现铁电存储器数据的读写  使用用SPI方式 最大20MHZ
* 即在72M主频下 最快可以设置为4分频=18MHZ  
* 文件历史:
* 版本号  日期       作者    说明
* v0.1    2012-5-8  hnren  创建该文件
*
*/

/* Includes ------------------------------------------------------------------*/
#include  “FM25CL64.h“

#define FM25CL64_WREN_INST   0x06   //写使能
#define FM25CL64_WRDI_INST   0x04   //写失能
#define FM25CL64_RDSR_INST   0x05   //读状态寄存器
#define FM25CL64_WRSR_INST   0x01   //写状态寄存器
#define FM25CL64_WRITE_INST  0x02   //写数据
#define FM25CL64_READ_INST   0x03   //读数据
#define FM25CL64_STATUS_REG  0x00   //状态寄存器数据 清空
#define FM25CL64_INIT_INST   0x09   //


//-------只要配置此处就可以通信--------
#define FM25CL64_SPI  SPI1          //使用SPI几的方式
#define FM25CL64_CS_HIGH()  GPIOB->BSRR=GPIO_Pin_0|GPIO_Pin_1;   
#define FM25CL64_CS_LOW()   GPIOB->BRR=GPIO_Pin_1;   
//-------------------------------------


//向FLASH中写入一个字节数据(ZJ)
static u8 FM25CL64_SPI_Byte(u8 Temp);
//1. 读状态
static u8 ReadState();
//2. 检测读状态
static u8 Check_Start();
//3. 写使能
static void WriteEnable();
//4. 写状态
static void WriteState();


//向FLASH中写入一个字节数据(ZJ)
static u8 FM25CL64_SPI_Byte(u8 Temp) 
{                
  /*等待发送寄存器空*/
  while((FM25CL64_SPI->SR & SPI_I2S_FLAG_TXE)==RESET);
  /*发送一个字节*/
  FM25CL64_SPI->DR = Temp;
  /* 等待接收寄存器有效*/
  while((FM25CL64_SPI->SR & SPI_I2S_FLAG_RXNE)==RESET);
  return (FM25CL64_SPI->DR);
}


//1. 读状态
static u8 ReadState()
{
  u8 r;
  FM25CL64_CS_LOW();
  r=FM25CL64_SPI_Byte(FM25CL64_RDSR_INST);
  r=FM25CL64_SPI_Byte(0);
  FM25CL64_CS_HIGH();
  return(r);
}

//2. 检测读状态
static u8 Check_Start()
{
  u8 i=0r=255;
  do 
  {
    r=ReadState();
    i++;
  } while ((r&0x01)&& i<254);
  if (i>=254)
    return 1;
  
  return 0;
}

//3. 写使能
static void WriteEnable()
{
  FM25CL64_CS_LOW();
  FM25CL64_SPI_Byte(FM25CL64_WREN_INST);
  FM25CL64_CS_HIGH();
}

//4. 写状态<---- 基本没什么用
static void WriteState()
{
  WriteEnable();
  FM25CL64_CS_LOW();
  FM25CL64_SPI_Byte(FM25CL64_WRSR_INST);
  FM25CL64_SPI_Byte(FM25CL64_STATUS_REG);
  FM25CL64_CS_HIGH();
  Check_Start();
}

//5. 读存储器内容子程序
u8 Read_FM25CL64_Byte(u16 addre)
{
  u8 dat;
  FM25CL64_CS_LOW();
  FM25CL64_SPI_Byte(FM25CL64_READ_INST);
  FM25CL64_SPI_Byte((addre&0xFF00)>>8);
  dat=FM25CL64_SPI_Byte((addre&0x00FF));
  dat=FM25CL64_SPI_Byte(0);
  FM25CL64_CS_HIGH();
  return(dat);
}

//6. 读存储器内容子程序(多字节)
u8 Read_FM25CL64_nByte(u16 addreu8* buffu16 len)
{
  u8 dat=0;
  FM25CL64_CS_LOW();
  FM25CL64_SPI_Byte(FM25CL64_READ_INST);
  FM25CL64_SPI_Byte((addre&0xFF00)>>8);
  FM25CL64_SPI_Byte((addre&0x00FF));
  for (int i=0;i  {
    buff[i]=FM25CL64_SPI_Byte(0);
  }
  FM25CL64_CS_HIGH();
  return(dat);
}
//7. 写存储器内容子程序
u8 Write_FM25CL64_Byte(u16 addreu8 dat)
{
  WriteEnable();
  FM25CL64_CS_LOW();
  FM25CL64_SPI_Byte(FM25CL64_WRITE_INST);
  FM25CL64_SPI_Byte((addre&

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3701  2012-06-19 16:05  FM25CL64B\FM25CL64.c
     文件         346  2012-12-29 15:19  FM25CL64B\FM25CL64.h
     目录           0  2012-07-11 09:01  FM25CL64B\

评论

共有 条评论