当前位置: 首页 > news >正文

norflash.h

/**
****************************************************************************************************
* @file norflash.h
* @author 正点原子团队(ALIENTEK)
* @version V1.0
* @date 2020-04-24
* @brief NOR FLASH(25QXX) 驱动代码
* @license Copyright (c) 2020-2032, 广州市星翼电子科技有限公司
****************************************************************************************************
* @attention
*
* 实验平台:正点原子 STM32F103开发板
* 在线视频:www.yuanzige.com
* 技术论坛:www.openedv.com
* 公司网址:www.alientek.com
* 购买地址:openedv.taobao.com
*
* 修改说明
* V1.0 20200424
* 第一次发布
*
****************************************************************************************************
*/

#ifndef __norflash_H
#define __norflash_H

#include "../../SYSTEM/sys/sys.h"


/******************************************************************************************/
/* NORFLASH 片选信号 */
#define NORFLASH_CS(x) do{ x ? \
HAL_GPIO_WritePin(NORFLASH_CS_GPIO_Port, NORFLASH_CS_Pin, GPIO_PIN_SET) : \
HAL_GPIO_WritePin(NORFLASH_CS_GPIO_Port, NORFLASH_CS_Pin, GPIO_PIN_RESET); \
}while(0)

/* FLASH芯片列表 */
#define W25Q80 0XEF13 /* W25Q80 芯片ID */
#define W25Q16 0XEF14 /* W25Q16 芯片ID */
#define W25Q32 0XEF15 /* W25Q32 芯片ID */
#define W25Q64 0XEF16 /* W25Q64 芯片ID */
#define W25Q128 0XEF17 /* W25Q128 芯片ID */
#define W25Q256 0XEF18 /* W25Q256 芯片ID */
#define BY25Q64 0X6816 /* BY25Q64 芯片ID */
#define BY25Q128 0X6817 /* BY25Q128 芯片ID */
#define NM25Q64 0X5216 /* NM25Q64 芯片ID */
#define NM25Q128 0X5217 /* NM25Q128 芯片ID */

extern uint16_t norflash_TYPE; /* 定义FLASH芯片型号 */

/* 指令表 */
#define FLASH_WriteEnable 0x06
#define FLASH_WriteDisable 0x04
#define FLASH_ReadStatusReg1 0x05
#define FLASH_ReadStatusReg2 0x35
#define FLASH_ReadStatusReg3 0x15
#define FLASH_WriteStatusReg1 0x01
#define FLASH_WriteStatusReg2 0x31
#define FLASH_WriteStatusReg3 0x11
#define FLASH_ReadData 0x03
#define FLASH_FastReadData 0x0B
#define FLASH_FastReadDual 0x3B
#define FLASH_FastReadQuad 0xEB
#define FLASH_PageProgram 0x02
#define FLASH_PageProgramQuad 0x32
#define FLASH_BlockErase 0xD8
#define FLASH_SectorErase 0x20
#define FLASH_ChipErase 0xC7
#define FLASH_PowerDown 0xB9
#define FLASH_ReleasePowerDown 0xAB
#define FLASH_DeviceID 0xAB
#define FLASH_ManufactDeviceID 0x90
#define FLASH_JedecDeviceID 0x9F
#define FLASH_Enable4ByteAddr 0xB7
#define FLASH_Exit4ByteAddr 0xE9
#define FLASH_SetReadParam 0xC0
#define FLASH_EnterQPIMode 0x38
#define FLASH_ExitQPIMode 0xFF

/* 普通函数 */
void norflash_init(void); /* 初始化25QXX */
uint16_t norflash_read_id(void); /* 读取FLASH ID */
void norflash_write_enable(void); /* 写使能 */
uint8_t norflash_read_sr(uint8_t regno); /* 读取状态寄存器 */
void norflash_write_sr(uint8_t regno,uint8_t sr); /* 写状态寄存器 */

void norflash_erase_chip(void); /* 整片擦除 */
void norflash_erase_sector(uint32_t saddr); /* 扇区擦除 */
void norflash_read(uint8_t *pbuf, uint32_t addr, uint16_t datalen); /* 读取flash */
void norflash_write(uint8_t *pbuf, uint32_t addr, uint16_t datalen); /* 写入flash */

#endif

http://www.jsqmd.com/news/1297908/

相关文章:

  • Windows下基于VSCode与GCC的STM32开发环境搭建与调试实战
  • MD5算法在电商安全中的应用与升级方案
  • 开关电源DCM模式:轻载啸叫与低频纹波的根源分析与应对策略
  • 文华财经期货指标公式开发与实战应用
  • C++继承与多态:从语法到实战的面向对象编程进阶指南
  • 25.5万起!行业首款“智能可变大空间SUV”小米澎程N70 Max、N90 Max正式开启预售
  • 掌握20+技巧与AI加速,文案精准戳中客户,轻松提升销量
  • SKY77652-31放大器芯片与MIPI RFFE接口技术解析
  • Android截屏录屏监听实战:兼容性方案与安全边界解析
  • 南安值得推荐的别墅装修大理石生产工厂:升级 - 品牌推广大师
  • 简单的中间人攻击实验
  • 跨境电商运营策略与物流优化指南
  • 2026甄选:大连茗品饰家装饰装修工程有限公司,专业打造田园美宅的可靠品牌 - 优企名品
  • FIFA 23 Live Editor完整指南:免费开源游戏修改器终极教程
  • 90% 的人在堆 Agent 编排,但终极形态是 Swarm
  • STM32 DFSDM外设详解:高精度信号采集与数字滤波实战指南
  • 拼多多虚拟类目自动玩法,机器人回复发货新手适用
  • Android游戏上架Google Play合规指南:目标API级别与数据安全声明实战
  • openjudge1.6石头剪刀布
  • 标记永久化:原理、实现与应用
  • 2026年7月直插数码屏/数字数码屏公司推荐分析_广东宏齐光电子科技有限公司 - 行业平台推荐
  • CANoe实战指南:从环境搭建到自动化测试的汽车电子开发全流程
  • 如何高效完成嵌入式系统作业:STM32智能温控设计
  • 学术论文写作哪个AI工具最专业?2026实测对比,科研人按需选择
  • 基于8051单片机的HRTOS事件通信实例:实现任务间同步
  • 上海烂尾楼改造柱加固公司选择哪家 - 品牌推广大师
  • UE5插件打包兼容性:从崩溃日志到系统排查的实战指南
  • STM32实现麦克纳姆轮底盘丝滑运动控制:从运动学原理到双闭环PID实战
  • C++实现半导体设备SECS/GEM通信:从协议原理到EAP模块开发实战
  • 2026年直播机构排名:哪家培训真正靠谱又实用?