编写串行FLASH

一、基础知识

查看串行FLASH芯片

 CE:CE为片选管脚,低电平有效。上电之后,在执行一条新的指令之前,必须让/CE管脚先有 一个下降沿。
SO(MISO):SO为串行数据输出引脚,在CLK(串行时钟)管脚的下降沿输出数据。 WP:WP为写保护管脚,有效电平为低电平。高电平可读可写,低电平仅仅可读。 SI(MOSI):SI为串行数据输入引脚,数据、地址和命令从SI引脚输入到芯片内部,在CLK (串行时钟)管脚的上升沿捕获捕获数据。
CLK(SLCK):CLK为串行时钟引脚。SPI时钟引脚,为输入输出提供时钟脉冲。 HOLD:HOLD为保持管脚,低电平有效。当CE为低电平,并且把HOLD拉低时,数据输出管脚 将保持高阻态,并且会忽略数据输入管脚和时钟管脚上的信号。把HOLD管脚拉高,器件恢复 正常工作。
VCC:电源2.7V~3.6V。
GND:地

Flash是一种非易失性存储器,在原理、技术和结构上与EEPROM有显著的不同,是一种可以快速探险可现场编程的快擦写存储器。

W25Q64是大容量SPI FLASH产品。

大小:8M(Byte)(128块(Block),每块64K字节,每块16个扇区(Sector),每个扇区4K字 节,每个扇区16页,每页256个字节)
特点:Flash芯片内的数据只能由1变0,不能由0变1。


W25Q64Flash工作方式
1)W25Q64 SPI数据传输时序 W25Q64支持SPI数据传输时序模式0(CPOL = 0、CPHA = 0)和模式3(CPOL = 1、CPHA = 1), 模式0和模式3主要区别是当SPI主机硬件接口处于空闲状态时,SCLK的电平状态是高电平或者是 低电平。对于模式0来说,SCLK处于低电平;对于模式3来说,SCLK处于高电平。不过,在这两种 模式下,芯片都是在SCLK的上升沿采集输入数据,下降沿输出数据。
2)W25Q64数据格式 W25Q64数据格式为数据长度8位大小,先发高位,再发低位。 3)W25Q64传输速度 W25Q64在标准模式下支持80M bit/s速度,快速模式下支持160M bit/s速度,高速模式下支持 320M bit/s速度。

W25Q64操作原理:
通过SPI接口,用标准的SPI协议发送相应指令给flash,然后flash根据命令进行各种相关操作。
① 写使能:06H
② 读状态寄存器指令:05H
③ 写状态寄存器指令:01H
④ 读数据:03H ⑤ 页写:02H
⑥ 扇区擦除指令:20H
⑦ 块擦除指令:D8H
⑧ 芯片擦除指令:07H
⑨ 掉电指令:B9H
⑩ 读ID指令:90H

QSPI基础知识:

SPI是串行外设接口(Serial Peripheral Interface);QSPI是Quad SPI的简写,是Motorola公司推出的SPI接口的扩展,比SPI应用更加广泛。在SPI协议的基础上,Motorola公司对其功能进行了增强,增加了队列传输机制,推出了队列串行外围接口协议(即QSPI协议)。QSPI 是一种专用的通信接口,连接单、 双或四(条数据线) SPI Flash 存储介质。

该接口可以在以下三种模式下工作:
间接模式:使用 QSPI 寄存器执行全部操作
状态轮询模式:周期性读取外部 Flash 状态寄存器,而且标志位置 1 时会产生中断 (如擦除或烧写完成,会产生中断)
内存映射模式:外部 Flash 映射到微控制器地址空间,从而系统将其视作内部存储器采用双闪存模式时,将同时访问两个 Quad-SPI Flash,吞吐量和容量均可提高二倍。


 ① QUADSPI_BK1_IO1为PB0引脚
② QUADSPI_BK1_IO0为PB1引脚
③ QUADSPI_CLK为PB10引脚
④ QUADSPI_BK1_NCS为PB11引脚
⑤ LED为PC13引脚
⑥ UART1发送为PA9引脚
⑦ UART1接收为PA10引脚
⑧ 按键KEY1为PB2引脚
⑨ 按键KEY2为PB3引脚


