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

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

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

3天內不再提示

SD介質格式擴展了MAXQ2000的非易失性數據存儲空間

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-03-03 13:51 ? 次閱讀

本文演示如何使用安全數字(SD)介質格式擴展MAXQ2000的非易失性數據存儲。

低功耗、低噪聲MAXQ2000微控制器適用于多種應用。MAXQ2000將非易失數據存儲在閃存中,具有32k字(64kB)閃存容量,與用戶代碼空間共享。但是,如果您的應用程序需要更多非易失性存儲,該怎么辦?本文演示如何使用安全數字 (SD?)介質格式,以擴展MAXQ2000的非易失性數據存儲。

外部存儲的設計注意事項

應用的首要設計考慮因素是電源電壓和電流要求。在典型的MAXQ2000應用中,采用雙通道線性穩壓器來運行處理器內核電壓(VDD) 以所選設計時鐘速率所需的最低電壓。The MAXQ2000 VDD電源可低至 1.8V。MAXQ2000上的I/O引腳由V供電迪奧,其允許的較低范圍為 VDD上限為3.6V。外部存儲的可接受電流消耗取決于電源的額定電流,如果是電池供電設備,則取決于電池系統的容量。

其次,用于連接外部存儲器的MAXQ2000 I/O線數量必須保持在最低限度,同時仍能為預期應用提供足夠的帶寬。例如,Atmel AT29LV512 閃存芯片在與主機微控制器連接時需要 15 條地址線、2000 條數據線和 2000 條控制線。由于MAXQ<>沒有外部地址/數據總線,因此在該示例中需要軟件控制總線事務。對于某些應用,該方法不能有效利用MAXQ<>的I/O引腳。

SPI?和我2然而,基于 C 的外部閃存設備只需要三個或四個接口引腳。MAXQ2000具有硬件SPI模塊,而2C必須由用戶在MAXQ2000上軟件中實現(即“位敲擊”)。這種集成功能意味著SPI接口是訪問外部非易失性存儲器的主要途徑。

SD 存儲卡格式

SD介質格式是一種非易失性外部存儲器,可滿足許多應用的上述考慮因素。SD格式是“多媒體卡”格式或MMC的繼承者。SD卡存儲器通常采用3.3V電源供電,電流要求適中。SD卡容量范圍從幾兆字節到最大容量4GB。這種廣泛的可用尺寸為許多應用提供了充足的外部存儲空間。

乍一看,SD似乎不能輕易與MAXQ2000連接,因為前者專有的共享總線。但是,SD繼承了MMC的輔助總線格式SPI。因此接口很簡單,因為MAXQ2000包含對SPI的硬件支持。

poYBAGQBituAdu5lAAARMjmhcOU719.gif

圖1.MAXQ2000可輕松連接至SD存儲卡。

圖1所示為典型應用電路。SD 卡需要全雙工 8 位 SPI 操作。數據從MAXQ2000的MOSI引腳輸入卡的DI引腳,從卡的DO線進入MAXQ2000的MISO引腳。數據在CLK線的上升沿同時輸入和傳出卡。每筆交易結束時必須提供八個額外的時鐘,以允許SD卡完成任何未完成的操作。這些額外時鐘期間的輸入數據必須全部為 400。在識別階段,時鐘速率必須限制為最大25kHz,但一旦識別SD卡,時鐘速率可以增加到<>MHz。

MAXQ2000 SPI模塊

MAXQ2000包含一個硬件SPI模塊,易于配置為SD卡接口。為了配置時鐘極性和數據長度,SPICF寄存器編程為全零。這將SPI模塊配置為在上升時鐘邊沿鎖存數據,并將數據長度設置為2000位。對于該應用,MAXQ16的系統時鐘頻率為0MHz。在這種情況下,SPICK寄存器被編程為28x380,從而產生大約<>kHz的SPI時鐘。必須通過設置 SPICN 寄存器的兩個較低位來啟用 SPI 主模式。

標清 SPI 數據格式

