指令查找表LUT

本文整理自22. FlexSPI—讀寫外部SPI NorFlash — [野火]i.MX RT庫開發實戰指南——基于i.MXRT1052 文檔

用作個人學習和分享

指令查找表LUT

訪問FLASH存儲器通常包含一些讀寫功能的的控制指令,主控設備可通過這些指令訪問FLASH存儲器。

為了適應這種需求,FlexSPI外設中包含有一個指令查找表LUT(Look Up Table),即圖 22?5中第②部分SEQ_CTL(序列控制邏輯)的主要內容,它用來預存儲訪問外部設備時可能使用到的指令,需要對FLASH進行訪問時,FlexSPI會從查找表LUT中獲取相應的指令然后通過SPI接口對FLASH發起通訊。

該表使用序列的形式緩存指令,最多支持16個指令序列,每個序列最多支持8個指令。例如,在某序列中緩存指令C1、C2、C3…,當控制執行該序列時,指令C1、C2、C3…會被按順序執行。

查找表LUT的構成

查找表LUT的構成具體見圖?

image8

該圖中的第①部分是查找表LUT視圖,它表示查找表LUT有0~N個序列;第②部分是序列視圖,它表示1個序列中包含有8個指令;第③部分是指令視圖,表示指令由opcode(指令編碼)、num_pads(數據線的數目)、operand(指令參數)三個寄存器域構成。這些指令的存儲位置是FlexSPI外設中的寄存器LUT0~LUT63,每個LUT寄存器可以緩存2個指令,即1個指令序列(8個指令)由4個寄存器構成,這些寄存器構成了一個完整的LUT表。

LUT寄存器的構成

LUT寄存器的構成具體

image9

LUT寄存器的各個域說明如下:

  • OPCODE:指令編碼,這是由FlexSPI定義的一些基本指令碼,如向FLASH發送控制命令的CMD_SDR指令OPCODE為0x01;發送行地址到FLASH的指令OPCODE為0x02,諸如此類。

  • NUM_PADS:進行SPI通訊時使用的數據線的數目,它的可用參數為:

  1. 0x0:Single模式

  2. 0x1:Dual模式

  3. 0x2:Quad模式

  4. 0x3:Octal模式

  • OPERAND:指令參數,部分OPCODE指令包含參數,這些參數就由OPERAND設定,參數的具體作用由相應的OPCODE決定。

常用指令說明

指令名稱

OPCODE

NUM_PADS

SPI接口發送的內容

Bits/Bytes/ Cycle的數目

CMD_SDR/

CMD_DDR

0x01/0x21

0:Single模式

1:Dual模式

2:Quad模式

3:Octal模式

發送控制FLASH的命 令代碼到FLASH存儲 器,即OPERAND

[7:0]的內容

Bits數目:固定為8

RADDR_SDR

/RADDR_DDR

0x02/0x22

發送行地址到FLASH ,

AHB命令模式:

由訪問的AHB 地址決定;

IP命令模式:

由IPCR0寄存器決定

Bits數目:OPER AND [7:0],即由它指定 地址的位數

WRITE_SDR/

WRITE_DDR

0x08/0x28

發送要寫入的數據到FL ASH,

即AHB_TX_BUF 或IP_TX_FIFO 的數據

Bytes數目,即要傳 輸的字節數:

AHB命令模式:

由AHB突發大小和突發 類型決定

IP命令模式:

由IPCR1.DATS Z寄存器域決定

READ_SDR/

READ_DDR

0x09/0x29

從FLASH接收數據, 收到的數據會被存儲到A HB_RX_BUF或I P_RX_FIFO

DUMMY_SDR/

DUMMY_DDR

0x0C/0x2C

FlexSPI釋放對數 據線的控制,時鐘信號正 常驅動。這種指令通常是 FLASH設備要求的空 操作等待

Cycle數目,即DU MMY周期的個數(即S CK的周期數):

