SD和SDIO


SD和SDIO

目錄

1 SDIO簡介

SD標准提供了極大的靈活性,包括將SD插槽用於存儲卡以外的功能。SDIO卡是通過使用標准SD卡插槽為設備提供新功能來擴展設備功能的接口。新功能的部分列表包括:

  • GPS
  • Camera
  • Wi-Fi
  • Ethernet
  • Barcode readers
  • Bluetooth

SDIO(SD輸入/輸出)卡基於SD記憶卡並與之兼容。這種兼容性包括機械,電氣,功率,信號和軟件。SDIO卡的目的是為移動電子設備提供低功耗的高速數據I / O。

1.1 SDIO功能

  • 針對部分和固定應用
  • 最少或不需要修改SD物理總線
  • 對內存驅動程序軟件的更改最少
  • 擴展的物理形式因子可用於特殊應用
  • 即插即用(PnP)支持
  • 多功能支持,包括多個I / O以及組合的I / O和內存
  • 一張卡最多支持7個I / O功能和一個內存。
  • 允許卡中斷主機。
  • 工作電壓范圍:2.7-3.6V
  • 標准SDIO功能的應用規范。
  • 多種形式的事實:
    • 全尺寸SDIO
    • miniSDIO

2 SDIO信令定義

 

2.1 SDIO卡類型

  • 全速卡:
  • 在0-25MHz的完整時鍾范圍內支持SPI,1位SD和4位SD傳輸模式。
  • 超過100Mb /秒(10MB /秒)
  • 低速SDIO卡:
  • 僅需要SPI和1位SD傳輸模式。4位支持是可選的。
  • 支持0-400 KHz的完整時鍾范圍

2.2 SDIO卡模式

 

2.2.1 SPI(卡強制支持)

在此模式下,未定義存儲器的引腳8用作中斷引腳。

2.2.2 1位SD數據傳輸模式(必選卡)

在這種模式下,數據僅在DAT [0]引腳上傳輸。

2.2.3 4位SD數據傳輸模式(對於高速卡是必需的,對於低速是可選的)

在此模式下,數據在所有四個數據引腳(DAT [3:0])上傳輸。4位SD模式可提供最高100 Mb /秒的最高數據傳輸速度。

2.3信號引腳

signal_pins.jpg

3 SD總線協議

 

3.0.1 SD總線

SD總線上的通信基於命令和數據位流,這些命令和數據位流由起始位啟動,並由停止位終止。

  • 命令:命令是啟動操作的令牌。命令從主機發送到單個卡(尋址命令)或所有連接的卡(廣播命令)。命令在CMD線上串行傳輸。
  • 響應:響應是令牌,令牌是從地址卡或從所有連接的卡(同步)發送到主機的,作為對先前收到的命令的答復。響應在CMD線上串行傳輸。
  • 數據:可以將數據從卡傳輸到主機,反之亦然。數據通過數據線傳輸。

command_response.png

卡尋址使用會話地址實現,在初始化階段分配給卡。
與SD記憶卡之間的數據傳輸是分塊進行的。數據塊總是以CRC位為后。定義了單個和多個塊操作。請注意,多塊操作模式最好用於更快的寫操作。當在CMD線上發出停止命令時,多塊傳輸將終止。主機可以將數據傳輸配置為使用單個或多個數據線。

block_read_operation.png

塊寫操作使用DAT0數據線上的寫操作持續時間的簡單忙碌信號,而不管用於傳輸數據的數據線的數量如何。

block_write_operation.png

命令令牌具有以下編碼方案:

command_token_format.png

每個命令令牌的前面都有一個開始位(0),后面是一個結束位(1)。總長度為48位。每個令牌均受CRC位保護,因此可以檢測到傳輸錯誤,並且可以重復操作。

根據其內容,重操作令牌具有四種編碼方案之一。令牌長度為48或136位。塊數據的CRC保護算法是16位CCITT多項式。

response_token_format.png

在CMD線中,最高有效位(MSB)首先發送,最低有效位(LSB)最后發送。使用寬帶總線選項時,數據一次傳輸4位。對於每條DAT線,都發送起始位和結束位以及CRC位。分別計算和檢查每個DAT線的CRC位。卡的CRC狀態響應和“忙”指示將僅通過DAT0發送到主機。

