SPI_FLASH_Write_SR(0x02);//使能狀態寄存器中的寫存儲器
SPI_FLASH_Write_SR(0x02);//使能狀態寄存器中的寫存儲器
實驗目的:將數據寫入外部FLASH中,然后再讀出來顯示在LCD上
實驗平臺:基于STM32F103C8T6的彩屏開發板
FLASH:SST25VF016B
圖1:FLASH硬件接口
圖2:SST25VF016地址自增寫數據
主要的實驗代碼:
Flash.h
#ifndef __FLASH_H
#define __FLASH_H
#include "sys.h"
#define
////////////////////////////////////////////////////////////////////////////
//SST25VF016讀寫
#define FLASH_ID 0XBF41
//指令表
#define SST25_ReadData
#define SST25_FastReadData
#define SST25_4KByte_BlockERASE
#define SST25_32KByte_BlockErase
#define SST25_64KByte_BlockErase
#define SST25_ChipErase
#define SST25_ByteProgram
#define SST25_AAI_WordProgram
#define SST25_ReadStatusReg
#define SST25_EnableWriteStatusReg
#define SST25_WriteStatusReg
#define SST25_WriteEnable
#define SST25_WriteDisable
#define SST25_ManufactDeviceID
#define SST25_JedecDeviceID
#define SST25_EBSY
#define SST25_DBSY
void SPI_Flash_Init(void);
u16
u8
void SPI_FLASH_Write_SR(u8 sr);
void SPI_FLASH_Write_Enable(void);
void SPI_FLASH_Write_Disable(void); //寫保護
void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead);
void SPI_Flash_Erase_Chip(void);
void SPI_Flash_Erase_Sector(u32 Dst_Addr);//扇區擦除
void SPI_Flash_Wait_Busy(void);
void SST25V_EBSY(void);
void SST25V_DBSY(void);
void Flash_WriteByte(u8* pBuffer,u32 WriteAddr);//寫入1Byte數據
void AutoAddressIncrement_WordProgramA(u8 Byte1, u8 Byte2, u32 Addr);//地址自動增加的寫數據A
void AutoAddressIncrement_WordProgramB(u8 state,u8 Byte1, u8 Byte2);//地址自動增加的寫數據B
void SPI_Flash_Write(u8 pBuffer[],u32 WriteAddr,u16 NumByteToWrite);//結合AB構成的地址自動增加的連續數據的寫入
#endif
flash.c
#include "flash.h"
#include "spi.h"
#include "delay.h"
//4Kbytes為一個Sector
//16個扇區為1個Block
//SST25VF016B
//容量為2M字節,共有32個Block(塊),512個Sector(扇區)
//初始化SPI FLASH的IO口
//修改狀態寄存器,允許芯片存儲器被寫
void SPI_Flash_Init(void)
{
}
//讀取SPI_FLASH的狀態寄存器
//BIT7
//SPR
//SPR:默認0,狀態寄存器保護位,配合WP使用
//TB,BP2,BP1,BP0:FLASH區域寫保護設置
//WEL:寫使能鎖定
//BUSY:忙標記位(1,忙;0,空閑)
//默認:0x00
u8 SPI_Flash_ReadSR(void)
{
}
//寫SPI_FLASH狀態寄存器
//只有SPR,TB,BP2,BP1,BP0(bit 7,5,4,3,2)可以寫!!!
void SPI_FLASH_Write_SR(u8 sr)
{
}
//SPI_FLASH寫使能
//將WEL置位
void SPI_FLASH_Write_Enable(void)
{
}
//SPI_FLASH寫禁止
//將WEL清零
void SPI_FLASH_Write_Disable(void)
{
}
//讀取芯片ID SST25VF016的是 0XBF41
u16 SPI_Flash_ReadID(void)
{
}
//讀取SPI FLASH
//在指定地址開始讀取指定長度的數據
//pBuffer:數據存儲區
//ReadAddr:開始讀取的地址(24bit)
//NumByteToRead:要讀取的字節數(最大65535即64k)
void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead)
{
}
//地址自動增加的寫數據A
void AutoAddressIncrement_WordProgramA(u8 Byte1, u8 Byte2, u32 Addr)
{
}
//地址自動增加的寫數據B
void AutoAddressIncrement_WordProgramB(u8 state,u8 Byte1, u8 Byte2)
{
}
//結合AB構成的地址自動增加的連續數據的寫入
//具有先擦除待寫區域的功能
//pBuffer:為待寫數據組
//WriteAddr:所寫數據的起始地址
//NumByteToWrite:所要寫的數據的長度
void SPI_Flash_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)
{
}
//寫入1Byte數據
//pBuffer:待寫的數據
//WriteAddr:待寫數據的地址
void Flash_WriteByte(u8* pBuffer,u32 WriteAddr)
{
}
//擦除整個芯片
//整片擦除時間:
//W25X16:25s
//W25X32:40s
//W25X64:40s
//等待時間超長...
void SPI_Flash_Erase_Chip(void)
{
}
//擦除一個扇區
//Dst_Addr:扇區地址 0~511 for w25x16
//擦除一個山區的最少時間:150ms
void SPI_Flash_Erase_Sector(u32 Dst_Addr)
{
}
//等待空閑
void SPI_Flash_Wait_Busy(void)
{
}
void SST25V_EBSY(void)
{
}
void SST25V_DBSY(void)
{
}
主函數:
#include<stm32f10x_lib.h>
#include"common.h"
#include"TFTLCD.h"
#include"spi.h"
#include"key.h"
#include"flash.h"
const u8 TEXT_Buffer[]={"Chen An SST25VF"};//待寫入flash的數據
#define SIZE sizeof(TEXT_Buffer) //計算待寫入數據的長度
int main(void)
{
}
總結:1.開始的時候,讀取FLASH的ID成功,我覺得芯片一切正常,但是寫入數據后讀回來的全是“滿屏”,糾結了一天才發現原
主站蜘蛛池模板:
欧美精品一区二区蜜桃
|
成人在线视频看看
|
97精品一区二区
|
日韩午夜网站
|
干一干操一操
|
黄色一级大片在线观看
|
午夜欧美
|
欧美精品欧美精品系列
|
97在线观视频免费观看
|
日韩欧美理论片
|
91精品国产乱码久久久久久久久
|
欧美中文字幕在线
|
国产一级视频在线
|
777zyz色资源站在线观看
|
亚洲一区二区三区免费
|
免费看av大片
|
av男人的天堂在线
|
av天天看
|
日韩一区二区三区在线观看视频
|
精品成人在线
|
视频一区欧美
|
免费在线成人
|
国产黄色网址在线观看
|
91久久综合亚洲鲁鲁五月天
|
黄色片网站在线观看
|
国产精品黄色
|
国产精品久久久久久久久久久久冷
|
www亚洲免费国内精品
|
亚洲欧美一区二区三区视频
|
国产精品久久久久久久7777
|
成人久久18免费网站
|
欧美三级在线
|
成人午夜免费网站
|
亚洲国产精品成人
|
做a网站|
黄色香蕉视频在线观看
|
超碰av人人
|
精品成人|
亚洲天堂精品久久
|
国产人免费人成免费视频
|
永久免费在线观看
|
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1