STM32寄存器列表 SDIO相关寄存器

作者:fly 发布于:2014-6-18 10:22 分类:嵌入式

出自www.forwhat.cn

 

SDIO_POWER(SDIO电源控制寄存器)

1-0位:PWRCTRL电源控制位,这些位用于定义卡时钟的当前功能状态,定义:00(电源关闭,卡的时钟停止),01(保留),10(保留的上电状态),11(上电状态,卡的时钟开启)

注意: 写数据后的7个HCLK时钟周期内,不能写入这个寄存器

 

SDIO_CLKCR(SDIO时钟控制寄存器)

14位:HWFC_EN硬件流控制使能,当使能硬件流控制后,关于TXFIFOE和RXFIFOF中断信号的意义请参考20.9.11节的SDIO状态寄存器的定义,

     定义:0(关闭硬件流控制),1(使能)

13位:NEGEDGE-SDIO_CK相位选择位,0(在主时钟SDIOCLK的上升沿产生SDIO_CK),1(在主时钟SDIOCLK的下降沿产生SDIO_CK)

12-11位:WIDBUS宽总线模式使能位,定义:00(默认总线模式,使用SDIO_D0),01(4位总线模式,使用SDIO_D[3:0]),10(8位总线模式,使用SDIO_D[7:0])

10位:BYPASS旁路时钟分频器,定义:0(关闭旁路:驱动SDIO_CK输出信号之前,依据CLKDIV数值对SDIOCLK分频)1(使能旁路:SDIOCLK直接驱动SDIO_CK输出信号)

9位:PWRSAV省电配置位,为了省电,当总线为空闲时,设置PWRSAV位可以关闭SDIO_CK时钟输出,定义:0(始终输出SDIO_CK),1(仅在有总线活动时才输出SDIO_CK)

8位:CLKEN时钟使能位,定义:0(SDIO_CK关闭),1(SDIO_CK使能)

7-0位:CLKDIV时钟分频系数,这个域定义了输入时钟(SDIOCLK)与输出时钟(SDIO_CK)间的分频系数:SDIO_CK频率 = SDIOCLK/[CLKDIV + 2]。

    注意:1当SD/SDIO卡或多媒体卡在识别模式,SDIO_CK的频率必须低于400kHz。2 当所有卡都被赋予了相应的地址后,时钟频率可以改变到卡总线允许的最大频率

          3 写数据后的7个HCLK时钟周期内不能写入这个寄存器。对于SD I/O卡,在读等待期间可以停止SDIO_CK,此时SDIO_CLKCR寄存器不控制SDIO_CK。

 

 

SDIO_ARG(SDIO参数寄存器)

31-0位:CMDARG命令参数,命令参数是发送到卡中命令的一部分,如果一个命令包含一个参数,必须在写命令到命令寄存器之前加载这个寄存器。

 

 

SDIO_CMD(SDIO命令寄存器)

SDIO_CMD寄存器包含命令索引和命令类型位。命令索引是作为命令的一部分发送到卡中。命令类型位控制命令通道状态机(CPSM)

14位:ATACMD(CE-ATA命令)如果设置该位,CPSM转至CMD61

13位:nIEN不使能中断,如果未设置该位,则使能CE-ATA设备的中断

12位:ENCMDcompl使能CMD完成,如果设置该位,则使能命令完成信号

11位:SDIOSuspend-SD I/O暂停命令,如果设置该位,则将要发送的命令是一个暂停命令(只能用于SDIO卡)

10位:CPSMEN命令通道状态机(CPSM)使能位,如果设置该位,则使能CPSM。

9位:WAITPEND-CPSM等待数据传输结束(CmdPend内部信号),如果设置该位,则CPSM在开始发送一个命令之前等待数据传输结束

8位:WAITINT-CPSM等待中断请求,如果设置该位,则CPSM关闭命令超时控制并等待中断请求