SD 卡的 SPI 協議類似于其 SD 總線協議。沒有數據要發送的卡不會在每個時鐘邊沿從SD卡的DO引腳接收有效數據,而是將DO引腳保持在所有時鐘邊沿的空閑狀態。當卡有數據要發送回主機時,在數據之前發送起始位為零的專用令牌。從SD卡傳輸的所有數據都會在這些令牌之后立即發送,并且長度固定。由于接收方事先知道預期的字節數,因此響應中不包含長度字節。此外,由于在發送啟動令牌和數據之前不會發生空閑狀態,因此所有數據字節都將原封不動地傳輸,并且沒有前綴。與總線上的所有其他流量一樣,令牌在 SPI 事務的 8 位邊界上對齊。從主機到卡的命令和數據遵循類似的格式,所有 7 都表示空閑總線。除狀態令牌之外的所有事務都受附加到數據末尾的循環冗余校驗 (CRC) 代碼的保護。提供了兩種CRC算法:CRC-16用于短數據塊,CRC-<>用于較長的數據塊。CRC 是 SD SPI 接口的可選部分,但應用于保證數據完整性,除非應用限制阻止其使用。

循環冗余校驗

CRC算法通常用于檢測由不可靠的通信信道引起的錯誤。特定CRC的選擇取決于要保護的數據大小。對于標清介質,指定了CRC-7和CRC-16。

CRC算法將受保護的數據除以選定的除數并產生余數。由于算法中使用的多項式數學,這種除法是在沒有進位邏輯的情況下完成的。由于不需要進位,因此可以通過邏輯異或運算完成除法。選定的除數通常稱為CRC多項式。然后,生成的余數與數據一起傳輸,接收器可以使用該余數來檢查數據在傳輸過程中是否未損壞。

對于CRC-7,余數可以使用軟件中的7位移位寄存器進行計算。此移位寄存器在計算開始時初始化為所有零。當受保護數據的每個位(MSB優先)移入移位寄存器的LSB時,移位寄存器的MSB被移出并檢查。如果剛剛移出的位是 7,則移位寄存器的內容通過 XOR 與 CRC-0 多項式值 09x7 進行修改。如果移出移位寄存器的位為零,則不執行異或。一旦受保護數據的最后一位被移入并且條件異或完成,就必須以類似的方式再移入七個零。此過程稱為增強,并完成多項式除法。此時,可以直接從移位寄存器讀取CRC-<>值。

pYYBAGQBityAZAy_AAAr5x-FJls590.gif

圖2.CRC-7可以使用移位寄存器架構進行計算。

當接收器擁有所有受保護的數據時,接收器可以計算受保護數據的CRC-7值,并將其與接收到的CRC-7值進行比較。如果值不同,接收方知道受保護的數據在傳輸過程中已損壞。如果值匹配,接收方可以高度確定地知道數據完整性不會受到通信信道的影響。

CRC-16算法可以用同樣的方式構建。在這種情況下,移位寄存器的長度為16位而不是7位,多項式值更改為0x1021,輸入數據增加了16個零位。

SD 命令格式

命令以6字節格式發送到卡(圖3)。命令的第一個字節可以通過使用十六進制6x0對 40 位命令代碼進行 OR 運算來構造。接下來的四個字節提供單個 32 位參數(如果命令需要);最后一個字節包含字節 7 到 1 的 CRC-5 校驗和。表 1 列出了重要的 SD 命令。

poYBAGQBit2AaCllAAATmG9Of-8513.gif

圖3.SPI 模式 SD 命令以 6 字節格式發送到卡。

命令 記憶 論點 描述
0 (0x00) GO_IDLE_STATE 沒有 R1 重置 SD 卡。
9 (0x09) SEND_CSD 沒有 R1 發送特定于卡的數據。
10 (0x0a) SEND_CID 沒有 R1 發送卡標識。
17 (0x11) READ_SINGLE_BLOCK 地址 R1 讀取字節地址處的塊。
24 (0x18) WRITE_BLOCK 地址 R1 在字節地址處寫入塊。
55 (0x37) APP_CMD 沒有 R1 應用程序命令的前綴。
59 (0x3b) CRC_ON_OFF 僅位 0 R1 參數將 CRC 設置為 (1) 或關閉 (0)。
41 (0x29) SEND_OP_COND 沒有 R1 啟動卡初始化。