SD卡有兩種類型的數據包格式。(1)常規數據(8位寬度):常規數據(8位寬度)首先以LSB(最低有效字節)發送,最后以MSB(最高有效字節)發送。但是在單個字節中,它是首先的MSB(最高有效位),最后是LSB(最低有效位)。(2)寬數據(SD存儲器寄存器):寬數據從MSB位移出。

  • 常用數據的數據包格式(8位寬度)

data_packet_format.png

  • 寬數據的數據包格式(例如ACMD13)

data_packet_format_wide.png

3.1 SD存儲卡功能說明

主機和卡之間的所有通信均由主機(主機)控制。主機發送兩種類型的命令:廣播命令和尋址(點對點)命令。

  • 廣播命令

廣播命令適用於所有卡。其中一些命令需要響應。

  • 尋址(點對點)命令

已尋址的命令將發送到已尋址的卡,並引起該卡的響應。

  • 卡識別模式

復位后,主機在總線上尋找新卡時,主機將處於卡識別模式。重置后,卡將處於此模式,直到收到SEND RCA命令(CMD3)。

  • 數據傳輸方式

卡首次發布RCA后將進入數據傳輸模式。主機在識別總線上的所有卡后將進入數據傳輸模式。

下表顯示了操作模式和卡狀態之間的依賴關系。

operation_modes.png

3.2卡識別模式

在卡識別模式下,主機會重置處於卡識別模式的所有卡,驗證操作電壓范圍,識別卡,並要求它們發布相對卡地址(RCA)。對每個ard分別在其自己的CMD線上執行此操作。卡識別模式下的所有數據通信僅使用命令行(CMD)。在卡識別過程中,卡應以識別時鍾速率的SD時鍾頻率運行。

3.2.1卡重置

GO IDLE STATE(CMD0)命令是軟件重置命令,可將每張卡設置為空閑狀態,而與當前卡狀態無關。

3.2.2工作條件驗證

主機發出一個指定電壓的復位命令(CMD0),同時假定該卡可能支持該命令。為了驗證電壓,在物理層規范版本2.00中定義了以下新命令(CMD8)。如果條件
發送(CMD8)用於驗證SD存儲卡接口的運行狀況。該卡通過分析CMD8的參數來檢查操作條件的有效性,而主機通過分析CMD8的響應來檢查有效性。所提供的電壓由自變量中的VHS表示。該卡假定VHS中指定的電壓為當前提供的電壓。在任何給定時間,只能將VHS的1位設置為1。CRC和校驗碼都用於主機,以檢查主機與卡之間通信的有效性。如果卡無法在提供的電壓下運行,則它不會返回任何響應並保持空閑狀態。必須先在第一個ACMD41之前發出CMD8,才能初始化大容量SD存儲卡。

SD SEND OP COND(ACMD41)旨在為SD存儲卡主機提供識別和拒絕與主機所需的V DD范圍不匹配的卡的機制無法在指定范圍內執行數據傳輸的卡應將其自身從進一步的總線操作中丟棄,並進入非活動狀態注意,ACMD41是專用命令,因此APP CMD(CMD55)必須始終在ACMD41之前。

card_identification_mode.png

3.3卡的初始化和識別

通過設置操作條件和OCR中的HCS位, 初始化過程從SD SEND OP COND(ACMD41)開始HCS(主機容量支持)位設置為1表示主機支持大容量SD內存卡。HCS(主機容量支持)位設置為0表示主機不支持高容量SD存儲卡。

card_initialization.png

3.4數據傳輸方式

在卡識別模式結束之前,主機應保持在OD自由狀態,因為某些卡在卡識別模式期間可能會有工作頻率限制。在數據傳輸模式下,主機可以在f PP頻率范圍內操作卡主機發出SEND CSD(CMD9)以獲得卡特定數據(CSD寄存器),例如塊長度,卡存儲容量等。廣播命令SET DSR(CMD4)配置所有已識別卡的驅動器級。它根據應用程序總線布局,總線上卡的數量和數據傳輸頻率對它們的DSR寄存器進行編程。此時時鍾頻率也從f OD切換到f PPDSR命令是卡和主機的選項。

CMD7用於選擇一張卡並將其置於傳輸狀態。在給定的時間只能有一張卡處於轉移狀態。如果先前選擇的卡處於“傳輸狀態”,則它與主機的連接將被釋放,它將移回“ 待機”狀態當使用保留的相對卡地址“ 0x0000”發出CMD7時,所有卡都將返回到待機狀態

data_transfer_mode.png