7-6位:WAITRESP等待响应位,这2位指示CPSM是否需要等待响应,如果需要等待响应,则指示响应类型,定义:00(无响应,期待CMDSENT标志)

      01(短响应,期待CMDREND或CCRCFAIL标志),10(无响应,期待CMDSENT标志),11(长响应,期待CMDREND或CCRCFAIL标志)

5-0位:CMDINDEX命令索引,命令索引是作为命令的一部分发送到卡中

      注意: 1 写数据后的7个HCLK时钟周期内不能写入这个寄存器。

             2 多媒体卡可以发送2种响应:48位长的短响应,或136位长的长响应。SD卡和SD I/O卡只能发送短响应,参数可以根据响应的类型而变化,

               软件将根据发送的命令区分响应的类型。CE-ATA设备只发送短响应。

 

 

SDIO_RESPCMD(SDIO命令响应寄存器)

5-0位:RESPCMD响应的命令索引,只读位,包含最后收到的命令响应中的命令索引

 

 

SDIO_RESPx(SDIO响应1..4寄存器)

31-0位:CARDSTATUSx:根据响应状态,卡的状态长度是32位或127位,总是先收到卡状态的最高位,SDIO_RESP3寄存器的最低位始终为0。

寄存器 短响应 长响应 寄存器 短响应 长响应

SDIO_RESP1 卡状态[31:0] 卡状态[127:96] SDIO_RESP2 不用 卡状态[95:64]

SDIO_RESP2 不用 卡状态[63:32] SDIO_RESP2 不用 卡状态[31:1]

 

 

SDIO数据定时器寄存器(SDIO_DTIMER)

SDIO_DTIMER寄存器包含以卡总线时钟周期为单位的数据超时时间。一个计数器从SDIO_DTIMER寄存器加载数值,并在数据通道状态机(DPSM)进入Wait_R或繁忙状态时

进行递减计数,当DPSM处在这些状态时,如果计数器减为0,则设置超时标志。

31-0位:DATATIME数据超时时间,以卡总线时钟周期为单位的数据超时时间,注意:在写入数据控制寄存器进行数据传输之前,须先写数据定时器和数据长度寄存器

 

 

SDIO_DLEN(SDIO数据长度寄存器)

24-0位:DATALENGTH数据长度,要传输的数据字节数目,注意 对于块数据传输,数据长度寄存器中的数值必须是数据块长度(见SDIO_DCTRL)的倍数。

       在写入数据控制寄存器进行数据传输之前,必须先写入数据定时器寄存器和数据长度寄存器

 

 

SDIO_DCTRL(SDIO数据控制寄存器)

11位:SDIOEN-SD I/O使能功能,如果设置了该位,则DPSM执行SD I/O卡特定的操作

10位:RWMOD读等待模式,定义:0(停止SDIO_CK控制读等待),1(使用SDIO_D2控制读等待)

9位:RWSTOP读等待停止,定义:0(如果设置了RWSTART,执行读等待)1(如果设置了RWSTART,停止读等待)

8位:RWSTART读等待开始,设置该位开始读等待操作

7-4位:DBLOCKSIZE数据块长度,当选择了块数据传输模式,该域定义数据块长度:0000(1字节)0001(2字节)0010(4字节)0011(8字节)0100(16字节)

      0101(32)0110(64)0111(128)1000(256)1001(512)1010(1024)1011(2048)1100(4096)1101(8192)1110(16384)1111(保留)

3位:DMAEN-DMA使能位,定义:0(关闭DMA)1(使能DMA)

2位:DTMODE数据传输模式,定义:0(块数据传输)1(流数据传输)

1位:DTDIR数据传输方向,定义:0(控制器至卡)1(卡至控制器)

0位:DTEN数据传输使能位,如果设置该位为1,则开始数据传输。根据DTSIR方向位,DPSM进入Wait_S或Wait_R状态,如果在传输的一开始就设置了RWSTART位,

    则DPSM进入读等待状态。不需要在数据传输结束后清除使能位,但必须更改SDIO_DCTRL以允许新的数据传输

