理解AXI Quad Serial Peripheral Interface(SPI) IP核


 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM