资源简介
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\
相关资源
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
- STM32的PCB封装库,以及原理图库,48
- SX1280.rar
- STM32 DS3231驱动.zip
- STM32F103C8T6+NRF24l01无线通信
- 21天学会嵌入式开发STM32.zip
- STM32 电子密码锁设计,LCD12864显示
- STM32 LCD12864并口驱动实验
评论
共有 条评论