SDIO标准要求:是SDIOcard插入时不会导致host探测失败。为了防止操作IO功能在非IO识别host端,改变SD卡的识别模式流程是必要的。一个新的命令(IO_SEND_OP_COND,CMD5)被添加代替ACMD41初始化SDIO。
复位和上电以后,所有的IO功能被关闭,并且IO端口不能操作,除非CMD5或CMD0且CS=0。如果SD内存安装到CARD中,内存应正常响应所有正常强制性内存命令。
所有的IO功能CARD不相应ACMD41,因而最初作为MMC卡,IO卡不相应CMD1用作初始化MMC卡并且表现非相应card。主机放弃并且禁用这种卡。因此,no-awarehost没有收到回应的I/ O卡,只能强制到无效状态。
如果IO端口CARD收到的不是CMD5命令,IO选择保留非激活状态并且不相应一些命令。COMBO卡维持在内存模式。如果内存没有被安装在card上,card将不相应内存命令。这种符合条件无论在那里用户用一些IO功能如:以太网下载音乐文件到card的内存。这种card移出和插入是非SDIOaware-host。HOST将不使能IO功能,因此作为内存CARD。如果HOST主机识别IO,它将发CMD5到card并且card将响应R4。HOST读R4值和知道可用IO功能数量和SD内存是否存在。
如果IO端口CARD收到的不是CMD5命令,IO选择保留非激活状态并且不相应一些命令。COMBO卡维持在内存模式。如果内存没有被安装在card上,card将不相应内存命令。这种符合条件无论在那里用户用一些IO功能如:以太网下载音乐文件到card的内存。这种card移出和插入是非SDIOaware-host。HOST将不使能IO功能,因此作为内存CARD。如果HOST主机识别IO,它将发CMD5到card并且card将响应R4。HOST读R4值和知道可用IO功能数量和SD内存是否存在。
SDIO1.00协议简介
目录
本文描述的是基于SDIO标准协议1.0版本,主要描述协议中比较重要的细节信息。对实际代码层,没有做详细的描述,对比较重要的寄存器配置会做详细的描述。
备注此文档参考内容是SDIO标准协议1.10,而实际用到的WIFI驱动是SDIO1.00协议。所以与实际的可能有差别
SDIOSignaling Definition SDIOcard types标准定义有两种类型的SDIO卡。全速(full-speed)card支持SPI,1bitSD,和4bit传输模式,时钟范围在0到25MHZ。这种卡传输数据速率达到100Mb/s以上。第2种是low-speedSDIO卡。这种卡仅需要支持SPI模式和1bitSD传输模式。4bit传输模式是可选的。另外。低速模式的SDIO卡支持的时钟范围是0到400KHZ.这种卡趋向支持低速模式的设备,如modems。GPS等
SDIOcard modes有SPI模式,1bit模式,一位模式下只用到数据DATA[0],4bit模式
SDIOHost Modes如果SDIOaware主机支持SD传输模式,建议采用1bit和4bit模式。而SDIOhost端可能仅支持4位传输模式。这是因为唯一的传输数据的路径,从一个低速CARD将通过命令单子节传输。
信号引脚
Hostrequirements for SDIO
为了主机支持所有的SDIO卡,一些信号引脚连接必须被支持。为了支持中断,HOST应该有PIN8从card连接到host,以便支持中断信号,即使host只支持1bit模式和spi模式。此外,如果host支持多张card在SD模式下,CMD和4根数据线不应该连接在一起,而是应该单独连接到host。这使多种card类型用不同的接口而没有影响。
此外,有一些附加设计细节,设计host支持SDIO卡必须知道:
如果host支持4bitSD总线模式和中断(在4bit数据传输时间内);host将控制值置换到数据线data3:1.这些条件是:
A:在多块数据写时
根据sd物理协议1.1,数据线data3:1是描述为不x(任意值)在CRC状态期间.如果host激活驱动这些数据线在这个时期,也许会干扰从sdio卡来的中断信号。为了防止这样的冲突,host支持中断在4bit传输模式下,在这期间不会驱动数据现data3:1
B:多块数据读时
根据SD标准协议1.1,DATA1被描述为"P"(上拉信号)在读数据包时。为了在4bit传输模式支持中断,host将不驱动data1数据线在2个时钟中断周期。
SDIOcard 初始化 IOCARD 初始化的差异SDIO标准要求:是SDIOcard插入时不会导致host探测失败。为了防止操作IO功能在非IO识别host端,改变SD卡的识别模式流程是必要的。一个新的命令(IO_SEND_OP_COND,CMD5)被添加代替ACMD41初始化SDIO。
复位和上电以后,所有的IO功能被关闭,并且IO端口不能操作,除非CMD5或CMD0且CS=0。如果SD内存安装到CARD中,内存应正常响应所有正常强制性内存命令。
所有的IO功能CARD不相应ACMD41,因而最初作为MMC卡,IO卡不相应CMD1用作初始化MMC卡并且表现非相应card。主机放弃并且禁用这种卡。因此,no-awarehost没有收到回应的I/ O卡,只能强制到无效状态。
所有的SDIOhost发送CMD5前发送CMD55/ACMD41,并且将收到有效的OCR,在R4相应CMD5并且继续初始化卡,在数据手册中描述了SD模式和SPI模式的时序图。
如果IO端口CARD收到的不是CMD5命令,IO选择保留非激活状态并且不相应一些命令。COMBO卡维持在内存模式。如果内存没有被安装在card上,card将不相应内存命令。这种符合条件无论在那里用户用一些IO功能如:以太网下载音乐文件到card的内存。这种card移出和插入是非SDIOaware-host。HOST将不使能IO功能,因此作为内存CARD。如果HOST主机识别IO,它将发CMD5到card并且card将响应R4。HOST读R4值和知道可用IO功能数量和SD内存是否存在。
初始化IO端口CARD后,读取CIA(CommonInformation Area)。这样做是发送读命令。首先是字节地址。CIA包含CCCR(CardCommon Control Registers )和FBR(FunctionBasicRegisters)。也包含指向CIS和每一个独立的CIS结构。CIS包含电源,功能,制造商和其他。HOST需要确定是否IO空能是否需要适当的上电。如果HOST确定card需要激活,寄存器CCCR使能CARD和每一个功能。在这种条件下,所有IOCARD的功能充分使用。除此之外,HOST能控制电源功耗和关闭和使能中断。这些访问通过IO,而不是内存接口访问。
SDIO识别HOST将发送CMD5arg=0作为初始化时序的部分
TheIO_SEND_OP_COND Command (CMD5)CMD5对SDIO卡的操作类似于ACMD41对内存卡的操作。这个被用来IOcard表述电压范围.正常的响应CMD5是R4(SD模式和SPI模式)
S |
D |
Command Index |
Stuff bits |
IO OCR |
CRC7 |
E |
开始位 |
数据方向 |
命令索引 |
没有使用 |
操作控制寄存器 |
CRC值 |
结束位 |
1bit |
1bit |
6bit |
8bit |
24bit |
7bit |
1bit |
总共的数据位数是48位
S:开始位,始终为0;
D:数据方向,总是1表示从HOST到CARD传输
CommandIndex: 表示CMD5命令索引值000101b
StuffBits:not used
I/OOCR:操作控制寄存器。支持的最小和最大电压值。
CRC7:7BITSCRC数据
E:结束位,总是1
IO OCR BIT |
VDD电压等级值 |
0-3 |
保留 |
4 |
保留 |
5 |
保留 |
6 |
保留 |
7 |
保留 |
8 |
2.0-2.1 |
9 |
2.1-2.2 |
10 |
2.2-2.3 |
11 |
2.3-2.4 |
12 |
2.4-2.5 |
13 |
2.5-2.6 |
14 |
2.6-2.7 |
15 |
2.7-2.8 |
16 |
2.8-2.9 |
17 |
2.9-3.0 |
18 |
3.0-3.1 |
19 |
3.1-3.2 |
20 |
3.2-3.3 |
21 |
3.3-3.4 |
22 |
3.4-3.5 |
23 |
3.5-3.6 |
SDIOcard接收到CMD5后将相应SDIO要求的时序,R4。R4包含SD模式和SPI模式
S |
D |
Reserved |
C |
MemoryPresen |
Number Of I/O function |
Stuff |
I/O OCR |
Reserved |
E |
1bit |
1bit |
6bit |
1bit |
3bit |
1bit |
3bit |
24bit |
7bit |
1bit |
上图为SD模式
S:开始位,0
D:数据方向位,总是0,从card到HOST
Reserverd:设置1
C:初始化后如果CARD准备操作设置为1
IOOCR:操作控制寄存器。支持的最小和最大电压值
MemoryPresent:如果卡包含SD内存设置为1,设置为0仅IOCARD支持
Numberof I/O Functions:表明CARD支持的IO功能数量,范围是0-7。IO功能将实现时序在公功能
一旦SDIOCARD 收到CMD5,卡的IO端口使能响应的所有的命令。这些IO功能使能保留直到复位,重新上电和CMD52写入到SDIOCARD
重新复位IO和内存
当主机重现初始化IO和内存控制器时,建议执行power复位或发送复位命令到控制器。如果选择复位命令,将发送CMD52。
Differenceswith SD Memory Specification( 与 SD 内存标准的差异 ) SDIO 命令清单SDMemory Command SDIO Command
CMD0 CMD52 CMD0是复位命令,为了复位SDIO,用CMD52写1到RES位
CMD12 CMD52 停止块数据传输CMD,写CCCR寄存器中的相应位
CMD16 CMD52 设置块长度,对SD内存,用CMD5写块长度到FBR寄存器
CMD2 NONE CID寄存器不存在SDIOCARD中
CMD4 NONE DSR寄存器不存在SDIOCARD中
CMD9 NONE CSD寄存器不存在SDIOCARD中
CMD10 NONE CID寄存器不存在SDIOCARD中
CMD13 NONE SDIO不支持
ACMD6 CMD52 设置总线宽度,通过些CCCR寄存器
ACMD13 NONE SDIO中不支持
ACMD41 CMD5 SDIO卡和HOST用IO_SEND_OP_COND_COMMAND(CMD5)
ACMD42 CMD52 在SD模式,上拉电阻在DAT〔3〕被控制通过写CDDisable
ACMD51 ONE 不支持
CMD17 CMD53 IO 块操作用CMD53,而不是内存块操作
如果是IO功能的卡被激活,仅些CCCR被要求改变的位模式就可以了。如果仅内存激活,通过ACMD6改变总线宽度。如果两者都有,则激活两者需要两个命令
CardDetect ResistorSD内存和IO卡用上来电阻DAT〔3〕来检测CARD插入,在SD内存和SDIO使能这个电阻不同。SD用ACMD42命令控制,而SDIO用CMD52控制CCCR。
数据传输停止HOST与SD卡用CMD12停止数据读写从卡。而SDIO卡,写CCCR寄存器的ASxbit 停止。
SDIO传输块数据大小是1个字节到2048个字节。
Changesto SD Memory Fixed Registers OCR 寄存器所有的SD卡至少有一个OCR寄存器。如果卡是combo卡,它也许有两个OCR寄存器(一个内存一个IO),内存部分的combo卡有一个OCR通过用ACMD41和CMD58访问。IO端口的卡有一个OCR用同样的结构访问通过CMD5。如过有多OCR的电压范围也许不被定义。每一个功能电压对每一个IO功能能被读,通过卡的CIS
CID 寄存器对于SDIO操作在SPI模式下,返回的数据是无效的命令。CSD寄存器SDIO不支持
RCA 寄存器所有的所有的功能和一些内存将共享同样的card地址DSR寄存器和SCR寄存器在SDIO中不支持
这个命令最简单的意思是访问128K寄存器空间的单个寄存器,包括通用IO区域。通常被用在初始化寄存器和管理状态寄存器的值。
命令时序
S |
D |
Command Index |
R/W flag |
Funtion Numbe |
RAW flag |
stuff |
寄存器地址uff |
Write Data or Stuff bits |
CRC7 |
E |
1bit |
1bit |
6bit |
1bit |
3bit |
1bit |
1bit |
17bit |
8bit |
7bit |
1bit |
S:开始位,总是0
D:数据传输方向,总是1表示传输HOST到CARD
CommandIndex:命令的索引值110100B
R/Wfalg:这位确定IO操作的方向。如果这位是0,表述从SDIOCARD读取数据。数据类型返回到R5,如果这位设置为1,写字节。
RAWFlag:读然后写。如果这位被设置1并且R/Wflag为1,然后命令读值,然后写入寄存器中。
FunctionFlag:The number of the function within the I/O card you wish to reador write. Note that
function0 selects the common I/O area (CIA)
IO_RW_DIRECTResponse(R5)命令回应的格式有两种,一种是SD模式,一种是SPI模式,对于SD模式,数据位数是48bit,而spi模式则只有16位,此图只是给出了SD模式下的数据时序
S |
D |
Command Index |
Stuff |
Response Flags Bit |
Read or Write DATA |
CRC7 |
E |
1bit |
1bit |
6bit |
16t |
8bit |
8bit |
7bit |
1bit |
S:开始位。总是0
D:数据方向,0指示从CARD传输到HOST
CommandIndex 命令值
Stuffbits:保留
ResponseFlags:八位标志位知名SDIO卡的状态
bit7:COM_CRC_ERROR CRC检测错误标志 0没有错,1有错
bit6:ILLEGAL_COMMAND命令不合法状态 0no error,1error
bit5-4:IO_CURRENT_STATE00=DIS,01=CMD,数据线free02=TRN.选择数据先传输03=RFU,
bit3:error
bit2:RFU
bit1:FUNCTION_NUMBER功能号是非法
bit0:OUT_OF_RANGE
CMD53:33page
Reador Write 数据:
CRC7:
E:结束
IO_RW_EXTENDEDcommand(CMD53)为了读写多个IO寄存器用单个命令,IO_RW_EXTENDED被定义。这个命令允许单个命令读或写多数IO寄存器,因为这个是数据传输命令,它提供高速的传输速率。
S |
D |
Command Index |
R/W flag |
FUNTION Number |
Block Mode |
OP Code |
Register address |
Byte/block count |
CRC7 |
E |
1bit |
1bit |
6bit |
|
|
|
|
|
|
|
|
FunctionNumber:IO CARD希望读到的功能号,标记0X00选择通用IO区域CIA
BlockMode:如果这位设置为1,表示读写操作将一块传输,而不是字节传输。如果这位被设置,字节和块数量值包含在读取和写入的块数量。
OPcode:0多字节读写固定的地址;1多字节读写增加的地址
OPCode=0被用作读或者些多个字节发送和接受单个IO寄存器地址。这个命令被用作IO数据传输用FIFO。在这种情况下,多字节数据是传输单个字节地址寄存器。
OPCode=1是被用作多块数据发送或着到IO寄存器地址。一次传输完成后,下次操作将发生在address+1,直到操作完成。
RegisterAddress:始地址IO寄存器读写。范围是〔0x1ffff:0〕
Byte/BlockCount 如果命令操作是字节,这个区域包含读写字节的数量0x000对应512字节0x001=1字节,一次增加一个字节。
CMD53数据传输格式当执行IO_RW_EXTENED(CMD53),多字节或多块数据传输类似数据传输到内存。多字节传输模式对应一下应用:
IO_RW_EXTENED字节读类似CMD17(READ_SINGLE_BLOCK)
IO_RW_EXTENED字节写类似CMD24(WRITE_BLOCK)
IO_RW_EXTENDED 块读类似CMD18(READ_MULTIPLE_BLOCK)
IO_RW_EXTENDED 块写类似CMD25(WRITE_MULTIPLE_BLOCK)
SDIOcard内部操作
每个SDIO卡有1到7个功能加上一个内置的内存功能。一个功能是被包含IO设备。IO功能是相同的或者完全不同的。所有的IO功能是被组织作为一个联合的寄存器。每个IO功能还一个最到的寄存器。这些寄存器和他们的单独位也许是只读的,只写或者读写。这些寄存器能被8,16,32bit访问所有的地址是基于字节地址访问。单一的读/写访问往往是用来初始化的I/ O功能或改为单一状态或数据值。
所有的寄存器在SDIOcard中读写数据的传输少于1秒。此超时只涉及到到数据在DATA〔X〕LINE上传输的时间,而不包括命令相应。等待时间是通知HOST,card用写忙或者延时开始位来响应一个读操作。
如果需要支持访问大于1秒的时间操作,必须定义其他方法,在协议中不定义这种方法
Interrupts所有的SDIOHOST应该支持硬件中断,如果HOST不支持硬件中断,很难与SDIOcard一起工作,除非快速相应中断。中断用在SDIO功能通常被称作“levelsensitive”.levelsensitive意思是一些功能在任意时间发送一个中断信号。一旦功能发送了一个中断,将不会释放中断,直到中断被删除或者命令通知等(HOST端)。因为只有一个中断线,它被中断源共享。功能将继续发送中断信号直到HOST相应和清除中断。因为多个中断也许被立即激活,要求HOST确定中断源和处理需要的中断。在SDIO功能中被用作两BITS来完成,每个功能也许产生一个中断有功能使能位。在SDIOcard中有一个管理中断使能的来控制所有的功能。中断信号将被发送到SDbus,如果功能使能和card管理使能被设置。中断挂起,是只读的。这些位都在CCCR中。
SDIOFixed Internel MapSDIO卡有一个固定的内部寄存器空间和功能独特的区域。固定区域包含卡信息和某些强制性和选择性寄存器。在固定区域允许任何主机获取卡的信息,并进行简单的操作。功能独特的领域是每个功能区,是指应用规范标准的SDIO职能或由供应商非标准功能。下图显示了内部机构图:
CommonIO AreaCIA访问是HOST通过IO读写FUNCTION0,CIA寄存器提供使能和关闭所有IO功能的操作,控制中断发生和可选的软件加载支持IO功能。CCCR,FBR,CIS支持单独的结构
CCCR( CardCommon Control Register)CCCR允许host控制和检测IOcard使能和中断,CCCR中的BIT位是混合读和写和只读的状态位。如果7个功能在SDIO中一些不提供,未用到的功能位响应时只读的,并且返回是0.所有保留(RFU)的位是只读状态并且返回0值。访问CCCR寄存器是可能的在初始化以后而此时IO功能是禁用的。
adress |
Register name |
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
0x00 |
CCCR/SDIORevision |
SDIO Bit3 |
SDIOBit2 |
SDIO Bit1 |
SDIO Bit0 |
CCCR Bit3 |
CCCR Bit2 |
CCCR Bit1 |
CCCR Bit0 |
0x01 |
SD Revision |
RFU |
RFU |
RFU |
RFU |
SDBit3 |
SDBit2 |
SDbit1 |
SDBit0 |
0x02 |
IO enable |
IOE7 |
IOE6 |
IOE5 |
IOE4 |
IOE3 |
IOE2 |
IOE1 |
RFU |
0x03 |
IO Ready |
IOR7 |
IOR6 |
IOR5 |
IOR4 |
IOR3 |
IOR2 |
IOR1 |
RFU |
0x04 |
Int Eable |
IEN7 |
IEN6 |
IEN5 |
IEN4 |
IEN3 |
IEN2 |
IEN1 |
RFU |
0x05 |
Int Pending |
INT7 |
INT6 |
INT5 |
INT4 |
INT3 |
INT2 |
INT1 |
RFU |
0x06 |
I/O abort |
RFU |
RFU |
RFU |
RFU |
RES |
AS2 |
AS1 |
AS0 |
0x07 |
Bus Interface Control |
CD disable |
SCSI |
ECSI |
RFU |
RFU |
RFU |
Bus width1 |
Bus width |
0x08 |
Card Capability |
4BLS |
LSC |
E4MI |
S4MI |
SBS |
SRW |
SMB |
SDC |
0x09-0x0B |
Common CIS Pointer |
指向卡的通用卡信息结构CIS |
|
|
|
|
|
|
|
0x0c |
Bus suspend |
RFU |
RFU |
RFU |
RFU |
RFU |
RFU |
BR |
BS |
0x0D |
Function Select |
DF |
RFU |
RFU |
RFU |
FS3 |
FS2 |
FS1 |
FS0 |
0x0E |
Exec Flags |
EX7 |
EX6 |
EX5 |
EX4 |
EX3 |
EX2 |
EX1 |
EXM |
0x0F |
Ready Flags |
RF7 |
RF6 |
RF5 |
RF4 |
RF3 |
RF2 |
RF1 |
RFM |
0x10-0x11 |
FN0 Block Size |
功能0的IO块大小 |
|
|
|
|
|
|
|
0x12 |
Power Control |
RFU |
RFU |
RFU |
RFU |
RFU |
RFU |
EMPC |
SMPC |
0x13-0xEF |
RFU |
|
|
|
|
|
|
|
|
0XF0-0xFF |
保留给厂商 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Field |
Type |
解释 |
|
CCCRx |
RO |
CCCR格式的版本号,这4位包含card支持的CCCR和FBR格式,CCCR或FBR的改变将引起新版本号的分配。 0x00=CCCR/FBR Version1.00 0x01=CCCR/FBR Version1.00 0x02-0x0F 保留 |
|
SDIOx |
RO |
SDIO标准协议版本号 0x00=SDIO 标准协议1.00 0x01=SDIO标准协议1.10 0x02-0x0F 保留 |
|
SDx |
RO |
SD协议版本号 0x00=SD Version1.00 0x01=SD Version1.10 0x02-0x0F 保留 |
|
IOEx |
RW |
使能功能,如果这位为0,功能禁止,这位为1,功能被使,并开始初始化。通过IORx可以获得初始化状态。上电或复位此位为0.host可以使用IOEx作为每一个功能的复位的错误恢复。HOST端数据序列是复位每一个功能是复位IOEx,等IORx变成0并且再次设置IOEx。如果错误没有发生,SDIO复位将生命也不做。操作的所用功能都被禁止。 |
|
IORx |
RO |
IO Fuction Ready如果这位复位为0,功能没有准备好被操作。如果这位为1,功能可以操作。对于一些儿功能在SDIO中不被实现,将总是被设置为0.功能将设置这位为1在超时时间值内,超时时间定义在TPLFE_ENABLE_TIMEOUT_VAL元组中 |
|
IENx |
RW |
功能的中断使能,如果这位被清零,功能的中断信号将不会被发送到HOST端,如果这位位1,中断信号将发送到HOST同时master中断使能也必须置1 |
|
IENM |
RW |
中断使能master。如果这位为0,中断信号不会从card发送到HOST,为1,功能的中断信号会发送到HOST |
|
INTx |
RO |
功能的中断挂起。如果这位为0表明没有中断挂起,为1有中断挂起,如果IENx和IENM位没有设置,HOST将不能收到挂起中断 |
|
ASx |
WO |
终止选择(Abort Select),终止IO读写操作,并且释放SD总线。这3位定义功能传输停止。如:停止功能好3的数据传输,通过CMD52命令写0X03到ASx。 |
|
RES |
WO |
IO Card Reset设置这位为1将引起IO功能在SDIO card中执行软复位,但并不影响当前card协议选择。通过CMD52设置此为,此位自动清除,因此没有必要重写置0。读此位将收到不确定的数据值 |
|
Bus Width1:0 |
RW |
定义数据传输总线宽度,所有全速SDIO card支持1位和4位,但是低速可选择4位数据传输。复位或上电,此位清0 |
|
CD disable |
R/W |
连接10到90K上拉电阻到数据线DATA[3],上拉被用于card检测。这个位必须清零在上电时 |
|
SCSI |
RO |
支持连续的SPI中断(Support Continuous SPI interrupt)。对现有的wifi芯片,不用理会 |
|
ECSI |
RW |
使能SPI中断Enable Continuous SPI Interrupt. |
|
SDC |
RO |
Card Supports Direct Commands卡支持直接命令。这位仅应用在SD模式,对于SPI模式不适用。这个标志位指示SDIO卡的能力在执行CMD52同时数据传输正在进行。 |
|
SMB |
RO |
卡支持多块传输。这位仅使用在SD模式,不适用SPI模式。这位报告SDIO卡的功能。命令相关时CMD53 |
|
SRW |
RO |
卡支持读等待。这位指示SDIO卡支持读等待操作。 |
|
SBS |
RO |
Card supports Suspend/Resume.这位用在SD模式,对SPI模式不适用。 |
|
S4MI |
RO |
Supports interrupt between blocks of data in 4-bit SD mode 支持中断的数据块中的4位的SD模式。此标志位报告 |
|
E4MI |
RW |
Enable interrupt between blocks of data in 4-bit SD mode 如果这位为0在SD模式的多块数据传输时,SD 卡将不会信号中断 ,为1将信号中断。 |
|
LSC |
RO |
Card is a Low-Speed card.为0指示卡是高速模式,为1是低速模式 |
|
4BLS |
RO |
4-bit support for Low-Speed cards,如果卡支持4位传输模式,并且是在低速模式,此位为1否者是0 |
|
Pointer to card’s common CIS |
RO |
This 3-byte pointer points to the start of the card’s common CIS. 指向CIS,CIS包含整个卡的信息, |
|
BS |
RO |
总线状态: |
|
Bus Release Request/Status |
RW |
Bus Release Request/Status:对实际的wifi芯片没有用到 |
|
FSx |
RW |
功能选择位0:3bit,有两种方式设置这个值,一个是通过CCCR寄存器,一个是通过新的IO命令写IO功能号 0000=CIA功能号0 0001-0111功能号1到7 1000 Transaction of memory in combo card 其他保留。如果SBS设置为0,表示为只读状态 |
|
DF |
RO |
Resume Data Flag:如果这位为0,表示没有没有数据传输,如果这位为1,有更多的数据传输在功能或者内存唤醒后。 |
|
EXx |
RO |
执行标志7:0,这些位被HOST来确定当前功能1到7和内存的执行状态。该位为1,每一个功能和内存正在执行命令。只有在SBS=1,这些位才定义,SBS=0,这些位同样也必须是0 |
|
RFx |
RO |
Ready Flag bits 7:0,这些位通知HOST读写忙状态。当功能和内存正在执行写,此标志位被清0,表示此时功能和内存忙,不能接受更多的数据。 |
|
FN0 Block Size |
RW |
这个16位寄存器设置功能0 IO操作块大小,如果card不支持IO块操作(SMB=0),这个寄存器只读,并且总是0.最大的块大小是2048.最小1块 |
|
SMPC |
RO |
Support Master Power Control这个标志位告诉HOST card支持功耗控制。 SMPC=0:当前电流小于200MA,SMPC=1大于200MA |
|
EMPC |
RW |
Enable Master Power Control |
|
RFU |
RO |
保留 |
|
Reserved for Vendors |
R/W |
这里由厂商定义或扩充 |
|
|
|
|
|
除了CCCR,每个支持的I/ O功能有一个256字节区域使用,让主机能够迅速
判断每个功能(FUNCTION)的能力和要求,使能每个功能(FUNCTION)电源选择,并
使软件载入中。的地址,这寻址是从0x00n00以0x00nFF其中n是功能数量
(0x1到0x7) 。这每功能区的结构如下
Address |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||||
0x100 |
Function1 CSA enable |
Function1 Supports CSA |
RFU |
RFU |
Function 1 Standard SDIO Function interface code |
同3 |
同3 |
同3 |
|||||
0x101 |
Function 1 Extended standard SDIO Function interface code |
||||||||||||
0x102 |
RFU |
RFU |
RFU |
RFU |
RFU |
RFU |
EPS |
SPS |
|||||
0X103-0x108 |
RFU |
||||||||||||
0x109-0x10B |
Pointer to Function 1 Card Information Structure (CIS) |
||||||||||||
0x10C-0x10E |
Pointer to Function 1 Code Storage Area (CSA) |
||||||||||||
0x10F |
Data access window to Function 1 Code Storage Area (CSA) |
||||||||||||
0x110-0x111 |
I/O block size for Function 1 |
||||||||||||
0x112-0x1FF |
Reserved for Future Use |
||||||||||||
0x200-0x7FF |
Function 2 to 7 Function Basic Information Registers (FBR) |
||||||||||||
0x800-0xFFF |
RFU |
状态位描述
Field |
Type |
描述和解释 |
SDIOStandard Function interface code |
RO |
这位指示SDIO标准功能接口的功能。不同的数据值代表不同的标准接口 0x0:非SDIO标准接口支持 0x1:这个功能支持SDIO标准的UART 0x2:这个功能支持SDIO type-a的蓝牙标准 0x3:这个功能支持SDIO type-b的蓝牙标准 0x4:这个功能支持SDIO GPS接口标准 0x5:这个功能支持SDIO 摄像头接口标准 0x6:这个功能支持SDIO PHS 标准接口 0x7:这个功能支持SDIO WLAN接口 0x8-0x0E:保留 0xF:这个功能支持SDIO标准接口号大于0Xe. |
Function Supports CSA |
RO |
如果Function 支持和包含CSA(Code Storage Area).这位被置1.如果Function不支持CSA,这位将清零。CSA使能被7位寄存器0xn00控制 |
Function CSA Enable |
RW |
此位置1,读写CSA允许,否则不能读写。如果function不支持CSA,这位为只读状态 |
Extended SDIO Standard Function interface code |
RO |
扩展的SDIO标准接口。如果SDIO标准功能接口大于0xE,这个字节应该包含编码和标准编码应该包含 0xF值。如果标准编码小于0xF,这个字节是0x00 |
SPS(Support Power Selection) |
RO |
SPS=0:表示没有功耗选择。EPS为0 SPS=1:指示FUNCTION 有两种功耗模式通过选择EPS |
EPS (Enable Power Selection |
EPS |
EPS=0:功能操作在高电流模式 最大的电流值是在TPLFE_HP_MAX_PWR_3.3V EPS=1:FUNCTION 工作在低功耗模式 最大电流值在TPLFE_LP_MAX_PWR_3.3V |
Address pointer to Function CIS |
RO |
这3个字节组成24位的指针指向CIS的开始位置与每一个FUNCTION融合在一起。SDIO卡中的每一个FUNCTION是强制CIS的。指针存储是小端模式。如果FUNCTION不支持,寄存器指针指向元组的最后。 |
Address pointer to Function CSA |
RW |
3个字节组成24位指针,指向读写的CSA字节,任何读写CSA的操作通过window 寄存器。指针将自动增加1.如果FUNCTION不支持CSA,24bit读时将总是返回0x000000.指针存储时小端模式 |
Data access window to CSA |
RW |
当CSA使能,任何读写这个地址必须通过CSA寻址指针。如果不支持CSA,这8位将是只读状态返回 0x00。 |
Function 1-7 I/O Block Size |
RW |
这16位寄存器设置IO块操作的块大小。如果这个卡不支持IO块操作(SMB=0)这个寄存器就变成只读,并总是返回0x0000。最大的块大小是2048,最小的是1 |
CIS提供更多的完整的信息和独立的FUNCTION。设计标准基于PCcard16的设计标准。所有的卡,支持的IO操作的都有一个CIS,并且每一个FUNCTION有一个CIS。访问CIS通过读固定的地址区域(0x0001000-0x017FFF).这个地址区域作为通用的CIS,也可以被用作每个FUNCTION的存储区域。对地址0X018000-0X01FFF是保留的。
MultipleFunction SDIO Cards多功能SDIOcard对每个功能都有一个单独的功能配置寄存器。多重功能的SDIO卡应该结合使用CIS的所有功能。
备注:此描述不够完整,对于WIFI也不用作过多的关注
SettingBlock Size with CMD53对多功能块传输,HOST设置块大小通过些16BIT功能IO块大小寄存器(FBR中)HOST不会写这个寄存器用CMD53设置BLOCKMODE时。如果card检测到非法的块大小在执行CMD53设置blockmode时,这将知识OUT——OF——RANGE错误在当前相应中并且不会数据传输。也将停止中断
EmbeddedI/O Code Storage Area (CSA)为了支持“即插即用”为SDIO卡,卡可能需要含有内存块来存储驱动器或应用程序。此外,因为同样的的SDIO卡可用于多种不同的主机平台,有几个不同版本的代码,可能需要需要不同的版本的代码来对应相应的每个功能。一种选择是,这些程序存储在一个标准的SD记忆部分的combo卡。另外,一个标准的途径,以加载代码包含在可选的代码存储区(CSA。CSA是一个独立的16MB内存领域。访问时通过CSA地址指针和CSAwindow寄存器(包含在FBR)。
注意:每一个FUNCTION也许包含独立的CSA支持它。CSA数据可读写或者只读的。因为实际WIFI用的SDIO标准协议的1.00,而此文档根据的内容是1.10,所以在描述上有出入。