作者:下家山
(见Simplified SDIO Card Specification.pdf 35page)因为,CMD52响应后返回数据为8bit,所以要送三次。第一次:
rSDICARG == 0x00001200;
rSDICCON == 0x00000B74;
响应
rSDICSTA == 0x00000A34;
rSDIRSP0 == 0x00001000;
解读0x00001200
0 000 0 0 00 0000 0000 0001 001 0 0000 0000
R/W flag |
Function Number |
RAW flag |
Stuff |
Register Address |
Stuff |
Write data or stuff bits |
1 3 1 1 17 1 8
解读0x00000B74(略)
解读0x00000A34(略)
解读0x00001000
0x00001000的低8位表示从地址0x09读出来的值为0x00;
第二次:
rSDICARG == 0x00001400;
rSDICCON == 0x00000B74;
响应
rSDICSTA == 0x00000A34;
rSDIRSP0 == 0x00001010;
解读0x00001400
0 000 0 0 00 0000 0000 0001 010 0 0000 0000
R/W flag |
Function Number |
RAW flag |
Stuff |
Register Address |
Stuff |
Write data or stuff bits |
1 3 1 1 17 1 8
解读0x00000B74(略) 解读0x00000A34(略)解读0x00001010
0x00001010的低8位表示从地址0x0a读出来的值为0x10;
第三次:
rSDICARG == 0x00001600;
rSDICCON == 0x00000B74;
响应
rSDICSTA == 0x00000A34;
rSDIRSP0 == 0x00001000;
解读0x00001600
0 000 0 0 00 0000 0000 0001 011 0 0000 0000
R/W flag |
Function Number |
RAW flag |
Stuff |
Register Address |
Stuff |
Write data or stuff bits |
1 3 1 1 17 1 8
解读0x00000B74(略)解读0x00000A34(略)
解读0x00001000
0x00001000的低8位表示从地址0x0b读出来的值为0x00;
最后,可以得到FN0 CIS指针地址为0x001000。
3.4 读出ID号
同样,读出ID号也是通过CMD52来实现的。(见5.2 CMD52及响应剖析)
我们可以从SDIO 协议规范中看出CIS 的整个区域地址范围为0x00001000~0x00017fff。
而,我刚才读出FN0 的CIS指针地址为0x001000,这证明是正确的。那么出厂时,这些CIS信息是如何存放在0x001000所在的区域的呢?以FN0为例,听我一一道来:
在0x001000起始的区域,SDIO 协议规范是以一个或多个链(连起来的列表)被称为数据块或tuples(便士)来组织这些CIS信息的。
文章评论(0条评论)
登录后参与讨论