在 SPI 模式下初始化 SD 卡

上電時,SD 卡默認采用專有的 SD 總線協議。要將卡切換到 SPI 模式,主機發出命令 0 (GO_IDLE_STATE)。SD 卡通過觀察卡選擇 (CS) 引腳在GO_IDLE_STATE命令期間保持低電平來檢測 SPI 模式選擇。卡以響應格式R1響應(圖4)。空閑狀態位設置為高,表示卡已進入空閑狀態。為了保持與MMC卡的兼容性,在此階段SPI時鐘速率不得超過400kHz。

pYYBAGQBit-ATb64AAAUa5qM8cM015.gif

圖4.響應格式 R1 指示發出的命令成功或失敗。

現在 SD 卡處于 SPI 模式,SD 規范要求主機先發出初始化命令,然后才能處理任何其他請求。為了區分 MMC 和 SD 卡,SD 卡實現了 MMC 卡不響應的備用初始化命令。向卡發送命令 55 (APP_CMD) 后跟應用程序命令 41 (SEND_OP_COND) 即可完成此重要步驟。MMC 卡不響應命令 55,該命令可用于拒絕 MMC 卡作為無效介質。重復此命令序列,直到來自卡的R1響應中的所有位都為零(即空閑位變低)。

poYBAGQBiuCAFL7IAAAmo-Vqiis742.gif

清單 1.代碼必須使用 SEND_OP_COND 標識 SD 和 MMC 卡。

SD 卡包含幾個重要的寄存器,這些寄存器提供有關 SD 卡的信息。最重要的寄存器是卡特定數據寄存器(CSD)。對于我們的示例應用程序,我們對內存的塊大小和總大小感興趣。我們還必須注意卡識別數據寄存器(CID),因為它包含有關卡制造商和序列號的詳細信息。圖 5 顯示了 CSD 和 CID 寄存器的布局。

pYYBAGQBiuGAOpTZAABtc7pwkTQ236.gif

圖5.CSD 和 CID 寄存器提供有關 SD 卡的信息。

檢查 SD 卡響應

要從卡中讀取卡寄存器或塊,我們必須首先了解卡如何響應我們的查詢。在 SPI 模式下,SD 卡使用 R9 格式回復命令SEND_CSD (10)、SEND_CID (17) 和READ_SINGLE_BLOCK (1)。接下來是開始令牌、請求的數據,最后是數據的 CRC-16 校驗和。我們不能假設 R1 回復和數據啟動令牌一個接一個地立即發生,因為總線可以在這兩個事件之間進入空閑狀態一段時間。圖 6 詳細介紹了數據響應。

poYBAGQBiuKAbH6WAAAkj1avX1M985.gif

圖6.從 SD 卡到主機的數據傳輸以啟動令牌為前綴。

讀取懲教署和國際舞蹈委員會寄存器元數據

SEND_CSD 和 SEND_CID 命令發回用于確定 SD 卡參數的寄存器內容。這些命令返回固定數量的字節,分別對應于 CSD 或 CID 寄存器的大小。這些 SEND 命令的 SD 卡將忽略命令字節中包含的參數。

從 SD 卡讀取數據塊

從SD卡讀取數據塊非常簡單。主機發出 READ_SINGLE_BLOCK 命令,并將起始字節地址作為參數。此地址必須與介質上塊的開頭對齊。然后,SD 卡評估此字節地址,并使用 R1 命令回復進行響應。命令回復中指示超出范圍的地址。

如果從 SD 介質完成讀取而沒有錯誤,則會發送一個起始數據令牌,后跟固定數量的數據字節和兩個字節用于 CRC-16 校驗和。如果 SD 卡遇到硬件故障或介質讀取錯誤,則不會發送啟動數據令牌。相反,將發送錯誤令牌并中止數據傳輸。

