精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

QSPI Flash驅動功能解析和使用注意事項

汽車ECU開發 ? 來源: ADAS與ECU之吾見 ? 2023-10-19 10:09 ? 次閱讀

前言

首先,請問大家幾個小小問題,你清楚:

QSPI協議的基本內容與功能應用場景嗎?

QSPI Flash驅動讀寫過程中存在哪些不一樣的操作模式呢?

基于AUTOSAR架構下Flash驅動接口有哪些?

在平常使用QSPI Flash接口的過程中存在哪些注意事項呢?

今天,我們來一起探索并回答這些問題。為了便于大家理解,以下是本文的主題大綱:

2e371e2c-6e1f-11ee-939d-92fbcf53809c.png

正文

QSPI協議介紹

QSPI全稱為“Queued SPI”,本質上是屬于SPI協議的一種,一般來說,SPI協議可以分為Standard SPI,Dual SPI,以及本文要講解的Queued SPI。只不過Dual SPI,Queued SPI常用于作為SPI Flash的通信接口

功能應用

QSPI作為一種隊列串行外圍接口協議,就是對SPI協議的擴展,可以通過單線,雙線或四線模式與外部Flash存儲器進行高速通信。其功能應用場景如下:

數據存儲:可以用來實現大量數據的存儲,如代碼,圖像,視頻等,從而提高數據的讀寫速度與容量;

代碼執行:QSPI用于執行外部Flash存儲器的代碼,這樣可以節約內部Flash的空間,如通過QSPI XIP模式從而實現在Memmap下執行代碼;

與其他外圍設備進行通信:QSPI也可支持與其他QSPI協議的外圍設備進行通信,如傳感器,顯示器等,可以提高通信的效率與靈活性;

協議特點

QSPI協議作為一種SPI協議的擴展,一般而言,可以分為兩種工作模式,即設置模式與Memmap模式,雖然也有些芯片存在三種,如STM32,不同芯片存在些許差異可以理解,本質上可以歸納為上述兩者;

QSPI協議的命令序列包括指令、地址、交替字節、空指令和數據這五個階段,任一階段均可跳過,但至少要包含指令、地址、交替字節或數據階段之一;

一般而言,QSPI僅支持dual read 與quad read模式,不支持dual write與quad write兩種模式,同時也不會存在QSPI 輸入與輸出的loop back模式;

QSPI Flash驅動說明

雖然市面上存在許多的Flash驅動供應商,但是基本都大同小異,本文已TI系列的QSPI Flash驅動介紹舉例給大家介紹下其QSPI的硬件實現原理,讀寫操作模式以及EDMA搬運等操作。

QSPI硬件實現原理

作為QSPI通信的雙方,本質上來講都是主芯片端作為主設備,可以通過控制CS引腳來決定與外圍不同的Flash芯片進行通信,同時通過輸出Clock時鐘來完成針對從設備的通信傳輸控制,如下圖所示:

2e3b2f6c-6e1f-11ee-939d-92fbcf53809c.png

圖1 QSPI硬件連接原理(圖片來源于TI官方文檔)

左圖為主芯片的內部QSPI的控制器,右圖則為外部的支持QSPI協議的外部Flash,兩者之間通過QSPI協議接口連接,包含1個CLK引腳,1個CS引腳與4個用于傳輸數據的IO引腳。

針對上圖中的內容,小T將針對每個引腳做個較為詳細的介紹,如下表所示:

2e4ce234-6e1f-11ee-939d-92fbcf53809c.png

圖2 QSPI接口引腳功能定義

QSPI讀寫操作模式

通過上述文章我們了解到QSPI存在3線Single Write/Read模式,4線Single Write/ Read,Dual Read模式,6線Quad Read模式的6種QSPI讀寫方式,在具體的項目實際應用過程中,我們一般推薦正常的寫入操作通過4線Single Write來寫入,讀取操作推薦采用6線Quad Read模式,這樣才能最大效率的利用Flash硬件自身特性,從而提高通信效率。

如下圖所示為QSPI 控制器的內部組成關系,從中我們可以得出如下幾個關鍵結論:

2e579f94-6e1f-11ee-939d-92fbcf53809c.png

圖3 QSPI控制器接口內部結構(來源于TI官方文檔)

整個QSPI控制器可以分為SFI_MM_IF與SPI_CORE兩個模塊,其中SFI_MM_IF模塊主要負責讀寫指令,地址以及dummy cycle的個數等,而SPI_CORE主要負責芯片的時鐘極性與時鐘相位以及傳輸的長度等;

SFI_MM_IF接口由以下兩個部分組成:

SFI register control:用來實現上述讀寫指令的初始化設置;

SFI translator:將對應的SFI register control中的讀寫指令發送至SPI_CORE模塊來外部Flash;

SPI_CORE模塊則是由如下四個部分組成:

SPI_CNTIF:SPI Control Interface,用于設置對應的讀寫指令,時鐘極性或相位等,在配置模式下會使用到;

SPI_CLKGEN:SPI Clock Generator,用于設置通信相關的時鐘頻率;

SPI_MACHINE:SPI State Machine,將SPI_CNTIF中的相關讀寫指令作為輸入,然后控制數據的移位發送等;

SPI_SHIFTER:SPI Data Shifter,用來實現接口信號的捕捉與生成。

QSPI控制器支持兩種配置方式,一種是Config模式,另外一種則是Memmap方式;對于寫入操作不支持Memmap方式僅支持Config模式,對于讀取操作推薦使用Memmap方式,這樣便可以直接在芯片MCU的Memory Layout中看到相應的外部Flash空間的代碼或者數據。

對于QSPI接口的通信雙方而言,需要確保兩者通信的時鐘極性與時鐘相位是一致的,時鐘極性與時鐘相位的組合有如下4種方式:

2e6772b6-6e1f-11ee-939d-92fbcf53809c.png

圖4 QSPI時鐘極性與時鐘相位關系圖

QSPI EDMA搬運

當通過QSPI去讀取大量數據時,我們推薦使用Memmap方式讀取+EDMA的方式來完成,因為通過該兩種技術手段的結合,我們便可以減小CPU負擔,直接讓EDMA去執行對應的數據讀取操作;

有關EDMA的具體實現機理就不再本文進行展開,后續將進行單獨講解,歡迎多多關注小T。

AUTOSASR架構下Flash驅動標準接口

小T將AUTOSAR架構下針對Flash驅動的標準接口以及相關需求列舉如下,這樣在我們使用Flash驅動過程我們能夠快速的了解到Flash驅動的關鍵API的具體功能與作用。

2e76949e-6e1f-11ee-939d-92fbcf53809c.png

圖5 Flash驅動標準接口表

在使用上述標準的AUTOSAR Flash驅動API也有很多需要注意的地方,小T將自己覺得需要特別注意的點列舉如下,這也是大家容易忽視的一些點:

在使用Flash驅動其他讀,寫等接口之前,務必需調用Fls_Init完成初始化,否則后續的Flash操作請求將會無效;

如果你使用的是外部Flash并采用QSPI驅動,請務必在Fls_Init之前執行QSPI驅動的初始化,保證一個有效的初始化過程;

在執行Flash寫入操作時其寫入地址與長度均需要與Flash的Page單位進行對齊,如一般為256字節,具體還是取決于Flash芯片型號;

在執行Flash擦除操作時,需確保其擦除地址與長度與Flash的sector單位進行對齊,如一般為4K,具體還是取決于Flash芯片型號;

Fls_Read, Fls_Write等關鍵API操作均屬于異步操作且不可重入,因此需確保Flash驅動的被操作對象的唯一性,不要應用層與Fee模塊沖突,統一通過NVM發送請求來完成Flash的操作;

QSPI Flash驅動使用注意事項

小T在具體的軟件開發過程中,也遇到過很多跟Flash驅動操作有關的問題,這些問題往往解決起來非常棘手,因為非常偶發且極難復現。

這類問題更多時候還是我們缺乏防御性編程思維,沒有針對Flash可能失效的場景進行全面的考慮,以下小T將我個人針對Flash驅動的幾個常見的經驗總結列舉如下,希望能給大家后續的Flash驅動開發帶來一些幫助與思考。

在每次系統啟動或者復位的過程中,最為推薦的做法針對外部Flash同步進行reset操作,該操作可以一般存在如下三種方式:

每次啟動或者復位的過程中可通過硬件來操作Flash的上下電操作來完成Flash自身的重置;

通過軟件的方式來拉低Reset引腳來實現外部Flash復位,這種方式需要考慮到引腳復用功能是否可用的可能性;

通過軟件的方式在初始化的過程中通過QSPI通信發送軟復位指令讓Flash芯片進行重置;

如果需要針對外部的SPI Flash通過QSPI進行通信,需要特別注意該SPI Flash芯片的QE位是否默認使能,如果沒有使能,將無法采用QUAD SPI進行通信,因此建議工廠端刷寫軟件過程中均需要主動設置該QE位或者在軟件初始化過程中設置該QE位,該QE位一旦寫入掉電也會丟失,僅需寫入一次即可;

在執行Flash初始化過程中需要針對Flash外部型號,如Manufacture ID等設備號進行校驗,確保不會出現生產過程中出現芯片型號貼錯的場景;