OPERAND [7:0],由它指定發 送多少個DUMMY周期

STOP

0x00

固定為0,即Singl e模式

停止執行,釋放CS片選 信號,不發送內容

SPI接口無數據傳輸

此處對該表中特別值得注意的內容說明如下:

  • 查找表支持兩套有同功能不同模式的指令。例如CMD_SDR和CMD_DDR的OPCODE為0x01和0x21,它們分別表示使用SDR模式和DDR模式的CMD指令,它們的功能一樣,都是向FLASH發送命令代碼。其它指令類似,大都有SDR和DDR模式。

  • 數據線的數目由NUM_PADS指定。不同的指令可以通過它自身的NUM_PADS域來指定,因此不同指令可以使用不同的數據線數目。在應用中一些FLASH存儲器的命令只使用一根數據線(Single模式),而快速讀寫的命令則可支持Dual、Quad模式,此時針對命令使用不同的NUM_PADS進行定制即可。

  • OPERAND參數在不同指令下作用不同:

  1. 對于CMD_SDR指令,它的功能是向FLASH發送命令代碼,此時要發送的FLASH命令代碼就是CMD_SDR指令的參數,即由OPERAND域指定(請注意區分FLASH命令和OPCODE)。例如W25Q256型號的FLASH的讀取ID命令代碼為0xAB,當RT1052要讀取FLASH的ID時,利用CMD_SDR指令同時把命令代碼0xAB賦予到OPERAND域,這樣FlexSPI控制的時候就會通過SPI接口把FLASH命令0xAB發送出去了。

  2. 對于RADDR_SDR指令,它的功能是向FLASH發送要讀寫的存儲單元地址,該地址由IPCR0寄存器指定,同時OPERAND域用于指定地址的長度。例如部分FLASH的空間比較小,只使用16位來表示地址,那么該命令的OPERAND域的值就應為16,對于W25Q256這種地址為24或32位的存儲器,OPERAND域的值就應設置為24或32。

  3. 對于DUMMY_SDR指令,它的功能是釋放FlexSPI對數據線的控制,而時鐘正常運行,該指令是針對FLASH存儲器的部分時序要求,這時FLASH存儲器會忽略數據線上的內容,實質它是要求主機進行等待,在這種情況下可通過OPERAND指定該過程要占多少個SCK的周期數。

  • 數據傳輸指令的數據緩沖區位置分兩種情況。WRITE_SDR和READ_SDR指令分別用于向FLASH寫入和讀取數據,這些指令傳輸的數據緩沖位置如下:

  1. 在AHB命令模式下:數據緩存在AHB_TX_BUF(發送緩沖區)以及AHB_RX_BUF(接收緩沖區)中,此時要傳輸的字節數由AHB突發傳輸的大小和類型決定。

  2. 在IP命令模式下:數據緩存在IP_TX_FIFO(發送緩沖區)以及IP_RX_FIFO(接收緩沖區)中,此時要傳輸的字節數可通過寄存器IPCR1的DATSZ域指定。

  • 操作通常使用序列的形式并配合STOP指令(停止指令)使用:以上說明的各個指令通常不會單獨執行,而是組成一個指令序列,對于指令數不滿8個的序列,需要使用STOP指令表示結束。例如一個使用IP命令模式的讀取操作中,通常會使用以下的指令序列:

  1. 使用CMD_SDR指令向發送FLASH的讀取命令,如W25Q256的Quad模式讀取命令編碼為0x6B,此時CMD_SDR指令的OPERAND域為0x6B;

  2. 使用RADDR_SDR指令發送要讀取的FLASH存儲單元地址,OPERAND域的值為24表示使用24位的地址,而地址具體的值由寄存器IPCR0設定;

  3. 按照FLASH的Quad模式讀取命令的要求發送占8個SCK時鐘的DUMMY操作,此時使用DUMMY_SDR指令且OPERAND域的值設置為8;

  4. 使用READ_SDR指令,開始接收FLASH的數據到IP_RX_FIFO中,要讀取的字節數由寄存器IPCR1的DATSZ域指定;

  5. 由于使用的指令不足8個字節,在該序列的最后使用STOP指令表示停止,當FlexSPI執行到STOP指令時,會釋放SPI的片選信號CS,結束通訊。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921646.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921646.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921646.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uv使用指南