QSPI功能简介:
• QSPI 可以使用 6 个信号连接Flash,分别是四个数据线BK1_IO0~BK1_IO3,一个时钟输出CLK, 一个片选输出(低电平有效)BK1_nCS,
它们的作用介绍如下:
• BK1_nCS:片选输出(低电平有效),适用于 FLASH 1。如果 QSPI 始终在双闪存模式下工作, 则其也可用于 FLASH 2从设备选择信号线。QSPI通讯以BK1_nCS线置低电平为开始信号,以 BK1_nCS线被拉高作为结束信号。
• CLK:时钟输出,适用于两个存储器,用于通讯数据同步。它由通讯主机产生,决定了通讯的 速率,不同的设备支持的最高时钟频率不一样,如STM32的QSPI时钟频率最大为fpclk/2,两个 设备之间通讯时,通讯速率受限于低速设备。
• BK1_IO0:在双线 / 四线模式中为双向 IO,单线模式中为串行输出适用于FLASH 1。
• BK1_IO1:在双线 / 四线模式中为双向 IO,单线模式中为串行输入适用于FLASH 1。
• BK1_IO2:在四线模式中为双向 IO,适用于 FLASH 1。
• BK1_IO3:在四线模式中为双向 IO,适用于 FLASH 1。


二、CUBE工程

选择芯片

配置时钟源

配置串口:

小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:

将开关拨到AT-MCU模式,使PC的串口与USART1之间连接。

配置QSPI:

 其引脚连接情况如下:

 

三、代码实现

1.没找到QSPI-FLASH驱动文件,让我自己写吗?

2.自己宏定义也太麻烦了吧...

3.遂放弃

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FPGA(现场可编程门阵列)是一种集成电路技术,可以在设计后进行灵活的重编程。NAND flash则是一种非易失性存储器,用于数据存储和传输。要实现FPGA驱动NAND flash,需要以下步骤: 首先,需要确定FPGA与NAND flash之间的通信接口。常用的接口包括SPI(串行外围接口)和I2C(串行总线接口)。通过这些接口,FPGA可以与NAND flash进行数据传输和控制命令交互。 其次,需要在FPGA中实现相应的逻辑电路来控制NAND flash。这些逻辑电路包括NAND flash的读取、写入和擦除操作,以及数据的缓存和错误纠正等功能。可以使用硬件描述语言(如VHDL或Verilog)来编写这些逻辑电路的代码,并在FPGA上进行编译和实现。 然后,需要将编写好的逻辑电路代码加载到FPGA中。这可以通过将代码通过特定的设计工具进行编译和综合,生成可以在FPGA上直接加载的二进制文件。将生成的二进制文件通过JTAG(联机测试与编程接口)或其他方式加载到FPGA中。 最后,在FPGA中配置好逻辑电路后,可以通过FPGA与NAND flash之间的通信接口进行控制和数据交互。FPGA可以发送读取、写入和擦除等命令给NAND flash,从而实现对其进行驱动。同时,也可以通过FPGA将数据从NAND flash读取出来,或者将数据写入到NAND flash中。 总结来说,FPGA驱动NAND flash需要确定通信接口、实现逻辑电路、加载代码到FPGA,并通过通信接口进行控制和数据交互。这样就能实现对NAND flash的有效驱动和利用。 ### 回答2: FPGA驱动NAND Flash是指在FPGA芯片中通过编程控制来对NAND Flash进行操作和传输数据。FPGA作为一种可编程逻辑器件,通过其灵活的可编程性和并行处理能力,可以实现对NAND Flash的各种功能操作。 首先,FPGA需要连接到NAND Flash,通常通过片选信号、数据总线和控制总线进行连接。FPGA通过配置其IO管脚,将数据和控制信号发送到NAND Flash,实现对它的读取和写入。同时,FPGA还需要设置正确的时序和信号处理方式,确保数据的可靠传输。 其次,FPGA需要通过编程来实现对NAND Flash的驱动。FPGA的硬件描述语言(HDL)编程可以用于控制存储器操作的时序和数据流程,包括片选和使能信号的生成,以及数据的读写操作。通过HDL编程,FPGA可以控制读取和写入的地址、数据、传输方式等参数,实现对NAND Flash的全面控制。 此外,FPGA还可以通过添加硬件逻辑和电路设计,对NAND Flash进行更高级的操作和处理。例如,可以通过FPGA的逻辑单元实现位翻转校验(BVC)和纠错码(ECC)等功能,提高数据传输和存储的可靠性。也可以通过并行处理的方式,实现多个NAND Flash的并行读取和写入,加快存储器访问速度。 总之,FPGA驱动NAND Flash是通过FPGA芯片的编程控制来实现对NAND Flash的读写和操作。通过正确配置连接和编程,FPGA可以实现对NAND Flash的高度可定制化的驱动,满足各种应用场景的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值