精华内容
下载资源
问答
  • spi flash芯片16脚转8脚

    2014-03-18 00:56:49
    spi flash芯片16脚转8脚详细
  • W25Q80BV是台湾华邦电子(Winbond)生产的8M-bit串行flash芯片。主要特性有: 工作电压:2.5 ~ 3.6 V 功耗:读写(active)时4mA,低功耗(power-down)时<1μA 容量:8M-bit/1M-byte,包含4096个页(每页大小...

    W25Q80BV是台湾华邦电子(Winbond)生产的8M-bit串行flash芯片。主要特性有:

    • 工作电压:2.5 ~ 3.6 V
    • 功耗:读写(active)时4mA,低功耗(power-down)时<1μA
    • 容量:8M-bit/1M-byte,包含4096个页(每页大小256字节)
    • 接口:Standard/Dual/Quad SPI,支持时钟频率最高104MHz
    • 支持以4/32/64k-bytes为单位进行Sector/Block擦除
    • 一次写入最多256字节
    • 软件/硬件写保护功能
    • 大于10万次擦除/编程寿命
    • 大于20年的数据保存时间
    • 封装:SOIC/USON/WSON/PDIP

    管脚定义
    在这里插入图片描述
    在这里插入图片描述

    与Arduino的连接
    采用工作于3.3V的Pro Mini版本进行简单调试,接法如下。

    在这里插入图片描述
    其中HOLD脚须上拉接到3.3V,否则器件无法正常工作;WP脚可以浮空。

    W25Q80BV Pro Mini (3.3V/8MHz)

    VCC <------> 3.3V

    GND <------> GND

    /CS <------> SS (D10)

    DI <------> MOSI (D11)

    DO <------> MISO (D12)

    CLK <------> SCK (D13)

    功能调试

    1. 与I2C不同,利用SPI库操作时,读和写都用同一个函数SPI.transfer()实现。

    2. 读取时,可以任意地址、任意长度进行读取。

    3. 与EEPROM不同,SPI Flash写入前,需要对写入的存储空间进行擦除(Erase)操作,否则写入不成功。芯片支持Chip Erase(整片擦除)、Block Erase(32K bytes/64K bytes块擦除)和Sector Erase(4K bytes扇区擦除)。

    4. 当写操作对应的地址空间到达page的边界,再继续写入时目的地址会自动roll over到本页的起始位置。

    测试代码

      1 /*
      2     communication with W25Q80BV (1 MBYTE SPI FLASH) using Arduino Pro Mini 3.3V/8MHz
      3     Reference: http://www.instructables.com/id/How-to-Design-with-Discrete-SPI-Flash-Memory/?ALLSTEPS
      4 */
      5 
      6 // the SPI bus uses pins 10 (SS), 11 (MOSI), 12 (MISO), and 13 (SCK)
      7 
      8 #include <SPI.h>
      9 
     10 #define READ_JEDEC_ID 0x9F
     11 #define READ_STATUS_1 0x05
     12 #define READ_DATA 0x03
     13 #define WRITE_ENABLE 0x06
     14 #define PAGE_PROGRAM 0x02
     15 #define CHIP_ERASE 0xC7
     16 
     17 byte pageBuffer[256];
     18 char str[] = "An apple a day keeps the doctor away."; //short than 256
     19 
     20 void setup()
     21 {
     22     SPI.begin();
     23     SPI.setDataMode(SPI_MODE0);
     24     SPI.setBitOrder(MSBFIRST);
     25     Serial.begin(9600);
     26 
     27     ReadID();
     28     EraseChip();
     29     WritePage(0x1234, str, sizeof(str));
     30 }
     31 
     32 void loop()
     33 {
     34     ReadPage(0x1234, pageBuffer, sizeof(str));
     35 
     36     for(int i = 0; i < sizeof(str); i++)
     37     {
     38         Serial.print(char(pageBuffer[i]));
     39     }
     40     Serial.println();
     41 
     42     delay(2000);
     43 }
     44 
     45 void CheckBusy()
     46 {
     47     digitalWrite(SS, HIGH);
     48     digitalWrite(SS, LOW);
     49     SPI.transfer(READ_STATUS_1);
     50     while(SPI.transfer(0) & 0x01); 
     51     digitalWrite(SS, HIGH);
     52 }
     53 
     54 void ReadID()
     55 {
     56     digitalWrite(SS, HIGH);
     57     digitalWrite(SS, LOW);
     58     SPI.transfer(READ_JEDEC_ID);
     59     byte manuID = SPI.transfer(0);
     60     byte memoType = SPI.transfer(0);
     61     byte capa = SPI.transfer(0);
     62     digitalWrite(SS, HIGH);
     63 
     64     Serial.print("Manufacturer ID: "); Serial.println(manuID, HEX);
     65     Serial.print("Memory Type: "); Serial.println(memoType, HEX);
     66     Serial.print("Capacity : "); Serial.println(capa, HEX);
     67 
     68     CheckBusy();
     69 }
     70 
     71 void ReadPage(word pageNumber, byte pageBuffer[], int length) 
     72 {
     73     // pageNumber: 16-bit data
     74     digitalWrite(SS, HIGH);
     75     digitalWrite(SS, LOW);
     76     SPI.transfer(READ_DATA);
     77     SPI.transfer((pageNumber >> 8) & 0xFF);
     78     SPI.transfer(pageNumber & 0xFF);
     79     SPI.transfer(0);
     80     for(int i = 0; i < length; i++)
     81     {
     82         pageBuffer[i] = SPI.transfer(0);
     83     }
     84     digitalWrite(SS, HIGH);
     85     CheckBusy();
     86 }
     87 
     88 void WritePage(word pageNumber, char pageBuffer[], int length) 
     89 {
     90     digitalWrite(SS, HIGH);
     91     digitalWrite(SS, LOW);  
     92     SPI.transfer(WRITE_ENABLE);
     93     digitalWrite(SS, HIGH);
     94     digitalWrite(SS, LOW);  
     95     SPI.transfer(PAGE_PROGRAM);
     96     SPI.transfer((pageNumber >>  8) & 0xFF);
     97     SPI.transfer(pageNumber & 0xFF);
     98     SPI.transfer(0);
     99     for(int i = 0; i < length; i++)
    100     {
    101         SPI.transfer(byte(pageBuffer[i]));
    102     }
    103     digitalWrite(SS, HIGH);
    104     CheckBusy();
    105 }
    106 
    107 void EraseChip()
    108 {
    109     digitalWrite(SS, HIGH);
    110     digitalWrite(SS, LOW);  
    111     SPI.transfer(WRITE_ENABLE);
    112     digitalWrite(SS, HIGH);
    113     digitalWrite(SS, LOW);  
    114     SPI.transfer(CHIP_ERASE);
    115     digitalWrite(SS, HIGH);
    116     CheckBusy();
    117 }
    

    View Code
    读取芯片的ID信息,向W25Q80BV写入一段字符串,再将写入的信息反复读出:
    在这里插入图片描述
    参考资料
    W25Q80BV datasheet - Winbond
    Arduino - SPI
    Designing with Discrete SPI Flash Memory - Instructables
    Flash芯片硬件特性

    转载于:https://www.cnblogs.com/zlbg/p/4246721.html

    展开全文
  • 目前好多新型号的笔记本及路由器的存储芯片,采用25 SPI SOP16封装的芯片,如MX25L3205等芯 片;虽然目前好多编程器可以支持MX25L3205的芯片,但都是支持SOP8封装的MX25L3205芯片,却无法 直接支持SOP16封装的MX25L...
  • 内容 :SPI Flash芯片烧写 来自 :时间的诗 打开 iMPACT   1、双击 Boundary Scan 2、在 右边的 空间区域 右键单击   已经找到了FPGA 芯片,但并未找到 Flash 芯片。 ...

    需求说明:XILINX操作基本知识

    内容       :SPI Flash芯片烧写

    来自       :时间的诗


    打开 iMPACT

     

    1、双击 Boundary Scan

    2、在 右边的 空间区域 右键单击

     

    已经找到了FPGA 芯片,但并未找到 Flash 芯片。

    选  NO 不配置 bit 文件至 FPGA , 当前配置为 下载 bit 流至 FGPA的对话窗。

     

    要下载配置文件至 Flash芯片,必须先准备相应的文件。即 把 bit流  文件转为 Flash 芯片可以接受 mcs 文件。

     

     

    1、选择SPI Flash 类型的设备 

    2、选择存储器容量  , 然后 添加设备

    3、修改输出路径及文件名。

     

    完成后会弹出添加 bit 文件的对话框。

     

    然后选 NO  不再添加 文件。

     

     

    此处生成SPI下载所需的  .mcs 文件 

     

    双击 Boundary Scan

     

    添加 SPI Flash

    选择刚生成的文件。

     

    然后选择 SPI PROM 的类型, 及型号 、数据位宽。

     

    完成后 Pogram 即可写入至 SPI  Flash.

     

     

    FPGA  Flash 上电配置原理参考


    展开全文
  • 项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析: 1、先粘贴一些flash的理论部分: ...

    项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分

    析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析:

    1、先粘贴一些flash的理论部分:

           

     MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。

     如图所示,MTD设备通常可分为四层,从上到下依次是:设备节点、MTD设备层、MTD原始设备层、硬件驱动层。

    Flash硬件驱动层:(相当于spi driver/i2c driver)Flash硬件驱动层负责对Flash硬件的读、写和擦除操作。MTD设备的Nand Flash芯片的驱动则drivers/mtd/nand/子目录下,Nor Flash芯片驱动位于drivers/mtd/chips/子目录下。

    MTD原始设备层:(相当于spi master/i2c client)用于描述MTD原始设备的数据结构是mtd_info,它定义了大量的关于MTD的数据和操作函数。其中mtdcore.c:  MTD原始设备接口相关实现,mtdpart.c :  MTD分区接口相关实现。

    MTD设备层:基于MTD原始设备,linux系统可以定义出MTD的块设备(主设备号31)字符设备(设备号90)。其中mtdchar.c :  MTD字符设备接口相关实现,mtdblock.c : MTD块设备接口相关实现。

    设备节点:通过mknod在/dev子目录下建立MTD块设备节点(主设备号为31)MTD字符设备节点(主设备号为90)。通过访问此设备节点即可访问MTD字符设备和块设备。

    2、关于spi flash驱动的调用过程。

          A、spi flash硬件驱动层部分

               

                 调用module_spi_driver注册spi的驱动,另外在平台代码arch/arm/mach-iproc/flash.c中调用了late_initcall来加载硬件设备信息。

                

                    

                 该函数填充了spi_board_info结构体,调用了spi_register_board_info向内核注册spi device信息,包括了芯片片选,总线编号,总线时钟,通信模式等,接下来在系统启动过程中,设备和驱动的匹配,当spi driver中的name与device中的name相同的时候则回调spi driver中的probe函数,在probe函数中对结构体m25p结构体成员mtd_info结构体赋值,并且调用了mtd原始设备层中的函数mtd_device_parse_register函数向mtd层挂接一个设备。


        B、mtd原始设备层部分(driver/mtd/mtdcore.c)

              mtd原始设备层部分即相当于通过init_mtd函数向内核注册这样一种总线,其中包括了mtd设备的擦除读写方法。

             



              这里我只关注了擦除读写部分:

              int mtd_erase(struct mtd_info *mtd, struct erase_info *instr)

              int mtd_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,u_char *buf)

              int mtd_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen,const u_char *buf)

              这些方法是在硬件设备层probe函数中被初始化赋值的。

         C、mtd设备层部分(driver/mtd/mtdchar.c)

              该层为linux系统提供一些文件操作接口供应用程序调用,包括设备的打开,关闭,读写等的操作接口,调用init_mtdchar函数注册fops结构体,至此就是整个框架的简单分析说明。由上到下,依次是设备节点的操作调用到mtd设备层接口,进而调用到mtd原始设备层的读写擦除接口,接着调用spi flash的硬件驱动接口部分,最后驱动硬件。

              系统启动后,spi flash部分可以看到在/sys/bus/spi/device/spi1.0目录下cat modalias会有显示spi:m25p80

              mtd设备层部分可以在sys/class/mtd/目录下看到:

             















    
    
    展开全文
  • STM32实测存储芯片SST25vfxxx底层驱动 。。。。。。。。
  • xilinx Spartan 6 FPGA 配置 SPI Flash 芯片

    万次阅读 2012-06-05 09:14:51
    打开 iMPACT   1、双击 Boundary Scan 2、在 右边的 空间区域 右键单击 ...已经找到了FPGA 芯片,但并未找到 ...要下载配置文件至 Flash芯片,必须先准备相应的文件。即 把 bit流 文件转为 Flash 芯片可以

     

    打开 iMPACT

     

    1、双击 Boundary Scan

    2、在 右边的 空间区域 右键单击

     

    已经找到了FPGA 芯片,但并未找到 Flash 芯片。

    选  NO 不配置 bit 文件至 FPGA , 当前配置为 下载 bit 流至 FGPA的对话窗。

     

    要下载配置文件至 Flash芯片,必须先准备相应的文件。即 把 bit流  文件转为 Flash 芯片可以接受 mcs 文件。

     

     

    1、选择SPI Flash 类型的设备 

    2、选择存储器容量  , 然后 添加设备

    3、修改输出路径及文件名。

     

    完成后会弹出添加 bit 文件的对话框。

     

    然后选 NO  不再添加 文件。

     

     

    生成  mcs 文件 

     

    双击 Boundary Scan

     

    添加 SPI Flash

    选择刚生成的文件。

     

    然后选择 SPI PROM 的类型, 及型号 、数据位宽。

     

    完成后 Pogram 即可写入至 SPI  Flash.

     

     

    FPGA  Flash 上电配置原理参考

     


    展开全文
  • ISE 13 Spartan 6 FPGA 配置 SPI Flash 芯片

    千次阅读 2011-07-22 12:13:52
    开发板http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,836&Prod=ATLYS 16Mbyte x4 SPI Flash for configuration & data storage 打开 iMP
  • W25Q32芯片是一个可以通过SPI(串行外围设备接口)操作的flash存储器,这篇文章备忘和总结一下英文版数据手册的一些解读。有关时序及具体用STC单片机编写程序的内容等下一篇文章。 一、芯片引脚功能 我买的是8引脚、...
  • 接着上一篇文章,由于W25Q32芯片是一个存储器芯片,先对这个芯片有关存储器的一些概念进行解读。 一、存储器相关知识 1、存储器的三个单位: 存储器三个等级:页(Page),扇区(sector),块(block) 2、单位...
  • 一、序言 序言对这篇文章进行一个总体的说明: 1、这部分是根据手册写程序,因此采用手册截图+程序截图的...而且针对芯片比较偏的应用没有给出程序,只是具备基础的函数模块,方便对芯片进行扩展应用时调用。其中芯片
  • Jlink烧写SPI Flash存储芯片(W25QXX)

    千次阅读 2019-08-21 10:46:00
    JLink支持SPI协议,可以使用JFlashSPI.exe来烧录SPI FLASH芯片。 JLink的20PIN管脚定义如下: 而SPI接口所使用的接口与JTAG是复用的。 管脚序号 JTAG定义 SPI定义 5 TDI MOSI 7 TMS NSS ...
  • SPI FLASH字库芯片应用在TFT彩屏nokia5110。现在市场上的大部分TFT 彩屏都是不带字库的,我们在显示的时候都需要用到字模数据,而字模数据是比较占用单片机的内存的。特别是需要显示汉字的时候还要辛苦地取字模!!...
  • arduino使用SPIFlash库 读写Flash芯片

    千次阅读 2018-02-03 08:59:57
    SPIFlash库 – SPI华邦电子闪存Flash芯片arduino库 GITHUB 工程地址:SPIFlash 该库是用于华邦串行闪存芯片的库。目前的形式支持识别闪存芯片和它的各种功能;自动地址分配管理;在不同位置读写数据类型bytes/chars/...
  • SPI FLASH裸片就直接烧写,在PCBA上需把SPI FLASH与单片机的接口设置为输入浮空。 1.硬件连接和软件使用说明: ...2.J-Flash SPI的配置,具体参数根据使用的FLASH的...Auto下载程序到Flash芯片失败,就点击Target->Prog
  • Jlink使用技巧之烧写SPI Flash存储芯片

    万次阅读 2019-01-12 22:04:24
    前言 大多数玩单片机的人都知道Jlink可以烧写Hex文件,作为ARM仿真调试器,但是知道能烧写SPI Flash的人应该不多,本篇文章将介绍如何使用...要烧写程序或读取程序的的Flash芯片SPI协议的Flash都可以,如W25Q128。...
  • 关于SPI协议本身,从前面两篇博客中已经有了初步认识,直接来看下外接的设备——spiflash 芯片依然是s3c2440,flash则是winbond的在这里插入图片描述W25Q16DV 首先对spiflash做最基本的测试,Read Manufacturer/...
  • GD25Q64C spi flash datasheet

    2017-11-30 11:57:36
    GD25Q64C spi flash芯片的datasheet,详细介绍该芯片的寄存器
  • S25FL128S是SPI flash芯片文档;ug953-vivado-7series-libraries.pdf是与Xilinx IP相关的文档 2. src/包含所有源代码 3. sim/包含所有仿真所需文件(库文件过大需要自己从Vivado编译) 4. flash/包含Vivado 工程文件
  • <div><p><a href="https://github.com/armink/SFUD"><strong>SFUD</strong> 是一款使用 JEDEC SFDP 标准的串行 (SPI) Flash 通用驱动库</a> ,将 SFUD 引入后,使得 RTT 可以驱动 更多型号的 SPI Flash...
  • 程序没什么好说的,软件模拟SPI驱动的网上也是挺多的,不过要说一下的就是SST26VF064这款芯片与其他FLASH不同的是,它上电之后有写保护位,搞了好一阵子都没有发现这个原因,后面还是我师傅发现要首先取消掉它的...
  • 至少要选一个好一点的MCU[需要高速SPI接口],还需要自己移植文件系统,还需要一颗音频的解码芯片,可想而知开发难度真的是很大。同时高昂的成本也是一般的产品所不能接收的。 随着技术的发展,现在芯片的集成度也是...
  • stm32 spi flash u盘

    千次阅读 2017-05-03 17:23:16
    ALIENTEK 战舰STM32开发板板载了一个SD卡插槽,可以用来接入SD卡,另外战舰STM32开发板板载了一个8M字节的SPI FLASH芯片,通过STM32的USB接口,我们可以实现一个简单的USB读卡器,来读写SD卡和SPI FLASH。...
  • 通过verilog编写语言实现读写操作SPIflash芯片,经过验证可用,能够实现读取芯片DEVICE id Cyclone IV E系列的EP4CE10F17C8 W25Q128BV
  • MT6261D芯片系列SPI flash 问题分析: 描述: MT6261D 系列的SPI bus 是否可以外灌SPI flash? -----暂时来看不行,原因为: ①MT6261D 系列的SPI bus 的速率只有48M ,而SPI flash 的速率一般为104M ,所以速率...
  • SPI-Flash

    千次阅读 2016-05-26 16:17:04
    1.不同的SPIFLASH芯片可能会提供的擦除方式:扇区擦除(4KBytes),半块擦除(32KBytes),块擦除(64KBytes),片擦除。 2.不同的SPIFLASH芯片可能会提供的编程方式(也就是写数据):页编程(256Bytes),扇区...
  • protues 中SPI接口串行flash芯片M45PE80的仿真,包含了擦除及字符串读写(the simulation the protues SPI interface serial flash chip M45PE80, erase and string to read and write)
  • 采用下图的方式一(这两种方式都已经支持...使用这个转接板,下面所有模式都支持:2、比如我们要实现1拖4脱机烧录,我们就可以将要烧录的四片SPI Flash芯片都放到1拖4转接板中,然后TOOL进入1拖4界面:3、我们这里烧录

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,163
精华内容 465
关键字:

spiflash芯片