在軟件運行過程中有時會偶發導致系統跑飛意外執行操作Flash驅動寫或者擦除操作導致用戶程序遭到破壞,從而軟件無法正常啟動,因此有必要針對關鍵應用程序代碼空間進行Flash寫保護,這樣即使程序死機復位后整個系統也能夠再次正常啟動。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1598

    瀏覽量

    147344
  • 接口
    +關注

    關注

    33

    文章

    8265

    瀏覽量

    149984
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1669

    瀏覽量

    90755
  • AUTOSAR
    +關注

    關注

    10

    文章

    339

    瀏覽量

    21361
  • QSPI
    +關注

    關注

    0

    文章

    41

    瀏覽量

    12132
收藏 人收藏

    評論

    相關推薦

    電調驅動原理是什么?有哪些注意事項

    電調驅動原理是什么?有哪些注意事項
    發表于 09-24 06:54

    膽機使用的注意事項

    膽機使用的注意事項:膽機使用的注意事項 我是初哥, 現在對膽機感興趣, 但聽說膽機使用麻煩, 請問有什么需要注意的?湖南吉首火車站 范增不必擔心, 膽機的使用方法
    發表于 11-29 17:09 ?46次下載

    IGBT驅動電路布線設計注意事項

    IGBT驅動電路布線設計注意事項 1.The layout must minimize the parasitic inductance between the driver’s output
    發表于 11-05 23:17 ?4023次閱讀
    IGBT<b class='flag-5'>驅動</b>電路布線設計<b class='flag-5'>注意事項</b>

    IGBT驅動光耦TLP250的應用及注意事項

    IGBT驅動光耦TLP250的應用及注意事項
    發表于 07-18 11:01 ?5.7w次閱讀
    IGBT<b class='flag-5'>驅動</b>光耦TLP250的應用及<b class='flag-5'>注意事項</b>

    繼電器驅動電路的原理和注意事項

    繼電器驅動電流一般需要20-40mA或更大,線圈電阻100-200歐姆,因此要加驅動電路。那么繼電器的驅動電路的原理和注意事項有哪些?
    發表于 02-06 15:44 ?3.6w次閱讀
    繼電器<b class='flag-5'>驅動</b>電路的原理和<b class='flag-5'>注意事項</b>

    如何開發功能齊全的QSPI驅動

    1. 摘要 本篇筆記主要介紹,如何開發穩定可靠,功能齊全的QSPI驅動。 2. 準備工作 1, IAR 8.32.1 2, STM32Cube_FW_H7_V1.6.0 3. QSPI
    的頭像 發表于 09-25 14:42 ?3566次閱讀
    如何開發<b class='flag-5'>功能</b>齊全的<b class='flag-5'>QSPI</b><b class='flag-5'>驅動</b>

    驅動的欠壓保護功能及其注意事項

    驅動的欠壓保護功能及其注意事項
    發表于 11-01 08:26 ?1次下載
    門<b class='flag-5'>驅動</b>的欠壓保護<b class='flag-5'>功能</b>及其<b class='flag-5'>注意事項</b>

    APM32F030C8T6_Flash_Flash讀寫設計注意事項

    APM32F030C8T6_Flash_Flash讀寫設計注意事項
    發表于 11-09 21:03 ?3次下載
    APM32F030C8T6_<b class='flag-5'>Flash_Flash</b>讀寫設計<b class='flag-5'>注意事項</b>

    IGBT 柵極驅動注意事項

    IGBT 柵極驅動注意事項
    發表于 11-15 19:51 ?7次下載
    IGBT 柵極<b class='flag-5'>驅動</b><b class='flag-5'>注意事項</b>

    使用注意事項

    使用注意事項
    發表于 03-17 20:14 ?1次下載
    使用<b class='flag-5'>注意事項</b>

    微控制器外置QSPI Flash選型的注意事項

    為了擴展微控制器可用的 Flash 空間,用戶可以使用 QSPI 接口連接 QSPI Flash;為了讓用戶能盡量像使用片內 Flash
    的頭像 發表于 04-07 09:23 ?1839次閱讀

    使用注意事項

    使用注意事項
    發表于 07-07 19:04 ?0次下載
    使用<b class='flag-5'>注意事項</b>

    調制驅動器初次使用注意事項

    在初次使用調制驅動器時,有幾個注意事項需要考慮。
    的頭像 發表于 07-10 11:47 ?627次閱讀

    HK32MCU應用筆記(十七)| HK32F103xC/D/E-flash擦寫應用及注意事項

    HK32MCU應用筆記(十七)| HK32F103xC/D/E-flash擦寫應用及注意事項
    的頭像 發表于 09-18 10:58 ?951次閱讀
    HK32MCU應用筆記(十七)| HK32F103xC/D/E-<b class='flag-5'>flash</b>擦寫應用及<b class='flag-5'>注意事項</b>

    深度剖析 IGBT 柵極驅動注意事項

    深度剖析 IGBT 柵極驅動注意事項
    的頭像 發表于 11-24 14:48 ?541次閱讀
    深度剖析 IGBT 柵極<b class='flag-5'>驅動</b><b class='flag-5'>注意事項</b>