SPI Flash在FPGA开发中算是老熟人了,尤其像W25Q系列这种容量灵活、性价比高的存储方案。今天咱们直接扒开代码看门道,聊聊怎么用Verilog在FPGA里调教W25Q128/64/32/16这几个兄弟。
先看工程结构——顶层模块w25qxx_code_uart_top里藏着三个狠角色:SPI控制器、FIFO缓冲区和PLL时钟模块。这种铁三角组合基本就是嵌入式存储操作的标准配置。比如擦除指
初始化函数功能描述: 初始化QSPI接口,,包括复位QSPI,使能读写操作和数据总线IO函数原型:uint8_t qspi_w25q16_Init(void)
{
QSPI_CommandTypeDef s_command;
uint8_t value = W25Q128FV_FSR_QE;
/* QSPI存储器复位 */
if (qspi_w25q16_ResetMemory()
编辑 型号后面的数值除以8就是存储容量W25Q256分为3地址和4地址模式,在3地址模式下只能读16MB的数据编辑WP写保护,接低电平写保护 普通SPI模式,括号里不用管双重SPI模式,DI和DO变成IO0和IO1四重SPI模式,再加上WP当成IO2,HOLD当成IO3四个引脚都作为数据收发引脚发送3个字节地址,前2个送入页地址锁存器,最后一个送入字节地址锁存器。完
原创
2023-12-17 14:03:29
287阅读
读数据函数功能描述:从Flash内部数据地址读取一定数量的数据函数原型:uint8_t qspi_w25q16_Read(uint8_t* pData, uint32_t ReadAddr, uint32_t Size)
{
QSPI_CommandTypeDef s_command;
/* 初始化读命令 */
s_command.InstructionMode = QSPI_INS
功能描述:向Flash内部地址写数据 函数原型:uint8_t qspi_w25q16_Write(uint8_t* pData, uint32_t WriteAddr, uint32_t Size)
{
QSPI_CommandTypeDef s_command;
uint32_t end_addr, current_size, current_addr;
/* 计算写入地址
擦除整个芯片功能介绍:擦除整个Flash芯片内的所有数据函数原型:uint8_t qspi_w25q16_Erase_Chip(void)
{
QSPI_CommandTypeDef s_command;
/* 初始化擦除命令 */
s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
s_command.Instruction
功能描述:擦除一个块的数据函数原型:uint8_t qspi_w25q16_Erase_Block(uint32_t BlockAddress)
{
QSPI_CommandTypeDef s_command;
/* 初始化擦除命令 */
s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
s_command.Instructi
存储器分为两大类:ram和rom,ram就不讲了,主要讨论rom。rom最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了prom,可以自己写入一次,要是写错了,只能换一片,自认倒霉。人类文明不断进步,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再下一次,
转载
2024-09-18 09:25:22
307阅读
25Q系列提供超越普通串行闪存设备的灵活性和性能。
原创
2023-10-25 15:48:56
289阅读
W25Q80DV 是 Winbond 的一款 SPI Flash,容量大小为 8M bit。如果还没看 W25Q80DV 的数据手册,赶紧去看!
原创
2022-10-11 12:11:07
1747阅读
本篇文章就介绍如何在Linux系统下编写W25Q64芯片的驱动,完成数据存储,W25Q64支持标准SPI总线,当前驱动程序底层的代码写了两种方式,一种是采用内核提供的SPI子系统框架,一种直接采用软件模拟SPI时序的方式驱动,具体代码在第3章贴出来了。
原创
精选
2022-04-16 10:44:52
4046阅读
点赞
第一部分:W25Q128代码头文件 (W25Q128.h)#ifndef W25Q128_H
#define W25Q128_H
#include "stm32f10x.h"
#include "stdio.h"
#include "sys.h"
#include "delay.h"
#define W25Q128_CS PBout(12)
#define W25Q128_SCLK PBou
转载
2024-07-19 09:22:56
289阅读
W25Q128FV:
W25Q128JV:
区别表:
原创
2021-07-09 14:44:27
4420阅读
CY7C68013特点:Ø 支持USB2.0,内部包括USB2.0收发器、串行接口引擎(SIE)以及增强型51内核;Ø 灵活配置,可“软配置”RAM,取代了传统51的RAM和ROM,程序可以通过以下方式下载:通过USB口下载;通过外部E2PROM装载;外界存储设备(仅128引脚支持)Ø 模式灵活,可设置为主从模式,主模式下可对外部FIFO、存储器、ATAn接口设
# 从w25Q和w25L的bios芯片的不同之处来看
## 一、流程概述
在开始讨论w25Q和w25L的bios芯片的不同之处前,我们首先需要了解这两种芯片的基本特点和功能。接下来,我们将通过以下流程来帮助你理解它们之间的区别:
### 流程步骤
| 步骤 | 操作 |
| --- | --- |
| 1 | 了解w25Q和w25L的基本特点 |
| 2 | 比较w25Q和w25L的区别
原创
2024-06-26 05:12:57
244阅读
1.首先认识下W25Q16DVSIG, SOP8SPI FLASH16MBIT 2MB(4096个字节) (里面能够放字库,图片,也能够程序掉电不丢失数据放里面) 例程解说: ① 1.用到SPI库;conf.h里打开头文件 2.2M串行FLASH W25Q16初始化 SPI_FLASH_Init()
转载
2017-06-07 14:57:00
285阅读
2评论
W25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的操作。 W25Q64的擦写周期多达10W次,可将数据保存
转载
2022-01-14 15:31:53
3281阅读
如果你的产品用到 Flash,选型的关键不仅仅是需要弄清楚技术参数,封装信息也需要确认,宽体和窄体封装也意味着价格和成本的差异。其他参数参考:后缀区别作者:卫Sir,公众号:简一商业本文由 @简一商业 原创发布于CSDN,未经作者许可,禁止转载...
原创
2021-07-09 14:39:45
621阅读