將數據塊寫入 SD 卡

寫入數據塊類似于讀取,因為主機必須提供與 SD 卡塊邊界對齊的字節地址。寫入塊大小必須等于 READ_BL_LEN,通常為 512 字節。通過發出 WRITE_BLOCK (24) 命令來啟動寫入,SD 卡使用 R1 命令響應格式響應該命令。如果命令響應指示寫入可以繼續,則主機將傳輸數據開始令牌,后跟固定數量的數據字節,并以發送數據的 CRC-16 校驗和結束。SD 卡返回一個數據響應令牌,指示接受或拒絕要寫入的數據。

如果數據被接受,SD卡在卡繁忙時將DO線持續保持低電平。主機沒有義務在繁忙時段保持卡選擇低電平,如果 CS 被取消斷言,SD 卡會釋放 DO 線路。當多個器件連接到SPI總線時,此過程非常有用。主機可以等待 SD 卡釋放忙音指示,也可以通過定期斷言芯片選擇來檢查卡。如果卡仍然繁忙,它將把 DO 線拉低以指示此狀態。否則,卡將 DO 線返回到空閑狀態(請參閱圖 7)。

pYYBAGQBiuOAOsjQAAAYbLFo8F4831.gif

圖7.從主機到 SD 卡的數據傳輸涉及更復雜的握手。

SPI 命令和數據錯誤檢測

CRC-7 和 CRC-16 校驗和可用于檢測主機和 SD 卡之間通信中的錯誤。錯誤檢測允許在發生物理引起的錯誤時進行可靠的錯誤恢復,例如插入和移除過程中的觸點反彈或可拆卸介質固有的不理想的觸點配接情況。強烈建議使用校驗和,方法是使用參數中設置的最低位發出 CRC_ON_OFF (59) 命令。

poYBAGQBiuSALjZ_AAAXc2kf4e0550.gif

清單 2.強烈建議啟用 CRC 校驗和。

結論

SD介質卡格式代表了一種緊湊、低功耗的非易失性存儲器解決方案,適用于嵌入式系統。通過使用MAXQ2000微控制器提供的硬件SPI支持,可以以很小的開銷訪問SD介質卡。Maxim提供的參考軟件演示了最小實現,其中包括從SD卡讀取模塊和向SD卡寫入模塊所需的基本操作。

審核編輯:郭婷

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

    關注

    48

    文章

    7336

    瀏覽量

    150131
  • 嵌入式
    +關注

    關注

    5046

    文章

    18821

    瀏覽量

    298628
  • 存儲器
    +關注

    關注

    38

    文章

    7366

    瀏覽量

    163099
