reference :   PG153-AXI Quad SPI v3.2 LogiCORE IP Product Guide.pdf

在使用MicroBlaze过程中,调用了此IP,所以有必须仔细学习下;

名词:

XIP: eXecute In  Place

Motorola M68HC11

支持特性:

*可配置的AXI4接口

*支持对DRR/DTR FIFO的突发操作;

*支持可配置的XIP模式操作;

*支持AXI4-Lite或者AXI4接口连接的32bit Slave;

*支持可配置的SPI模式:标准、双、四模式;

*可编程的SPI时钟相位和极性;

*可配置的FIFO深度,16、256深度;对XIP模式只支持64深度;

*Configurable slave Memories in dual and quad modes are: Mixed,Micro,Winbond,and Spansion;

*AXI 接口选项:

XIP 模式: 使能AXI4 和 AXI4-Lite接口,地址模式可以选择24bit和32bit;

Performance 模式:使能AXI4接口;使用AXI4接口可以在核的发送和接收FIFO地址处启用突发功能。当不使能performance模式时,AXI4-Lite将被使用。

*SPI 选项

模式可以选择: standard/dual/quad

Transacton Width:  8/16/32

频率比率:2~2048, 代表了SPI的sck =  ext_spi_clk/ratio  ;

NO. of Slave: 代表了slave的个数;1~32;

*寄存器:

AXI4-Lite写访问寄存器由32位AXI写数据(* _wdata)信号更新,不受AXI写数据选通(* _wstrb)信号的影响。对于写入,AXI写地址有效(* _awvalid)和AXI写数据有效(* _wvalid)信号需要同时有效。

表2-3显示了适用的寄存器集,无论是否使能Performance Mode,或禁止XIP模式。应单独访问某些AXI Quad SPI内核寄存器。这些寄存器是可配置的,可通过AXI4-Lite接口或AXI4接口(增强模式)访问。 所有寄存器都以32位的形式访问。

如果访问不存在的寄存器,它们将返回OKAY响应。 这些寄存器的读取返回0,写入没有任何影响。

*SPISRR: 写入0xA,进行软件复位;

*SPICR

*SPISR

*SPI DTR:

After the SPE bit is set to 1 in master mode or spisel is active in the slave mode,the data is transferred from the SPI DTR to the shift register. 

1. DN-1位始终表示MSB位,与LSB优先或MSB优先传输选择无关。 当传输宽度参数为8或16时,未使用的高位((AXI数据宽度-1)到N)被保留。
    2.在标准SPI模式下,根据内核配置,该寄存器的宽度可以是8或16或32。 在双通道或四通道SPI模式下,该寄存器为8位宽。

*SPI DRR

SPI数据接收寄存器(SPI DRR)用于读取从SPI总线接收的数据。 这是一个双缓冲寄存器。 每次完成传输后,接收的数据将被放入该寄存器中。 SPI架构没有为从设备提供任何方法来限制总线上的流量; 因此,只有在最后一次SPI传输之前读取了SPI DRR时,才会在每次完成的事务后更新SPI DRR。如果未读取SPI DRR且已满,则最近传输的数据将丢失并发生接收溢出中断。 主SPI设备也会出现相同的情况。

在标准模式下,读取空DRR FIFO会返回从错误。

*SPISSR:

SPI从选择寄存器(SPISSR)包含一个长度为N的低有效,one-hot编码的slave选择矢量SS,其中N是从机数。
SS向量占据寄存器的最右位。 最多将一位置为低电平。 该位表示本地主站与之通信的从站。 SPISSR中的位分配如图2-6所示,并在表2-9中进行了描述

*TX_FIFO_OCY:

仅当AXI Quad SPI内核配置了FIFO(FIFO深度= 16或256)时,才会出现SPI发送FIFO占用寄存器(TX_FIFO_OCY)。 如果它存在且发送FIFO不为空,则寄存器包含一个四位右对齐值,该值比FIFO中的元素数少一(占用率减1)。

该寄存器是只读的。 写入时,或当FIFO为空时读取,寄存器内容不受影响。 确定发送FIFO为空/满的唯一可靠方法是读取SPI状态寄存器中的Tx_Empty / Tx_Full状态位或中断状态寄存器中的DTR空位。