🚀 Python 打包工具 UV 使用指南 UV 是一個用 Rust 編寫的極速 Python 包管理器和解析器,旨在成為 pip、pip-tools、virtualenv 等工具的單一替代方案。 📋 目錄 核心概念與設計哲學安裝與配置基礎使用方法項目管理與工作流高級功能與技巧…

安卓學習 之 圖片控件和圖片按鈕

今天學習的是ImageView 和 ImageButton這兩個控件還是比較簡單的:先來看看最后的樣式圖片吧:從圖片中可以看到ImageView中的圖片要大很多,這是因為中的ImageView中的圖片跟ImageView控件的大小而自動調整。Imag…

動態規劃-學習筆記

這是一份動態規劃(Dynamic Programming, DP)完整學習筆記。筆記將從一星難度(入門)到五星難度(進階),循序漸進,涵蓋核心思想、經典模型和解題方法論。 本來打算今天更新背包問題的題…

Linux 可信啟動深度解析:從UEFI到操作系統的信任鏈

文章目錄引言一、 可信根基:TPM與核心概念1.1 什么是“度量” (Measurement)?1.2 信任鏈與TPM PCR二、 階段一:固件的可信啟動 (UEFI)2.1 引導的起點:從SEC到DXE的初始化2.2 引導設備選擇 (BDS):UEFI如何找到GRUB2.3 S…

61-python中面向對象三大特性

前言: 面向對象編程,是許多編程語言都支持的一種編程思想。簡單理解是:基于模板(類)去創建實體(對象), 使用對象完成功能開發。面向對象包含三大主要特性: 封裝 繼承 多態…

BP-Adaboost模型