收藏 人收藏

    評論

    相關推薦

    如何存儲應用程序中使用的數據

    我應該用什么API來存儲數據?我使用CYW43907,手冊上說它支持外部閃存。我想知道我
    發表于 11-13 15:19

    CypressSRAM技術

    SRAM的單元基于SONOS技術。他們利用Fowler-Nordheim隧穿(FN隧穿)的優勢通過將電荷捕獲在夾層氮化物層中來存儲
    發表于 04-08 14:58

    MAXQ2000 SPI模塊與MAX6951/MAX6950怎么配合使用?

    本應用筆記提供MAXQ?匯編程序范例,說明MAXQ2000 SPI模塊與MAX6951/MAX6950的配合使用。
    發表于 05-31 06:08

    MAXQ2000微控制器與MAX4397是如何連接的?

    MAX4397是什么?MAXQ2000微控制器與MAX4397是如何連接的?
    發表于 06-04 06:15

    IMX6UL如何從安全存儲 (SNVS) 讀取或寫入?

    我目前正在使用 YOCTO sumo linux 內核 L4.14.98-2.3.1 和 imx6ul。在我的應用程序中,我們需要將安全數據(例如密鑰)存儲在安全
    發表于 04-14 07:38

    MAXQ2000數據存儲器中實現軟堆棧

    摘要:本應用筆記介紹匯編應用中在數據存儲器內實現軟堆棧的簡單方法。該方法使用了MAXQ2000和其他基于MAXQ20的微控制器。采用了MA
    發表于 04-23 16:04 ?940次閱讀

    利用MAXQ2000設計電壓表

    摘要:本應用筆記演示了如何配置MAXQ2000微控制器實現簡單的電壓表設計。該應用采用MAXQ2000評估板,其中包括4½位段式LCD顯示器和MAX1407數據采集系統(DAS)以及一對外部電阻。
    發表于 04-23 16:07 ?807次閱讀
    利用<b class='flag-5'>MAXQ2000</b>設計電壓表

    利用SD存儲介質擴展MAXQ2000數據存儲空間

    摘要:本文討論如何使用安全數字(SD)媒體格式擴展MAXQ2000
    發表于 04-23 16:25 ?1162次閱讀
    利用<b class='flag-5'>SD</b><b class='flag-5'>存儲</b><b class='flag-5'>介質</b><b class='flag-5'>擴展</b><b class='flag-5'>MAXQ2000</b>的<b class='flag-5'>非</b><b class='flag-5'>易</b><b class='flag-5'>失</b><b class='flag-5'>性</b><b class='flag-5'>數據</b><b class='flag-5'>存儲空間</b>

    充分利用MAXQ®處理器的存儲服務

    充分利用MAXQ®處理器的存儲服務 摘要:需要
    發表于 05-02 09:28 ?860次閱讀
    充分利用<b class='flag-5'>MAXQ</b>®處理器的<b class='flag-5'>非</b><b class='flag-5'>易</b><b class='flag-5'>失</b><b class='flag-5'>存儲</b>服務

    MAXQ處理器的存儲功能

    MAXQ器件包含的硬件部分可以實現偽馮諾依曼架構,如同訪問數據空間一樣訪問代碼空間。這種額外的多功能,結合
    發表于 05-31 11:51 ?1184次閱讀
    <b class='flag-5'>MAXQ</b>處理器的<b class='flag-5'>非</b><b class='flag-5'>易</b><b class='flag-5'>失</b><b class='flag-5'>存儲</b>功能

    新型存儲MVM數據管理

    為適應底層存儲架構的變化,上層數據庫系統已經經歷多輪的演化與變革.在大數據環境下,以
    發表于 01-02 19:04 ?0次下載
    新型<b class='flag-5'>非</b><b class='flag-5'>易</b><b class='flag-5'>失</b><b class='flag-5'>存儲</b>MVM<b class='flag-5'>數據</b>管理

    利用SD存儲介質擴展MAXQ2000數據存儲空間

    本文討論如何使用安全數字(SD)媒體格式打“展MAXQ2000
    發表于 04-08 09:59 ?4次下載

    MAXQ2000數據存儲器中實現軟堆棧

    本應用筆記演示一種在數據存儲器中實現軟堆棧的簡單方法,用于基于匯編的應用。該方法使用MAXQ2000和其他基于MAXQ20的微控制器。示例
    的頭像 發表于 01-11 11:20 ?627次閱讀

    MAXQ2000數據存儲器中實現軟堆棧

    MAXQ2000微控制器與Maxim的RISC微控制器系列MAXQ器件一樣,都是基于MAXQ20內核。基于MAXQ20的微控制器通常可實現一個16位寬硬堆棧,其深度固定不變(
    的頭像 發表于 02-14 18:20 ?695次閱讀

    使用MAXQ2000進行音頻濾波

    乘法累加單元(MAC)和單周期內核的組合使MAXQ2000成為多功能微控制器(μC)。MAXQ2000具有性能和I/O外設,非常適合許多應用:鬧鐘、手持醫療設備、數字讀數——任何需要低功耗、高性能和大量I/O的應用。通過集成MAC,MA
    的頭像 發表于 03-02 14:13 ?794次閱讀
    使用<b class='flag-5'>MAXQ2000</b>進行音頻濾波