各種數據傳輸模式之間的關系總結如下。

  • 停止命令(CMD12)可以隨時中止所有數據讀取命令。數據傳輸

會終止,並且卡會返回到轉讓狀態讀取命令為:塊讀取(CMD17),多塊讀取(CMD18),發送寫保護(CMD30),發送scr(ACMD51)和讀取模式下的常規命令(CMD56)。

  • 停止命令(CMD12)可以隨時中止所有數據寫入命令。在通過CMD7取消選擇卡之前,應停止寫命令。寫入命令為:塊寫入(CMD24和CMD25),程序CSD(CMD27),鎖定/解鎖命令(CMD42)和寫入模式下的常規命令(CMD56)。
  • 一旦數據傳輸完成,卡將退出數據寫入狀態,並進入編程狀態(傳輸成功)或傳輸狀態(傳輸失敗)。
  • 如果塊寫操作停止並且最后一個塊的塊長度和CRC有效,則將對數據進行編程。
  • 卡可以為塊寫提供緩沖。這意味着可以在編程前一個塊的同時將下一個塊發送到卡。

如果所有寫緩沖區都已滿,並且只要卡處於編程狀態,DAT0線將保持低電平(忙)。

  • 沒有用於寫CSD,寫保護和擦除的緩沖選項。這意味着當卡忙於服務這些命令中的任何一個時,將不接受其他數據傳輸命令。

只要卡處於忙狀態且處於編程狀態, DAT0線就會保持低電平實際上,如果卡的CMD和DAT0線保持分開,並且主機保持繁忙的DAT0線與(其他卡的)其他DAT0線斷開連接,則主機可以在卡處於繁忙狀態時訪問其他卡。

  • 參數設置命令同時卡編程允許。

參數設置命令包括:​​設置塊長度(CMD16),擦除塊開始(CMD32)和擦除塊結束(CMD33)。

  • 卡編程時不允許讀取命令。
  • 使用CMD7 將另一張卡從待機狀態轉移傳輸狀態不會終止擦除,並且

編程操作。卡將切換到“ 斷開狀態”,並釋放DAT線。

  • 處於斷開狀態時,可以使用CMD7 拔出卡。在這種情況下,卡將進入編程狀態並重新激活忙碌指示。
  • 重置卡(使用CMD0或CMD15)將終止所有掛起或激活的編程操作。這可能會破壞卡上的數據內容。這是房東的

防止這種情況的責任。

  • CMD34-37,CMD50和CMD57保留用於SD命令系統擴展。這些命令的狀態轉換在每個命令系統規范中定義。

3.5命令

 

3.5.1命令格式

所有命令的固定代碼長度均為48位,在25 MHz時的傳輸時間為1.92 us,在50 MHz時的傳輸時間為0.96 us。

command_format.png

3.5.2詳細命令說明

basic_command_1.png

basic_command_2.png

write_command.png

3.6回應

所有響應都通過命令行CMD發送。響應傳輸始終從與響應代碼字對應的位串的左位開始。代碼長度取決於響應類型。

SD存儲卡有五種類型的響應。SDIO卡支持名為R4和R5的其他響應類型。

3.6.1 R1(正常響應命令):

代碼長度為48位。位45:40指示要響應的命令的索引,該值被解釋為二進制編碼的數字(介於0和63之間)。卡的狀態以32位編碼。

response_r1.png

3.6.2 R1b

R1b與R1相同,在數據線上傳輸可選的忙信號。根據命令接收之前的狀態,卡在接收到這些命令后可能會變得很忙。主機應檢查響應是否忙碌。

3.6.3 R2(CID,CSD寄存器)

碼長為136位。CID寄存器的內容作為對命令CMD2和CMD10的響應發送。CSD寄存器的內容作為對CMD9的響應發送。僅傳送CID和CSD的位[127…1],這些調節器的保留位1替換為響應的結束位。

response_r2.png

3.6.4 R3(OCR寄存器)

代碼長度為48位。OCR寄存器的內容作為對ACMD41的響應發送。

response_r3.png

3.6.5 R6(已發布的RCA響應)

代碼長度為48位。比特45:40表示要響應的命令的索引-在這種情況下,它將是'000011'(與狀態比特的比特5一起= CMD3)。參數字段的16個MSB位用於已發布的RCA編號。

response_r6.png

3.7 R7(卡接口狀態)