*RX_FIFO_OCY:

仅当AXI Quad SPI内核配置了FIFO(FIFO深度= 16或256)时,才会出现SPI接收FIFO占用寄存器(RX_FIFO_OCY)。 如果寄存器存在且接收FIFO不为空,则寄存器包含一个四位右对齐值,该值比FIFO中的元素数少一(占用率减1)。
该寄存器是只读的。 写入(或FIFO为空时的读取)不会影响寄存器内容。 确定接收FIFO为空/满的唯一可靠方法是读取SPI状态寄存器中的Rx_Empty / Rx_Full状态位。

*DGIER

默认[31]=0,全局使能处于disable状态;

*IPISR

根据系统是否配置了FIFO,以及是否配置为主模式或从模式,最多可以有14种独特的中断条件。
没有FIFO的系统有七个中断。 中断控制器中的32位中断状态寄存器可以独立使能每个中断。 IP中断状态寄存器(IPISR)收集所有中断事件。 中断寄存器是一个读/写切换寄存器。 将1写入寄存器中的位位置会导致相应的位切换。 所有寄存器位在复位时清零。

*IPIER

中断允许寄存器(IPIER)寄存器允许系统中断输出有效。 如果IPISR寄存器中的有效位对应于IPIER寄存器中的使能位,则会产生该中断。 IPIER寄存器对IPISR的每个定义位都有一个使能位。 所有位在复位时清零。

* 编程顺序:

写使能命令顺序: 

1.通过置位SPICR(60h)的主禁止位来禁用主事务,并通过SPICR复位RX和TX FIFO。
         示例:将0x1E6写入SPICR
    2.通过将0x06写入SPIDTR来发出write enable命令。
    3.通过向SPISSR(70h)写入0x00来发出芯片选择。
    4.通过置低SPICR主禁止位来使能主事务。
    5.通过将0x01写入SPISSR来置低片选。
    6.通过置位SPICR主禁止位来禁用主事务。

 擦除命令序列:
      1.通过SPICR复位RX和TX FIFO。
      2.将扇区擦除命令(a)发送到SPIDTR以擦除闪存扇区地址后面的任何特定扇区或发出批量擦除命令(a)擦除整个闪存
         然后是flash基地址。
         示例:将0xD8写入SPIDTR
     3.通过向SPISSR写入0x00来发出芯片选择。
     4.通过置低SPICR主禁止位来使能主事务。
     5.通过将0x01写入SPISSR来置低片选。
     6.通过置位SPICR主禁止位来禁用主事务。

写数据命令序列:

1.通过SPICR复位RX和TX FIFO。
    2.将写入数据命令(a)(b)发送到SPIDTR,以将数据写入任何特定扇区
        其次是闪存扇区地址。
    3.使用要写入闪存的数据填充SPIDTR; 最大数据大小取决于
        配置的QSPI FIFO大小。
    4.通过向SPISSR写入0x00来发出芯片选择。
    5.通过置低SPICR主禁止位来使能主事务。
    6.通过将0x01写入SPISSR来置低片选。
    7.通过置位SPICR主禁止位来禁用主事务。

读取数据命令序列:
   1.通过SPICR复位RX和TX FIFO。
   2.将读取数据命令(a)(b)发送到SPIDTR以从任何特定扇区读取数据
       其次是闪存扇区地址。
   3.使用虚拟数据填充SPIDTR以从闪存中读取所需数据。
   4.通过向SPISSR(70h)写入0x00来发出芯片选择。
   5.通过置低SPICR主禁止位来使能主事务。
   6.通过将0x01写入SPISSR来置低片选。
   7.通过置位SPICR主禁止位来禁用主事务
   8.读取SPIDRR,以获取从SPI总线接收的读取数据。

a.参见相应的SPI Slave(闪存)数据表,了解要发出的命令。
     b.写入/读取命令因使用的模式(标准/双/四)而异。

推荐:https://www.cnblogs.com/chensimin1990/p/8526497.html#4105474

转载于:https://www.cnblogs.com/limanjihe/p/9890979.html

