如何理解AXI Quad Serial Peripheral Interface IP核

发布时间:2021-12-20 11:21:36 作者:柒染
来源:亿速云 阅读:281

如何理解AXI Quad Serial Peripheral Interface IP核,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

在使用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 Quad Serial Peripheral Interface IP核

如何理解AXI Quad Serial Peripheral Interface IP核

如何理解AXI Quad Serial Peripheral Interface IP核

*SPICR 

如何理解AXI Quad Serial Peripheral Interface IP核

*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. 
如何理解AXI Quad Serial Peripheral Interface IP核

    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设备也会出现相同的情况。
如何理解AXI Quad Serial Peripheral Interface IP核

 *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空位。

如何理解AXI Quad Serial Peripheral Interface IP核

 *DGIER

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

如何理解AXI Quad Serial Peripheral Interface IP核

 *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.写入/读取命令因使用的模式(标准/双/四)而异。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. 对Cisco ACI的理解
  2. 代理arp如何理解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:如何进行CTF TopHatSec中的Freshly- Vulnhub渗透测试

下一篇:Redis数据类型和适用场景有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》