代碼長度為48位。卡支持電壓信息通過CMD8的響應發送。位19-16指示卡支持的電壓范圍。接受提供的電壓的卡返回R7響應。在響應中,卡將回顯參數中設置的電壓范圍和檢查模式。

response_r7.png

4 SDIO卡初始化

復位或上電后,卡上的所有I / O功能都將被禁用,並且卡的I / O部分不得執行任何操作,但CS = low的CMD5或CMD0除外。如果卡上安裝了SD內存,則該內存應能對所有常規的強制性內存命令做出正常響應。

sdio_initialization.png

知道SDIO的主機應在加電或CMD52寫入I / O復位后,發送CMD5 arg = 0作為初始化序列的一部分。發送沒有在這兩個復位條件之一之前的CMD5 arg = 0不會導致主機或卡進入初始化序列。

card_initialization_flow.png

card_initialization_flow_1.png

4.1 IO SEND OP COND命令(CMD5)

圖3-4顯示了IO SEND OP COND命令(CMD5)的格式用於SDIO卡的CMD5的功能類似於用於SD存儲卡的ACMD41的操作。用於查詢I / O卡所需的電壓范圍。對CMD5的正常響應是SD或SPI格式的R4。SD模式下的R4響應如圖3-5所示,SPI版本如圖3-6所示。

cmd5.png

4.2 IO SNED OP COND響應(R4)

接收到CMD5的SDIO卡應以SDIO唯一響應R4進行響應。SD和SPI模式的R4格式為:

r4.png

SD記憶體規格的5個差異

 

5.1不支持的SD內存命令

僅SDIO卡或Combo卡的I / O部分不支持SD存儲卡所需的幾個命令。這些命令中的某些命令在SDIO卡中沒有用,例如擦除命令,因此在SDIO中不受支持。此外,SD存儲卡中的一些命令與卡的SDIO部分一起使用時具有不同的命令。

unsupported_sd_memory_commands.png unsupported_sd_memory_commands_1.png

5.2修改的R6響應

存儲卡對CMD3的正常響應是R6。

r6_response_to_cmd3.png

5.3新的I / O讀/寫命令

 

5.3.1 IO RW DIRECT命令(CMD52)

IO RW DIRECT是在任何I / O功能(包括公共I / O區域(CIA))中訪問總共128K寄存器空間內的單個寄存器的最簡單方法。該命令僅使用1個命令/響應對讀取或寫入1個字節。通常的用途是初始化寄存器或監視I / O功能的狀態值。該命令是讀取或寫入單個I / O寄存器的最快方法,因為它僅需要一個sigle命令/響應pari。

cmd52.png

5.3.2 IO RW 直接響應(R5)

SDIO卡對CMD52的響應應采用以下兩種格式之一。卡與主機之間的通信是1位還是4位SD模式。

  1. CDM52響應(SD模式)

    cmd52_response1.png

    cmd52_response2.png

  2. R5,IO RW DIRECT響應(SPI模式)

    cmd52_response3.png

5.3.3 IO RW 擴展命令(CMD53)

為了使用單個命令讀取和寫入多個I / O寄存器,定義了一個新命令IO RW EXTENDED 。該命令允許通過單個命令讀取或寫入大量I / O寄存器。

cmd53.png

cmd53_1.png

6 SDIO卡內部操作

 

6.1概述

每個SDIO卡可能具有1到7個功能以及一個內置的存儲功能。

6.2中斷

所有SDIO主機都應支持硬件中斷。

6.3 SDIO固定內部映射

SDIO卡具有固定的內部寄存器空間和功能獨特的區域。固定區域包含有關卡以及固定位置中某些強制性和可選寄存器的信息。固定位置允許任何主機獲取有關卡的信息,並以簡單的方式執行諸如啟用之類的簡單操作。功能唯一區域是每個功能區域,由標准SDIO功能的應用程序規范或非標准功能的銷售商定義。

sdio_internal_map.png

6.4通用I / O區域(CIA)

通用I / O區域(CIA)必須在所有SDIO卡上實現。主機通過對功能0的I / O讀取和寫入來訪問CIA。提供CIA中的寄存器以啟用/禁用I / O功能的操作,控制中斷的產生以及可選地加載軟件支持I / O功能。CIA中的寄存器還提供有關功能可用性和要求的信息。CIA內支持三種不同的寄存器結構。他們是:

  1. 卡通用控制寄存器(CCCR)
  2. 功能基本寄存器(FBR)
  3. 卡信息結構(CIS)
 


免責聲明!

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



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