注意 写数据后的7个HCLK时钟周期内不能写入这个寄存器

 

 

SDIO数据计数器寄存器(SDIO_DCOUNT)

24-0位:DATACOUNT:数据计数数值,读这个寄存器时返回待传输的数据字节数,写这个寄存器无作用。注意 只能在数据传输结束时读这个寄存器。

 

 

SDIO_STA(SDIO状态寄存器)

23位:CEATAEND在CMD61接收到CE-ATA命令完成信号

22位:SDIOIT收到SDIO中断

21位:RXDVAL在接收FIFO中的数据可用

20位:TXDVAL在发送FIFO中的数据可用

19位:RXFIFOE接收FIFO空

18位:TXFIFOE发送FIFO空,若使用了硬件流控制,当FIFO包含2个字时,TXFIFOE信号变为有效

17位:RXFIFOF接收FIFO满,若使用了硬件流控制,当FIFO包含2个字时,TXFIFOE信号变为有效

16位:TXFIFOF发送FIFO满

15位:RXFIFOHF接收FIFO半满,FIFO中至少还有8个字

14位:TXFIFOHE发送FIFO半空,FIFO中至少还可以写入8个字

13位:RXACT正在接收数据

12位:TXACT正在发送数据

11位:CMDACT正在传输命令

10位:DBCKEND已发送/接收数据块(CRC检测成功)

9位:STBITERR在宽总线模式,没有在所有数据信号上检测到起始位

8位:DATAEND数据结束(数据计数器,SDIO_DCOUNT = 0)

7位:CMDSENT命令已发送(不需要响应)

6位:CMDREND已接收到响应(CRC检测成功)

5位:RXOVERR接收FIFO上溢错误

4位:TXUNDERR发送FIFO下溢错误

3位:DTIMEOUT数据超时

2位:CTIMEOUT命令响应超时,命令超时时间是一个固定的值,为64个SDIO_CK时钟周期

1位:DCRCFAIL已发送/接收数据块(CRC检测失败)

0位:CCRCFAIL已收到命令响应(CRC检测失败)

 

 

SDIO_ICR(SDIO清除中断寄存器)

23位:CEATAENDC-CEATAEND标志清除位,软件设置该位以清除CEATAEND标志

22位:SDIOITC-SDIOIT标志清除位,软件设置该位以清除SDIOIT标志

10位:DBCKENDC-DBCKEND标志清除位,软件设置该位以清除DBCKEND标志

9位:STBITERRC-STBITERR标志清除位,软件设置该位以清除STBITERR标志

8位:DATAENDC-DATAEND标志清除位,软件设置该位以清除DATAEND标志

7位:CMDSENTC-CMDSENT标志清除位,软件设置该位以清除CMDSENT标志

6位:CMDRENDC-CMDREND标志清除位,软件设置该位以清除CMDREND标志

5位:RXOVERRC-RXOVERR标志清除位,软件设置该位以清除RXOVERR标志

4位:TXUNDERRC-TXUNDERR标志清除位,软件设置该位以清除TXUNDERR标志

3位:DTIMEOUTC-DTIMEOUT标志清除位,软件设置该位以清除DTIMEOUT标志

2位:CTIMEOUT-CTIMEOUT标志清除位,软件设置该位以清除CTIMEOUT标志

1位:DCRCFAILC-DCRCFAIL标志清除位,软件设置该位以清除DCRCFAIL标志

0位:CCRCFAILC-CCRCFAIL标志清除位,软件设置该位以清除CCRCFAIL标志

 

 

SDIO_MASK(SDIO中断屏蔽寄存器)

23位:CEATAENDIE允许接收到CE-ATA命令完成信号产生中断,由软件设置/清除该位,允许/关闭在收到CE-ATA命令完成信号产生中断功能,定义:

     0(收到CE-ATA命令完成信号时不产生中断),1(收到CE-ATA命令完成信号时产生中断)

22位:SDIOITIE允许SDIO模式中断已接收中断(手动),定义:0(SDIO模式中断已接收不产生中断),1(SDIO模式中断已接收产生中断)