BP-Adaboost模型是一種將BP神經網絡作為弱分類器的集成學習框架,通過AdaBoost算法動態調整樣本權重和模型權重,顯著提升預測精度和泛化能力。一、模型架構與工作原理 1. 基礎框架 弱分類器單元:采用單隱藏層BP神經網絡(結構示例&a…

k230 +canMV+ LVGL控件 仿手表表盤觸摸屏滾動、選中后彈窗效果完整示例程序

現在智能手表用的越來越多,其交互方式比較有特點,現在k230開發板上,基于LVGL(Light and Versatile Graphics Library)編寫一個嵌入式GUI應用程序,使用LVGL配合觸摸屏實現模仿智能手表的表盤滾動效果,實際效果如下: 程序使用LVGL圖形庫和MediaManager程序,創建帶有觸摸…

使用Vue.js和WebSocket打造實時庫存儀表盤

大家好!今天我將分享一個簡單卻強大的實時庫存儀表盤項目,基于Vue.js和WebSocket技術。這個項目適合初學者學習前端實時數據處理,也能為你的技術博客或作品集增添亮點!通過這個教程,你將學會如何使用WebSocket實現實時…

leecode100——接雨水

題目 雙指針 思路1 使用參數存儲從左往右(從右往左同理)遍歷時的最高的柱子, 然后移動左右的指針,每次移動左右指針中偏向小的, 如果當前指針指的柱子小于最高的柱子,就會存在接到水。 思路2 把水看作柱子&…

復古膠片風格街拍人像Lr調色教程,手機濾鏡PS+Lightroom預設下載!

調色教程復古膠片風格街拍人像 Lightroom 調色,通過模擬經典膠片相機的色彩科學,為現代數碼照片注入懷舊韻味。這種調色手法注重低飽和度色彩、柔和的高光過渡和豐富的暗部細節,配合適度的顆粒感,營造出時光沉淀的質感。特別適合街…

Linux的gpio子系統

GPIO其實也是某個pin的功能之一。上一小節講解了 pinctrl 子系統,pinctrl 子系統重點是設置 PIN(有的 SOC 叫做 PAD)的復用和電氣屬性,如果 pinctrl 子系統將一個 PIN 復用為 GPIO 的話,那么接下來就要用到 gpio 子系統了。gpio 子系統顧名思…

VC++ CPU指令集檢測工具實現原理

📈 VC CPU指令集檢測工具實現原理 例圖:🧠 1. 核心原理:CPUID指令 // 使用CPUID指令獲取CPU信息 int cpuInfo[4] { -1 }; __cpuid(cpuInfo, 0); // 調用CPUID指令 int nIds cpuInfo[0]; // 獲取最大標準功能號CPUID指令工作流程…

大模型微調理論、實戰:LLaMA-Factory、Unsloth

概述 微調,Fine-Tuning,簡稱FT,可理解為對LLM的定制,目的是增強專業領域知識,并優化特定任務的性能。通過在特定數據集上微調一個預訓練模型,可實現: 更新知識:引入新的領域專屬信…

【LCA 樹上倍增】P9245 [藍橋杯 2023 省 B] 景區導游|普及+

本文涉及知識點 樹上倍增 P9245 [藍橋杯 2023 省 B] 景區導游 題目描述 某景區一共有 NNN 個景點,編號 111 到 NNN。景點之間共有 N?1N-1N?1 條雙向的擺渡車線路相連,形成一棵樹狀結構。在景點之間往返只能通過這些擺渡車進行,需要花費…

基于Python+Streamlit的旅游數據分析與預測系統:從數據可視化到機器學習預測的完整實現

🏞? 基于PythonStreamlit的旅游數據分析與預測系統:從數據可視化到機器學習預測的完整實現 📝 前言 在大數據時代,旅游行業的數據分析變得越來越重要。如何從海量的旅游數據中挖掘有價值的信息,并進行準確的銷量預測&…

飛算JavaAI全鏈路實戰:智能構建高可用電商系統核心架構

飛算JavaAI全鏈路實戰:智能構建高可用電商系統核心架構 前言:AI編程新時代的電商系統開發范式變革 在當今數字經濟時代,電商系統作為企業數字化轉型的核心載體,其復雜度和技術要求與日俱增。一個完整的電商系統不僅需要處理商品、…

論文精讀(五):面向鏈接預測的知識圖譜表示學習方法綜述

筆者鏈接:撲克中的黑桃A 專欄鏈接:論文精讀 本文關鍵詞:知識圖譜; 表示學習; 鏈接預測; 多元關系; 超關系 引 諸位技術同仁: 本系列將系統精讀的方式,深入剖析計算機科學頂級期刊/會議論文,聚焦前沿突破…

Roo Code之自定義指令(Custom Instructions),規則(Rules)

在Roo Code 中,Custom Instructions 可以通過Instructions 設定和Rules 規則文件實現。什么是Custom Instructions? 自定義指令(Custom Instructions)定義了超出Roo基本角色定義范圍的具體行為、偏好和約束。示例包括編碼風格、文檔標準、測試要求和工作…

9/8我是ai大師

一、變量定義部分(理解程序的 "記憶")c運行/* USER CODE BEGIN PV */ static uint8_t last_button_state 1; // 初始為高電平(未按下) static uint8_t device_mode 0; // 設備模式:0LD1, 1LD3, 2蜂鳴器, 3…

前沿重器[74] | 淘寶RecGPT:大模型推薦框架,打破信息繭房

前沿重器欄目主要給大家分享各種大廠、頂會的論文和分享,從中抽取關鍵精華的部分和大家分享,和大家一起把握前沿技術。具體介紹:倉頡專項:飛機大炮我都會,利器心法我還有。(算起來,專項啟動已經…