如何理解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;
*SPICR
*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設備也會出現相同的情況。
*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空位。
*DGIER
默認[31]=0,全局使能處于disable狀態;
*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.寫入/讀取命令因使用的模式(標準/雙/四)而異。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。