21位:RXDVALIE接收FIFO中的数据有效产生中断(手动),定义:0(接收FIFO中的数据有效不产生中断),1(接收FIFO中的数据有效产生中断)

20位:TXDVALIE发送FIFO中的数据有效产生中断,(手动),定义:0(发送FIFO中的数据有效不产生中断),1(发送FIFO中的数据有效产生中断)

19位:RXFIFOEIE接收FIFO空产生中断,(手动),定义:0(接收FIFO空不产生中断),1(接收FIFO空产生中断)

18位:TXFIFOEIE发送FIFO空产生中断,(手动),定义:0(发送FIFO空不产生中断),1(发送FIFO空产生中断)

17位:RXFIFOFIE接收FIFO满产生中断,(手动),定义:0(接收FIFO满不产生中断),1(接收FIFO满产生中断)

16位:TXFIFOFIE发送FIFO满产生中断,(手动),定义:0(发送FIFO满不产生中断),1(发送FIFO满产生中断)

15位:RXFIFOHFIE接收FIFO半满产生中断,(手动),定义:0(接收FIFO半满不产生中断),1(接收FIFO半满产生中断)

14位:TXFIFOHE发送FIFO半空产生中断,(手动),定义:0(发送FIFO半空不产生中断),1(发送FIFO半空产生中断)

13位:RXACTIE正在接收数据产生中断,(手动),定义:0(正在接收数据不产生中断),1(正在接收数据产生中断)

12位:TXACTIE正在发送数据产生中断,(手动),定义:0(正在发送数据不产生中断),1(正在发送数据产生中断)

11位:CMDACTIE正在传输命令产生中断,(手动),定义:0(正在传输命令不产生中断),1(正在传输命令产生中断)

10位:DBCKENDIE数据块传输结束产生中断,(手动),定义:0(数据块传输结束不产生中断),1(数据块传输结束产生中断)

9位:STBITERRIE起始位错误产生中断,(手动),定义:0(起始位错误不产生中断),1(起始位错误产生中断)

8位:DATAENDIE数据传输结束产生中断,(手动),定义:0(数据传输结束不产生中断),1(数据传输结束产生中断)

7位:CMDSENTIE命令已发送产生中断,(手动),定义:0(命令已发送不产生中断),1(命令已发送产生中断)

6位:CMDRENDIE接收到响应产生中断,(手动),定义:0(接收到响应不产生中断),1(接收到响应产生中断)

5位:RXOVERRIE接收FIFO上溢错误产生中断,(手动),定义:0(接收FIFO上溢错误不产生中断),1(接收FIFO上溢错误产生中断)

4位:TXUNDERRIE发送FIFO下溢错误产生中断,(手动),定义:0(发送FIFO下溢错误不产生中断),1(接收FIFO上溢错误产生中断)

3位:DTIMEOUTIE数据超时产生中断,(手动),定义:0(数据超时不产生中断),1(数据超时产生中断)

2位:CTIMEOUTIE命令超时产生中断,(手动),定义:0(命令超时不产生中断),1(命令超时产生中断)

1位:DCRCFAILIE数据块CRC检测失败产生中断,(手动),定义:0(数据块CRC检测失败不产生中断),1(数据块CRC检测失败产生中断)

0位:CCRCFAILIE命令CRC检测失败产生中断,(手动),定义:0(命令CRC检测失败不产生中断),1(命令CRC检测失败产生中断)

 

 

SDIO_FIFOCNT(SDIO FIFO计数器寄存器)

23-0位:FIFOCOUNT将要写入FIFO或将要从FIFO读出数据字的数目,

 

 

SDIO_FIFO(SDIO数据FIFO寄存器)

31-0位:FIFODATA接收或发送FIFO数据,FIFO数据占据32个32位的字,地址为:(SDIO基址 + 0x80) 至 (SDIO基址 + 0xFC)


发表评论:

 
Powered by emlog sitemap