原创 STM32 硬件SPI方式读写AT45DB161D

2009-5-10 01:23 9545 7 17 分类: MCU/ 嵌入式

https://static.assets-stash.eet-china.com/album/old-resources/2009/5/10/cda4cb17-da10-4253-b308-9c4fc899c783.rar


这是一个简易的读写,所有操作倾向与对页的操作


STM32的硬件SPI很容易,程序几乎没怎么调试就正常了!
关于对扇区,对块的操作,请参考手册自行更改

代码参考了彩虹大虾的代码

#ifndef _SPI_FLASH_H_
#define _SPI_FLASH_H_  1
#include "stm32f10x_lib.h"

#define FLASH_CHREAD 0x0B
#define FLASH_CLREAD 0x03
#define FLASH_PREAD        0xD2

#define FLASH_BUFWRITE1 0x84
#define FLASH_IDREAD 0x9F
#define FLASH_STATUS 0xD7
#define PAGE_ERASE 0x81
#define PAGE_READ 0xD2
#define MM_PAGE_TO_B1_XFER 0x53                                // 将主存储器的指定页数据加载到第一缓冲区
#define BUFFER_2_WRITE 0x87                                        // 写入第二缓冲区
#define B2_TO_MM_PAGE_PROG_WITH_ERASE 0x86        // 将第二缓冲区的数据写入主存储器(擦除模式)

#define Dummy_Byte 0xA5

/* Select SPI FLASH: ChipSelect pin low  */
#define Select_Flash()     GPIO_ResetBits(GPIOB, GPIO_Pin_2)
/* Deselect SPI FLASH: ChipSelect pin high */
#define NotSelect_Flash()    GPIO_SetBits(GPIOB, GPIO_Pin_2)



void SPI_Flash_Init(void);        //SPI初始化
u8 SPI_Flash_ReadByte(void);                //flash操作基本函数,读一个字节
u8 SPI_Flash_SendByte(u8 byte);                //        FLASH操作基本函数,发送一个字节
void FlashPageEarse(u16 page);        //擦除指定的页,页范围0-4095

void FlashPageRead(u16 page,u8 *Data);                //读取整页,页范围0-4095
void FlashPageWrite(u16 page,u8 *Data);                //写一整页,页范围0-4095


void FlashWaitBusy(void);                        //Flash忙检测
void FlashReadID(u8 *ProdustID);                //读取flashID四个字节

#endif

PARTNER CONTENT

文章评论10条评论)

登录后参与讨论

用户377235 2013-4-3 08:57

和好

用户1313238 2012-4-14 08:58

学习了,那个决对地址怎么算

用户1665687 2011-5-6 10:56

thanks

用户399238 2011-4-29 14:21

thank you!

用户462086 2011-2-28 16:02

#define FLASH_CHREAD 0x0B #define FLASH_CLREAD 0x03 #define FLASH_PREAD 0xD2 这三个常数是其什么作用的,未感觉用到?? 请帮忙解释一下,谢谢!

用户1478494 2009-12-19 16:09

谢谢,学习学习

用户3961 2009-10-21 18:13

3q!!

用户1049014 2009-7-19 23:12

thanks a lot

用户227783 2009-5-12 19:32

oooo~~

tengjingshu_112148725 2009-5-12 13:57

学习了
相关推荐阅读
用户1376528 2009-07-26 22:48
STM32的IAP应用的个人总结
最近有项目要用的IAP功能,摸索了几天时间,把STM32的IAP搞了一下,还是蛮简单的有人提过,ST的3.0库没有复位函数,更新完毕后想直接跳入应用程序。其实有个更简单的方法可以使系统复位:放狗,饿死...
用户1376528 2009-05-20 14:14
用TortoiseSVN管理你的个人代码
经常写代码的人<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 是否曾经保存完一个修...
用户1376528 2009-05-10 01:26
获得DateTimePicker控件的日期数据
MFC中有个控件叫Date Time Picker,日期控件,MFC 为 Date Time Picker 控件封装了一个类,这个类是  CDateTimeCtrl CDateTimeCtrl 类提供...
用户1376528 2009-05-10 01:26
STM32 内部温度AD+DMA+USART+电压AD采样+系统滴答+RTC+格林尼治时间
https://static.assets-stash.eet-china.com/album/old-resources/2009/5/10/9a9e3dee-f153-459a-91e7-fb87...
用户1376528 2009-02-09 12:23
辞职并不遥远
一直想提出辞职,今天终于提出了,其实很简单.我一直以为我走的时候会如何轰动,我甚至想到老板脸上的痛苦表情,可是没有,一切都是那么平静,呵呵!看来是我高估我自己了!待到工作交接的时候我才发现:我的工作其...
EE直播间
更多
我要评论
10
7
关闭 站长推荐上一条 /3 下一条