#include "flash.h"
/********************************************************
//project:STM32F1 SPI读写FM25CL64驱动代码
//date:2013.09.26
//author:huangzheng
//annotation:适用铁电存储器fm25系列读写代码,直接读写一个字节
//
**********************************************************/
//初始化SPI FLASH的IO口
SPI_InitTypeDef SPI_InitStructure;
void SPI_Flash_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //SPI CS
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_2);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //设置SPI工作模式:设置为主SPI
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //设置SPI的数据大小:SPI发送接收8位帧结构
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //选择了串行时钟的稳态:时钟悬空高
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //数据捕获于第二个时钟沿
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //定义波特率预分频的值:波特率预分频值为256
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC值计算的多项式
SPI_Init(SPI1, &SPI_InitStructure); //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
SPI_Cmd(SPI1, ENABLE); //使能SPI外设
}
u8 SPIx_ReadWriteByte(u8 TxData) //SPI 发送接收字节
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
retry++;
if(retry>200)return 0;
}
SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //检查指定的SPI标志位设置与否:接受缓存非空标志位
{
retry++;
if(retry>200)return 0;
}
return SPI_I2S_ReceiveData(SPI1); //返回通过SPIx最近接收的数据
}
#define FM25CL64_Reset_CS GPIO_ResetBits(GPIOA,GPIO_Pin_2)
#define FM25CL64_Set_CS GPIO_SetBits(GPIOA,GPIO_Pin_2)
void SPI_write_FM25CL64(u8 data,u16 address)//写入一个字节到特定地址空间
{
u8 addr_tempH,addr_tempL;
addr_tempH = (u8)((address&0xff00)>>8); //获取高8位地址
addr_tempL = (u8)(address&0x00ff); //获取低8位地址
FM25CL64_Reset_CS;
SPIx_ReadWriteByte(FM25CL64_WREN_INST); //写使能
SPIx_ReadWriteByte(FM25CL64_WRITE_INST); //写存储器寄存器操作吗
SPIx_ReadWriteByte(addr_tempH); //写入高八位地址,高3位忽略
SPIx_ReadWriteByte(addr_tempL); //
SPIx_ReadWriteByte(data); //写入数据
FM25CL64_Set_CS;
}
u8 SPI_read_FM25CL64(u16 address)//读出特定地址空间的数据
{
u8 dat,addr_tempH,addr_tempL;
addr_tempH = (u8)((address&0xff00)>>8);
addr_tempL = (u8)(address&0x00ff);
FM25CL64_Reset_CS;
SPIx_ReadWriteByte(FM25CL64_READ_INST); //读存储器寄存器操作码
SPIx_ReadWriteByte(addr_tempH);
SPIx_ReadWriteByte(addr_tempL);
dat=SPIx_ReadWriteByte(0x00); //读取数据,0x00给予读取数据所需的时钟
FM25CL64_Set_CS;
return (dat);
}
没有合适的资源?快使用搜索试试~ 我知道了~
STM32103RBT6单片机 SPI读写FM25CL64铁电存储器程序驱动源码.rar
共2个文件
h:1个
c:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 4 下载量 173 浏览量
2023-03-14
11:13:09
上传
评论 3
收藏 2KB RAR 举报
温馨提示
STM32103RBT6单片机 SPI读写FM25CL64铁电存储器程序驱动源码 #include "flash.h" /******************************************************** //project:STM32F1 SPI读写FM25CL64驱动代码 //date:2013.09.26 //author:huangzheng //annotation:适用铁电存储器fm25系列读写代码,直接读写一个字节 // **********************************************************/ //初始化SPI FLASH的IO口 SPI_InitTypeDef SPI_InitStructure; void SPI_Flash_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE )
资源推荐
资源详情
资源评论
收起资源包目录
STM32103RBT6单片机 SPI读写FM25CL64铁电存储器程序驱动源码.rar (2个子文件)
FLASH
flash.c 4KB
flash.h 691B
共 2 条
- 1
资源评论
- weixin_421102172024-02-11果断支持这个资源,资源解决了当前遇到的问题,给了新的灵感,感谢分享~
- 穿过这片黑夜2024-01-09资源内容详实,描述详尽,解决了我的问题,受益匪浅,学到了。
- bodema2024-04-09资源不错,很实用,内容全面,介绍详细,很好用,谢谢分享。
- 设计小工人2023-11-07资源不错,对我启发很大,获得了新的灵感,受益匪浅。
GJZGRB
- 粉丝: 1075
- 资源: 5911
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功