SDIO主要功能
- 支持1位總線贤姆,4位總線,8位總線脐往,8位總線可達(dá)48M傳輸速率蕊肥。
- 支持MMC卡谒获,SD卡和CE-ATA等標(biāo)準(zhǔn)
SDIO總線拓?fù)?/h2>
總線上的通信是通過傳送數(shù)據(jù)和命令實現(xiàn)的。
基本操作:命令/響應(yīng)壁却,某些操作還有數(shù)據(jù)令牌批狱。
在SD存儲器上是以數(shù)據(jù)塊的形式進(jìn)行傳輸。
-
當(dāng)選擇SDIO工作在SD4位數(shù)據(jù)總線工作模式時候展东,我們選中的引腳如下:
SD卡用到的引腳
-
數(shù)據(jù)的傳輸操作流程如下:(以讀操作為例)
- 主機發(fā)送命令赔硫,等待卡的響應(yīng)。
- 卡響應(yīng)以后盐肃,數(shù)據(jù)從卡發(fā)送至主機爪膊,經(jīng)過CRC后(也可能是數(shù)據(jù)流,無需每次CRC).
- 繼續(xù)發(fā)送下一個數(shù)據(jù)塊砸王。
- 主機發(fā)送一個STOP的命令后推盛,卡發(fā)回一個響應(yīng),傳輸完成谦铃。
SDIO功能描述
- 包含兩個部分耘成,一個是SDIO適配器,一個是AHB總線接口驹闰。
- 所有的數(shù)據(jù)線都工作于推挽模式瘪菌。
- 對于SD或SD I/O卡,時鐘頻率可以在0MHz至25MHz間變化嘹朗。
- 適配器,一共五個部分
- 寄存器
- 控制單元
電源管理和時鐘分頻
命令通道
發(fā)送命令和接收響應(yīng)
- 命令通道狀態(tài)機CPSM
- 命令固定為48位师妙,其中包括了開始和結(jié)束位,傳輸位一共3位
- 6位命令索引
- 32位參數(shù)
- 7位CRC
- 響應(yīng)則有兩種格式屹培,短格式如上命令格式默穴,長格式136位包括CID和CSD
數(shù)據(jù)通道
- SD卡可以選擇4位總線或者1位總線怔檩,默認(rèn)為1位
- 數(shù)據(jù)通道狀態(tài)機:DPSM使能后進(jìn)入WAIT-S或者WAIT-R狀態(tài)
- 發(fā)送狀態(tài):如果FIFO中有數(shù)據(jù),則發(fā)送出去
- 接收狀態(tài)壁顶,收到起始位進(jìn)入接收狀態(tài)珠洗,從卡中讀數(shù)據(jù)
- DPSM一共6個狀態(tài),包括idle若专,busy以外,還有WAIT-S和WAIT-R蝴猪,以及sending和receiving狀態(tài)调衰。
- 數(shù)據(jù)令牌格式分成兩種,一種是塊數(shù)據(jù)自阱,一種是流數(shù)據(jù)嚎莉,塊數(shù)據(jù)包含了16位CRC,流數(shù)據(jù)則沒有沛豌。
- 數(shù)據(jù)為32位+起始2位+CRC16位趋箩。
數(shù)據(jù)FIFO
- FIFO大小為32*32,根據(jù)RXACT和TXACT來分配FIFO為發(fā)送還是接收
- 發(fā)送FIFO,AHB數(shù)據(jù)寫入FIFO加派,有TXFIFOF和TXFIFOE表示FULL和EMPTY叫确,當(dāng)8個以上的FIFO空時候,TXFIFOHE芍锦,此時可以通知DMA繼續(xù)填入數(shù)據(jù)竹勉,TXDAVL和TXUNDERR用于處理異常。
- 接收FIFO類似娄琉。
總線接口
總線上的通信是通過傳送數(shù)據(jù)和命令實現(xiàn)的。
基本操作:命令/響應(yīng)壁却,某些操作還有數(shù)據(jù)令牌批狱。
在SD存儲器上是以數(shù)據(jù)塊的形式進(jìn)行傳輸。
當(dāng)選擇SDIO工作在SD4位數(shù)據(jù)總線工作模式時候展东,我們選中的引腳如下:
數(shù)據(jù)的傳輸操作流程如下:(以讀操作為例)
- 主機發(fā)送命令赔硫,等待卡的響應(yīng)。
- 卡響應(yīng)以后盐肃,數(shù)據(jù)從卡發(fā)送至主機爪膊,經(jīng)過CRC后(也可能是數(shù)據(jù)流,無需每次CRC).
- 繼續(xù)發(fā)送下一個數(shù)據(jù)塊砸王。
- 主機發(fā)送一個STOP的命令后推盛,卡發(fā)回一個響應(yīng),傳輸完成谦铃。
電源管理和時鐘分頻
發(fā)送命令和接收響應(yīng)
- 命令通道狀態(tài)機CPSM
- 命令固定為48位师妙,其中包括了開始和結(jié)束位,傳輸位一共3位
- 6位命令索引
- 32位參數(shù)
- 7位CRC
- 響應(yīng)則有兩種格式屹培,短格式如上命令格式默穴,長格式136位包括CID和CSD
下面的例子次乓,主機控制器使用CMD24(WRITE_BLOCK)從主機傳送512字節(jié)到MMC卡,關(guān)于CMD24命令孽水,后面有統(tǒng)一描述票腰。
- 執(zhí)行卡識別過程
- 提高SDIO_CK頻率
- 發(fā)送CMD7命令選擇卡
- 配置DMA2:清中斷,設(shè)置源地址和目標(biāo)地址女气,設(shè)置DMA2的其他參數(shù)杏慰,使能DMA
- 發(fā)送CMD24:
- 設(shè)置數(shù)據(jù)長度
- 卡的地址
- 設(shè)置命令WRITE_BLOCK
- 等待SDIO_STA中斷
- 等待DBCKEND
- 查詢DMA通道的使能狀態(tài)
卡功能描述
卡識別模式
此模式只用到了CMD線,執(zhí)行流程:復(fù)位所有卡主卫,檢測電壓范圍逃默,分配地址RCA
卡復(fù)位
CMD0軟件復(fù)位后,所有的卡處于閑置模式簇搅,分配默認(rèn)地址完域,閑置模式下卡的輸出端為高阻狀態(tài)。
操作電壓范圍確認(rèn)
超出操作電壓的卡將進(jìn)入非激活狀態(tài)瘩将,存儲了CID和CSD的卡吟税,電壓正常后則可以通信凹耙。
卡識別過程
MMC和SD卡的識別略有不同,MMC卡就是數(shù)碼相機用的卡,而SD卡更小肠仪,而SDIO接口通常用于WIFI和藍(lán)牙肖抱,GPS模塊用,SD卡的識別過程如下:
- 總線被激活
- 主機發(fā)送SEND_OP_COND
- 主機得到響應(yīng)异旧,不兼容的卡設(shè)為非激活狀態(tài)
- ALL_SEND_CID廣播發(fā)送到激活卡
- 激活的卡發(fā)送CID意述,如果有多個競爭,則用線與仲裁
- 主機發(fā)送SET_RELATIVE_ADDR吮蛹,作為剛剛CID卡的地址荤崇,然后此卡進(jìn)行待機。
- 如果有多個卡潮针,則進(jìn)行下一次循環(huán)术荤。
寫數(shù)據(jù)塊
- 執(zhí)行CMD24-27時,主機寫入數(shù)據(jù)每篷,在數(shù)據(jù)塊后跟CRC
- WRITE_BL_LEN決定了數(shù)據(jù)長度瓣戚,如果CRC錯誤,則所有數(shù)據(jù)全部丟掉焦读。
- 如果卡已寫滿子库,或者有對齊等錯誤發(fā)生時進(jìn)行處理,主機可以隨時發(fā)送SEND_STATUS來查詢狀態(tài)吨灭。
- READY_FOR_DATA表示卡還可以繼續(xù)寫入數(shù)據(jù)刚照,主機才繼續(xù)寫入
- 有錯誤時,SDIO_D拉低喧兄。
讀數(shù)據(jù)塊
讀數(shù)據(jù)塊的操作有點同寫數(shù)據(jù)塊
數(shù)據(jù)流操作
只適用于多媒體卡无畔,SD卡和SDIO不支持這種最快速的操作。