精华内容
下载资源
问答
  • SPI Flash

    2018-01-04 09:51:18
    SPI FLASH是指外接口符合SPI协议的FLASH,有NOR型的SPI FLASH,也有NAND型的SPI FLASH 用在程序存储上的一般都是SPI NOR FLASH,如旺宏(MXIC)25系列的 至于NAND型的SPI FLASH,我们常用的SD卡就是了 NAND 型的...

    SPI Flash

    SPI:serialperipheral interface,串行外围设备接口
    SPI FLASH是指外接口符合SPI协议的FLASH,有NOR型的SPI FLASH,也有NAND型的SPI FLASH
    用在程序存储上的一般都是SPI NOR FLASH,如旺宏(MXIC)25系列的
    至于NAND型的SPI FLASH,我们常用的SD卡就是了
    搜索NAND 型的SPI FLASH 比 NOR 型的SPI FLASH 存储密度高,写入速度更快,而且更便宜

    NOR FLASH 分为SERIES/PARALLEL二种
    SPI FLASH就是SERIES NOR FLASH
    SPI FLASH容量都不是很大,读写速度慢,但是价格便宜,操作简单. 主要做为低阶应用。

    可以用来存储字库,以8M空间为例:

    8M(0x000000~0x7FFFFF)外部FLASH的空间分配如下:

     

    0x000000~0x000000:打印机型号

    0x000001~0x000001:打印机缺省灰度值

    0x000002~0x000003:打印机过热保护温度值

    0x000004~0x000005:打印机过热保护恢复温度值

     

    0x000006~0x01FFFF: 预留

     

    0x020000~0x020003:‘ASC’+00 ;字库1有效标志

    0x020004~0x020007:‘16K’+00 ;字库2有效标志

    0x020008~0x02000B:‘24K’+00 ;字库3有效标志

    0x02000C~0x02000F:  保留

    0x020010~0x020013:‘16FT’ ;字库4有效标志

    0x020014~0x020017:‘24FT’ ;字库5有效标志

    0x020018~0x02001B:‘16G’+00 ;字库6有效标志

    0x02001C~0x02001F:‘24G’+00 ;字库7有效标志

    0x020020~0x03FFFF: 预留

     

    0x040000~0x07FFFF: 字库1(16x8ASCII字库)

    0x080000~0x0FFFFF: 字库2(16x16GB2312简体字库)

    0x100000~0x1FFFFF: 字库3(24x24GB2312简体字库)

    0x200000~0x2FFFFF: 字库4(16x16GB2312繁体字库)

    0x300000~0x3FFFFF: 字库5(24x24GB2312繁体字库)

    0x400000~0x4FFFFF: 字库6(16x16GBK简体字库)

    0x500000~0x6FFFFF: 字库7(24x24GBK简体字库)

     

    0x700000~0x7FFFFF:预留

    展开全文
  • ch341读写spi flash的vc源代码
  • spiflash 1.81并口SPI Flash BIOS编程器,全套官方资料
  • spi flash spi oled

    2016-11-21 21:58:33
    spi flash 代码,示例
  • SPI FLASH测试程序

    2016-11-03 20:17:11
    SPI FLASH 测试程序 ,可以测试spi flash SPI FLASH test program
  • SPIFLASH例程,利用SPI接口实现对FLASH的控制
  • SPI FLASH 协议

    2015-12-30 12:44:10
    SPI FLASH 协议(FPGA新手的学习笔记:dengkanwen.com)
  • 读取厂家\设备 ID 发送 90H 指令...代码如下:void SPIFlashReadID(int *pMID, int *pDID){SPIFlash_Set_CS(0); /* 选中SPI FLASH */SPISendByte(0x90);SPIFlashSendAddr(0);*pMID = SPIRecvByte();*pDID = SPIRecvB...

    读取厂家\设备 ID

    264b2e932fe0ada65c3ceb7d3cfce466.png

    发送 90H 指令,再发送 00h 的地址,然后接收即可。

    代码如下:

    void SPIFlashReadID(int *pMID, int *pDID)

    {

    SPIFlash_Set_CS(0); /* 选中SPI FLASH */

    SPISendByte(0x90);

    SPIFlashSendAddr(0);

    *pMID = SPIRecvByte();

    *pDID = SPIRecvByte();

    SPIFlash_Set_CS(1);

    }

    两个状态寄存器

    b76bdd616c0d0a9482fb01aeab5638ff.png

    通过状态寄存器可以查询芯片此时是否忙碌、解除各种保护操作等。

    写状态寄存器

    /* 通过 BUSY 位得知芯片是否忙碌 */

    static void SPIFlashWaitWhenBusy(void)

    {

    while (SPIFlashReadStatusReg1() & 1);

    }

    /* 使能操作 */

    static void SPIFlashWriteEnable(int enable)

    {

    if (enable)

    {

    SPIFlash_Set_CS(0);

    SPISendByte(0x06);

    SPIFlash_Set_CS(1);

    }

    else

    {

    SPIFlash_Set_CS(0);

    SPISendByte(0x04);

    SPIFlash_Set_CS(1);

    }

    }

    /* 写状态寄存器 */

    static void SPIFlashWriteStatusReg(unsigned char reg1, unsigned char reg2)

    {

    SPIFlashWriteEnable(1);

    SPIFlash_Set_CS(0);

    SPISendByte(0x01);

    SPISendByte(reg1);

    SPISendByte(reg2);

    SPIFlash_Set_CS(1);

    SPIFlashWaitWhenBusy();

    }

    擦除操作

    /* erase 4K */

    void SPIFlashEraseSector(unsigned int addr)

    {

    SPIFlashWriteEnable(1);

    SPIFlash_Set_CS(0);

    SPISendByte(0x20);

    SPIFlashSendAddr(addr);

    SPIFlash_Set_CS(1);

    SPIFlashWaitWhenBusy();

    }

    读写数据

    /* program */

    void SPIFlashProgram(unsigned int addr, unsigned char *buf, int len)

    {

    int i;

    SPIFlashWriteEnable(1);

    SPIFlash_Set_CS(0);

    SPISendByte(0x02);

    SPIFlashSendAddr(addr);

    for (i = 0; i < len; i++)

    SPISendByte(buf[i]);

    SPIFlash_Set_CS(1);

    SPIFlashWaitWhenBusy();

    }

    /* read */

    void SPIFlashRead(unsigned int addr, unsigned char *buf, int len)

    {

    int i;

    SPIFlash_Set_CS(0);

    SPISendByte(0x03);

    SPIFlashSendAddr(addr);

    for (i = 0; i < len; i++)

    buf[i] = SPIRecvByte();

    SPIFlash_Set_CS(1);

    }

    芯片的操作指令表

    b1087280de1c1b7424fc27b3c9538656.png

    5d7db4af7eb49879e42ebaea71a8026f.png

    713ed9759f631301c7587634f6920b18.png

    下一篇文章写出 Flash 在 Linux 上的驱动程序。

    展开全文
  • SPI Flash读取操作

    2021-01-06 11:36:36
    今天看到有人在问SPI flash读取数据的方法,为什么这样读取? 先给出一个函数,SPI的读取函数: /*! \brief read a block of data from the flash \param[in] pbuffer: pointer to the buffer that receives the ...
  • 串口SPI FLASH实验

    2019-02-25 09:49:17
    通过串口收发指令,然后通过FPGA识别指令内容,控制SPI FLASH的读写擦过程
  • SPI Flash Dtatsheet

    2013-11-22 21:54:57
    Spi Flash 的文件详细资料,包括时序,cmd
  • spi flash driver

    2013-05-11 23:26:50
    使用模拟io方式实现spi flash 驱动
  • SPI Flash介绍

    2021-02-22 10:26:49
  • SPIFlash W25Q64 新唐单片机程序 可读,可写, 基本的操作 SPIFlash W25Q64 新唐单片机程序 可读,可写, 基本的操作
  • SPI FLASH对换表

    2012-11-07 14:29:54
    SPI Flash一般运用在MCU的数据存储上,比如带有LCD的图像数据一般会存储在SPI Flash中。 SPI Flash影响读写数据稳定性有几个方面: 1. SPI Flash的时钟频率。频率越高,越容易受到外界干扰,数据传输就可能出现错误...
  • spi flash controller

    2012-05-24 09:14:08
    SPI FLASH verilog源代码,作为一个模块用在芯片
  • 本文主要是关于SPI FLASH与NOR FLASH的相关介绍,并着重对SPI FLASH与NOR FLASH的区别进行了详细的区分。  SPI FLASH  首先它是个FlashFlash是什么东西就不多说了(非易失性存储介质),分为NOR和NAND两种...

    转自:http://m.elecfans.com/article/778203.html

    本文主要是关于SPI FLASH与NOR FLASH的相关介绍,并着重对SPI FLASH与NOR FLASH的区别进行了详细的区分。

      SPI FLASH

      首先它是个Flash,Flash是什么东西就不多说了(非易失性存储介质),分为NOR和NAND两种(NOR和NAND的区别本篇不做介绍)。SPI一种通信接口。那么严格的来说SPI Flash是一种使用SPI通信的Flash,即,可能指NOR也可能是NAND。但现在大部分情况默认下人们说的SPI Flash指的是SPI NorFlash。早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Norflash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Norflash所取代。同时不同容量的SPI Norflash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。

      SPI FLASH与NOR FLASH的区别 详解SPI FLASH与NOR FLASH的不一样

      NorFlash根据数据传输的位数可以分为并行(Parallel,即地址线和数据线直接和处理器相连)NorFlash和串行(SPI,即通过SPI接口和处理器相连)NorFlash;区别主要就是:1、SPI NorFlash每次传输一bit位的数据,parallel连接的NorFlash每次传输多个bit位的数据(有x8和x16bit两种); 2、SPI NorFlash比parallel便宜,接口简单点,但速度慢。

      NandFlash是地址数据线复用的方式,接口标准统一(x8bit和x16bit),所以不同容量再兼容性上基本没什么问题。但是目前对产品的需求越来越小型化以及成本要求也越来越高,所以SPI NandFlash渐渐成为主流,并且采用SPI NANDFlash方案,主控也可以不需要传统NAND控制器,只需要有SPI接口接口操作访问,从而降低成本。另外SPI NandFlash封装比传统的封装也小很多,故节省了PCB板的空间。

      今天主要说下SPI NorFlash。

      二、有毛用啊

      节省成本,减小封装,存储数据。

      三、怎么用啊

      怎么用说白了对于Flash就是读写擦,也就是实现flash的驱动。先简单了解下spi flash的物理连接。

      之前介绍SPI的时候说过,SPI接口目前的使用是多种方式(具体指的是物理连线有几种方式),Dual SPI、Qual SPI和标准的SPI接口(这种方式肯定不会出现在连接外设是SPI Flash上,这玩意没必要全双工),对于SPI Flash来说,主要就是Dual和Qual这两种方式。具体项目具体看了,理论上在CLK一定的情况下, 线数越多访问速度也越快。我们项目采用的Dual SPI方式,即两线。

      当前涉及到具体的SPI flash芯片类型了,所以必须也得参考flash的datasheet手册了。我们以W25Q64JVSSIQ为例。

      这是基本信息的介绍,然后看下具体IO的定义

      这个是WSON封装的管脚定义,其他详细信息参考datasheet。

      硬件驱动的话也是和芯片强相关的,因为读写擦都是和硬件时序相关的,所以必须得参考硬件datasheet手册。

      上面的datasheet都详细说明了每个操作的时序周期发送的命令。上图中,第一列是指令名称,第二列是指令编码,第三列及以后的指令功能与对应的指令有关。带括号的字节内容为flash向主机返回的字节数据,不带括号则是主机向flash发送字节数据。

      A0~A23:flash内部存储器地址;MID0~MID7:制造商ID;ID0~ID15:flash芯片ID;D0~D7:flash内部存储的数据;dummy:指任意数据。

      比如获取deviceID:

      表示该命令由这四个字节组成,其中dummy意为任意编码,即这三个字节必须得发数据,但这些数据是任意的,上图命令列表中带括号的字节数据表示由FLASH返回给主机的响应,可以看到deviceID命令的第5个字节为从机返回的响应,(ID7~ID0),即返回设备的ID号。

      代码如下:

      uint32_t Get_Flash_DeviceID(void)

      {

      uint8_t deviceID= 0x00;

      spiflashReset();

      spi_write( 0xAB);

      spi_write( Dummy);

      spi_write( Dummy);

      spi_write( Dummy);

      deviceID = spi_write( Dummy);

      spi_write( Dummy);

      spiflashSet() ;

      return deviceID;

      }

      NOR FLASH

      NOR Flash是一种非易失闪存技术,是Intel在1988年创建。

      是现在市场上两种主要的非易失闪存技术之一。Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable Read - Only Memory)一统天下的局面。紧接着,1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。NAND的结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理需要特殊的系统接口。通常读取NOR的速度比NAND稍快一些,而NAND的写入速度比NOR快很多,在设计中应该考虑这些情况。——《ARM嵌入式Linux系统开发从入门到精通》 李亚峰 欧文盛 等编著 清华大学出版社 P52 注释 API Key

      性能比较

      flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。

      由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

      执行擦除时块尺寸的不同进一步拉大了NOR和NAND之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。

      l 、NOR的读速度比NAND稍快一些。

      2、 NAND的写入速度比NOR快很多。

      3 、NAND的4ms擦除速度远比NOR的5s快。

      4 、大多数写入操作需要先进行擦除操作。

      5 、NAND的擦除单元更小,相应的擦除电路更少。

      此外,NAND的实际应用方式要比NOR复杂的多。NOR可以直接使用,并可在上面直接运行代码;而NAND需要I/O接口,因此使用时需要驱动程序。不过当今流行的操作系统对NAND结构的Flash都有支持。此外,Linux内核也提供了对NAND结构的Flash的支持。

      详解

      NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。

      像“flash存储器”经常可以与相“NOR存储器”互换使用。许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。

      NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

      NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理需要特殊的系统接口。

      SPI FLASH与NOR FLASH的区别

      1、SPI Flash (即SPI Nor Flash)是Nor Flash的一种;

      2、NOR Flash根据数据传输的位数可以分为并行(Parallel)NOR Flash和串行(SPI)NOR Flash;

      3、SPI Nor Flash每次传输一个bit位的数据,parallel Nor Flash每次传输多个bit位的数据(有x8和x16bit两种);

      4、SPI Nor Flash比parallel便宜,接口简单点,但速度慢。

      SPI FLASH是指外接口符合SPI协议,也就是串口。

      NOR FLASH与NAND 是相对的,指的是芯片内部的串型和并行。

      SPI FLASH是NOR FLASH的一种。

      结语

      关于SPI FLASH与NOR FLASH的相关介绍就到这了,如有不足之处欢迎指正。

    转载于:https://www.cnblogs.com/eleclsc/p/11393461.html

    展开全文
  • spi flash datasheet

    2014-03-14 17:20:38
    pdf for spi flash datasheet
  • SPI FLASH 仿真模型

    2015-08-20 07:19:27
    镁光的SPI FLASH仿真模型,里面带有tb文件,脚本。可以直接仿真
  • STM32_FatFS_SPI Flash

    2021-01-12 10:45:15
    STM32_FatFS_SPI Flash
  • SpiFlash驱动代码

    2018-07-27 13:27:24
    附件为spi flash的驱动代码,均已调试OK,有需求的可下载查看。
  • 本文提出一个基于FPGA的SPI Flash读写硬件实现方案,该方案利用硬件对SPI Flash进行控制,能够非常方便地完成Flash的读写、擦除、刷新及预充电等操作
  • SPI FLASH EEPROM

    2014-02-25 22:02:33
    我司主推小容量存储 spi flash ,EEPROM(24C02,24C04,24C08,24C16,24C32,24C64,24C128,24C256,93C46) IC 价格实惠,可以代烧录。联系方式15889680523 廖生
  • SPI flash多重配置FPGA 介绍了通过SPI FLASH进行多重加载fpga的方法
  • 本文提出一个基于FPGA的SPI Flash读写硬件实现方案,该方案利用硬件对SPI Flash进行控制,能够非常方便地完成Flash的读写、擦除、刷新及预充电等操作,同时编写的SPI Flash控制器IP核能够进行移植和复用。
  • SST SPI flash part

    2012-03-31 10:53:21
    which SST Spi flash rom datasheet .
  • Xilinx FPGA SPI FLASH外挂FLASH启动设置,步骤详细,每步骤都有截图,如何生成MCS文件,如何匹配所使用的FLASH型号,如何通过SPI加载MCS文件,非常详细
  • SPI FLASH测试

    2020-03-17 19:52:33
    1.遇到问题,读取SPI FLASH ID不稳定,测试发现是芯片使用了JLINK电源,而JLINK连接的是USB HUB,USB HUB供电不足,导致硬件系统有时候供电在2.8V一下。有时候飘到2.7V,而SPI FLASH最低工作电压为2.7V。修改过后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,258
精华内容 10,103
关键字:

spiflash