理解AXI Quad Serial Peripheral Interface(SPI) IP核相关推荐

  1. 串行外设接口(Serial Peripheral Interface, SPI)逻辑设计部分 - spi_slave

    目录 1. (csn == 1'b1) 时 1.1. spi_slave 完成 Master读写握手 的最短时间 1.2. spi_slave 完成 Slave读写握手 的最短时间 2. (csn = ...

  2. 串行外设接口(Serial Peripheral Interface, SPI)逻辑设计部分 - spi_master

    目录 1. baud_clk_gen 1.1. 代码 2. spi_master 2.1. IDLE:等待写入 2.2. WAIT_CS:等待选通 2.3. TRANS:传输 (CPOL ^ CPHA ...

  3. 嵌入式硬件协议: SPI串行外设接口 Serial Peripheral Interface

    简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在ADC.LCD 等设备与M ...

  4. 谈谈SPI (Serial Peripheral Interface,串行外设接口)

    今天我们来一起聊聊谈谈SPI (Serial Peripheral Interface,串行外设接口): 什么是SPI SPI (Serial Peripheral Interface,串行外设接口) ...

  5. 同步和串行的区别_谈谈SPI (Serial Peripheral Interface,串行外设接口)

    什么是SPI SPI (Serial Peripheral Interface,串行外设接口)是Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线: 它以主从方式 ...

  6. Hardware - Serial Peripheral Interface - BIOS

    Serial Peripheral Interface  简称SPI X86的主板BIOS是如何工作的呢  , 其实就是依赖于SPI通讯 目前的芯片组都支持双BIOS Flash, 但这种做法在我们生 ...

  7. FPGA再入门——SPI IP核调用

    型号:XC7K325TFFG900+AD9235-1 软件:Vivado 2019.2及其对应的Vitis 按照上篇博客中提到的block design的方法,新增SPI IP核,需要注意的是不能使能 ...

  8. Uniform Sector Standard and Quad Serial Flash - GD55LB01GE DATASHEET

    目录 1. FEATURES 2. GENERAL DESCRIPTIONS 3. MEMORY ORGANIZATION 4. DEVICE OPERATIONS 4.1. SPI Mode 4.3 ...

  9. AXI Quad SPI读写Flash做远程升级

    未经允许,本文禁止转载 目录 简介 AXI Quad SPI IP设置 寄存器说明 AXI Quad SPI支持的通用命令 读flash id 读flash 数据 擦除扇区 写flash 数据 注意事 ...

最新文章

  1. ZDOzMRVAOq
  2. CentOS6.5安装配置
  3. PHP连接sql seaver数据库
  4. 『转』数据库的委托之类型分类处理
  5. cookie代码加时间多久出现一次_恶意代码分析 丨 一个毫无套路的咸鱼诈骗网站...
  6. python3简明教程-实验楼_#python实验楼教程#学Python哪里有一问一答的Python学习?求具体的~...
  7. BZOJ #3746: [POI2015]Czarnoksiężnicy okrągłego stołu 动态规划
  8. 软件测试_性能测试_关注点
  9. Sep 12.1.4112.4156部署客户端
  10. python贝叶斯估计库_tsbngen一个python库,可从任意动态贝叶斯网络生成时间序列数据...
  11. TeamTalk消息协议
  12. asp.net体育用品销售系统
  13. 微信打开网页 提示防诈骗
  14. 3dmax给模型添加渐变背景有哪些方法
  15. java开发实战小参考常见问题及处理
  16. flink 单作业模式部署提交作业爆:Trying to access closed classloader. Please check if you store classloaders direc
  17. Gvim计数器模板经典练习
  18. Roguelike 游戏中的计算哲学
  19. UVA 1103 - Ancient Messages(古代象形符号) By SuCicada
  20. three.js伪入门教程之旋转的九尾妖狐

热门文章

  1. 【超详解】JavaWeb三大组件讲解
  2. flask 下载excel
  3. 3D建模师入行之初,就业是角色建模好还是场景建模好?
  4. gpo 软件限制策略_什么是GPO(组策略对象)? 如何在Microsoft Windows中使用,更改GPO?...
  5. TranslateAnimation动画
  6. going deeper with convolutions (Googlenet网络解读)
  7. 调优之网络调优-网卡绑定
  8. Mac怎么开启多个终端
  9. windows开启自启动jar包
  10. u校园刷题脚本一键答题挂时长支持视听说读写综合