20.2.6 SDIO命令寄存器:SDIO_CMD
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | CE_ATACMD | nIEN | ENCMDcomp1 | SDIOSuspend | CPSMEN | WAITPEND | WAITINT | WAITRESP | CMDINDEX |
Bit 14:CE-ATA命令
如果設(shè)置該位,CPSM轉(zhuǎn)至CMD61
Bit 13:不使能中斷
如果未設(shè)置該位,則使能CE-ATA設(shè)備的中斷
Bit 12:使能CMD完成
如果設(shè)置該位,則使能命令完成信號(hào)
Bit 11:SDIO暫停命令
如果設(shè)置該位,則將要發(fā)送的命令是一個(gè)暫停命令(只能用于SDIO卡)
Bit 10:命令通道狀態(tài)機(jī)使能位
如果設(shè)置該位,則使能CPSM
Bit 9:CPSM等待數(shù)據(jù)傳輸結(jié)束(CmdPend內(nèi)部信號(hào))
如果設(shè)置該位,則CPSM在開始發(fā)送一個(gè)命令之前等待數(shù)據(jù)傳輸結(jié)束
Bit 8:CPSM等待中斷請(qǐng)求
如果設(shè)置該位,則CPSM關(guān)閉命令超時(shí)控制并等待中斷請(qǐng)求
Bit 7~Bit 6:等待響應(yīng)位
00:無響應(yīng),期待CMDSENT標(biāo)志
01:短響應(yīng),期待CMDREND或CCRCFAIL標(biāo)志
10:無響應(yīng),期待CMDSENT標(biāo)志
11:長(zhǎng)響應(yīng),期待CMDREND或CCRCFAIL標(biāo)志
Bit 5~Bit 0:命令索引,作為命令的一部分發(fā)送到卡中
20.2.7 SDIO數(shù)據(jù)定時(shí)器:SDIO_DTIMER
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DATATIME[31:16] | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DATATIME[15:0] |
Bit 31~Bit 0:數(shù)據(jù)超時(shí)時(shí)間,以卡總線時(shí)鐘周期為單位的數(shù)據(jù)超時(shí)時(shí)間
20.2.8 SDIO數(shù)據(jù)長(zhǎng)度寄存器:SDIO_DLEN
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | DATALENGTH[24:16] | ||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DATALENGTH[15:0] |
Bit 24~Bit 0:數(shù)據(jù)長(zhǎng)度,要傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)目
20.2.9 SDIO數(shù)據(jù)控制寄存器:SDIO_DCTRL
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | SDIOEN | RWMOD | RWSTOP | RWSTART | DBLOCKSIZE | DMAEN | DTMODE | DTDIR | DTEN |
Bit 11:SDIO使能功能
如果設(shè)置了該位,則DPSM執(zhí)行SDIO卡特定的操作
Bit 10:讀等待模式
0:停止SDIO_CK控制讀等待
1:使用SDIO_D2控制讀等待
Bit 9:讀等待停止
0:如果設(shè)置了RWSTART,執(zhí)行讀等待
1:如果設(shè)置了RWSTART,停止讀等待
Bit 8:讀等待開始
設(shè)置該位開始讀等待操作
Bit 7~Bit 4:數(shù)據(jù)塊長(zhǎng)度,當(dāng)選擇了塊數(shù)據(jù)傳輸模式,該域定義數(shù)據(jù)塊長(zhǎng)度
0000:塊長(zhǎng)度=1字節(jié)
0001:塊長(zhǎng)度=2字節(jié)
0010:塊長(zhǎng)度=4字節(jié)
0011:塊長(zhǎng)度=8字節(jié)
0100:塊長(zhǎng)度=16字節(jié)
0101:塊長(zhǎng)度=32字節(jié)
0110:塊長(zhǎng)度=64字節(jié)
0111:塊長(zhǎng)度=128字節(jié)
1000:塊長(zhǎng)度=256字節(jié)
1001:塊長(zhǎng)度=512字節(jié)
1010:塊長(zhǎng)度=1024字節(jié)
1011:塊長(zhǎng)度=2048字節(jié)
1100:塊長(zhǎng)度=4096字節(jié)
1101:塊長(zhǎng)度=8192字節(jié)
1110:塊長(zhǎng)度=16384字節(jié)
1111:保留
Bit 3:DMA使能位
0:關(guān)閉DMA
1:使能DMA
Bit 2:數(shù)據(jù)傳輸模式
0:塊數(shù)據(jù)傳輸
1:流數(shù)據(jù)傳輸
Bit 1:數(shù)據(jù)傳輸方向
0:控制器至卡
1:卡至控制器
Bit 0:數(shù)據(jù)傳輸使能位
如果設(shè)置該位為1,則開始數(shù)據(jù)傳輸。根據(jù)DTSIR方向位,DPSM進(jìn)入Wait_S或Wait_R狀態(tài),如果在傳輸?shù)囊婚_始就設(shè)置了RWSTART位,則DPSM進(jìn)入讀等待狀態(tài)。不需要在數(shù)據(jù)傳輸結(jié)束后清除使能位,但必須更改SDIO_DCTRL以允許新的數(shù)據(jù)傳輸。
20.2.10 SDIO狀態(tài)寄存器:SDIO_STA
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | CEATAEND | SDIOIT | RXDAVL | TXDAVL | RXFIFOE | TXFIFOE | RXFIFOF | TXFIFOF | |||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RXFIFOHF | TXFIFOHF | RXACT | TXACT | CMDACT | DBCKEND | STBITERR | DATAEND | CMDSENT | CMDREND | RXOVERR | TXUNDERR | DTMEOUT | CTIMEOUT | DCRCFAIL | CCRCFAIL |
Bit 23:在CMD61接收到CE-ATA命令完成信號(hào)
Bit 22:收到SDIO中斷
Bit 21:在接收FIFO中的數(shù)據(jù)可用
Bit 20:在發(fā)送FIFO中的數(shù)據(jù)可用
Bit 19:接收FIFO空
Bit 18:發(fā)送FIFO空
若使用了硬件流控制,當(dāng)FIFO包含2個(gè)字時(shí),TXFIFOE信號(hào)變?yōu)橛行А?
Bit 17:接收FIFO滿
若使用了硬件流控制,當(dāng)FIFO還差2個(gè)字滿時(shí),RXFIFOF信號(hào)變?yōu)橛行А?
Bit 16:發(fā)送FIFO滿
Bit 15:接收FIFO半滿,F(xiàn)IFO中至少還有8個(gè)字
Bit 14:發(fā)送FIFO半空,F(xiàn)IFO中至少還可以寫入8個(gè)字。
Bit 13:正在接收數(shù)據(jù)
Bit 12:正在發(fā)送數(shù)據(jù)
Bit 11:正在傳輸命令
Bit 10:已發(fā)送/接收數(shù)據(jù)塊(CRC檢測(cè)成功)
Bit 9:在寬總線模式,沒有在所有數(shù)據(jù)信號(hào)上檢測(cè)到起始位
Bit 8:數(shù)據(jù)結(jié)束(數(shù)據(jù)計(jì)數(shù)器,SDIO_DCOUNT=0)
Bit 7:命令已發(fā)送(不需要響應(yīng))
Bit 6:已接收到響應(yīng)(CRC檢測(cè)成功)
Bit 5:接收FIFO上溢錯(cuò)誤
Bit 4:發(fā)送FIFO下溢錯(cuò)誤
Bit 3:數(shù)據(jù)超時(shí)
Bit 2:命令響應(yīng)超時(shí)
命令超時(shí)時(shí)間是一個(gè)固定的值,為64個(gè)SDIO_CK時(shí)鐘周期。
Bit 1:已發(fā)送/接收數(shù)據(jù)塊(CRC檢測(cè)失敗)
Bit 0:已收到命令響應(yīng)(CRC檢測(cè)失?。?/p>
注:狀態(tài)寄存器可以用來查詢SDIO控制器的當(dāng)前狀態(tài)。比如SDIO_STA的位2表示命令響應(yīng)超時(shí),說明SDIO的命令響應(yīng)出了問題。我們通過設(shè)置SDIO_ICR的位2則可以清除這個(gè)超時(shí)標(biāo)志,而設(shè)置SDIO_MASK的位2,則可以開啟命令響應(yīng)超時(shí)中斷,設(shè)置為0關(guān)閉。
20.2.11 SDIO數(shù)據(jù)FIFO寄存器:SDIO_FIFO
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FIFODATA[31:16] | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
FIFODATA[15:0] |
Bit 31~Bit 0:接收或發(fā)送FIFO數(shù)據(jù)
FIFO數(shù)據(jù)占據(jù)32個(gè)32位的字,地址為:SDIO基址+0x80至SDIO基址+0xFC
數(shù)據(jù)FIFO寄存器包括接收和發(fā)送FIFO,他們由一組連續(xù)的32個(gè)地址上的32個(gè)寄存器組成,CPU可以使用FIFO讀寫多個(gè)操作數(shù)。例如我們要從SD卡讀數(shù)據(jù),就必須讀SDIO_FIFO寄存器,要寫數(shù)據(jù)到SD卡,則要寫SDIO_FIFO寄存器。SDIO將這32個(gè)地址分為16個(gè)一組,發(fā)送接收各占一半。而我們每次讀寫的時(shí)候,最多就是讀取發(fā)送FIFO或?qū)懭虢邮誇IFO的一半大小的數(shù)據(jù),也就是8個(gè)字(32個(gè)字節(jié)),在操作SDIO_FIFO(不論讀出還是寫入)必須是以4字節(jié)對(duì)齊的內(nèi)存進(jìn)行操作,否則將導(dǎo)致出錯(cuò)。
20.3 SD卡初始化
20.3.1 卡上電流程
20.3.2 卡初始化流程
-
單片機(jī)
+關(guān)注
關(guān)注
6060文章
44835瀏覽量
645272 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7617瀏覽量
166074 -
SD卡
+關(guān)注
關(guān)注
2文章
574瀏覽量
64974 -
SDIO
+關(guān)注
關(guān)注
2文章
73瀏覽量
19714
發(fā)布評(píng)論請(qǐng)先 登錄
【紫光同創(chuàng)國(guó)產(chǎn)FPGA教程】【第八章】SD卡讀寫實(shí)驗(yàn)

【GD32F470紫藤派開發(fā)板使用手冊(cè)】第十二講 SDIO-SD卡讀寫實(shí)驗(yàn)

arduino學(xué)習(xí)筆記18 - SD卡讀寫實(shí)驗(yàn)
接觸式IC卡讀寫實(shí)驗(yàn)

ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)06_SD卡讀寫
ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)_SD卡讀寫
STM32CubeMX生成一個(gè)SD卡讀寫程序
STM32入門學(xué)習(xí)筆記之SD卡基礎(chǔ)讀寫實(shí)驗(yàn)1

STM32入門學(xué)習(xí)筆記之SD卡基礎(chǔ)讀寫實(shí)驗(yàn)3
STM32入門學(xué)習(xí)筆記之SD卡基礎(chǔ)讀寫實(shí)驗(yàn)4
SD卡基礎(chǔ)讀寫實(shí)驗(yàn)

基于FPGA的SD卡的數(shù)據(jù)讀寫實(shí)現(xiàn)(SD NAND FLASH)

【GD32F303紅楓派開發(fā)板使用手冊(cè)】第二十三講 SDIO-SD卡讀寫實(shí)驗(yàn)

評(píng)論