Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2883889
  • 博文数量: 674
  • 博客积分: 17881
  • 博客等级: 上将
  • 技术积分: 4849
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 10:15
文章分类

全部博文(674)

文章存档

2013年(34)

2012年(146)

2011年(197)

2010年(297)

分类: LINUX

2012-02-09 18:22:08

一:SDIO简介

    在介绍SDIO原理前,还是先来点SDIO知识的普及工作吧!

新兴的消费性电子产品不仅要求大容量,高速,而且要求数据的保密性。因此,美国MEI公司,美国SanDisk 公司,日本Toshiba 公司,组成联合小组推出SD Card协议规范。该协议规范定义了SD Memory CardSDIO Card

我们平常所说的SD卡即SD Memory CardSecure Digital Memory Card安全数字存储卡),专为存储数据而设计。该协议规范定义了SD Memory 卡的电压范围为1.6~3.6V,默认模式下最大时钟为25Mhz,速率最大可达到12.5M字节/(4根数据线);高速模式下,最大时钟可达到50Mhz,速率最大可达到25M字节/秒(4根数据线)。并支持SPI传输模式。目前规范的V1.10版本最大容量只支持到2Gbyte,但未来可达到32Gbyte

SDIO Card ,即Secure Digital Input/Output Card(安全数字输入输出卡),是与SD Memory Card兼容的一种卡。其兼容能力包括:机制,电气特性,功耗,信号,软件。SDIO Card是为高速数据I/O传输,低功耗移动电子设备而设计的。目前,应用在wifigpsgprs,条码扫描器等设备接口部分。其电压范围为2.0~3.6V。协议规范定义了两种类型的SDIO Card,即高速SDIO Card和低速SDIO Card。高速SDIO Card 支持SPI,1-bit SD 4-bit SD 传输模式,其时钟最大可达到25Mhz,速率最大可达到10M字节/秒。低速SDIO Card,只需要SPI1-bit SD 传输模式,4-bit模式可选,其时钟最大为400Khz

二:深入SDIO

虽然,SDIO接口的产品越来越多,但相比SD Memory Card来说,网上的资料很少。也就是说,基本上要靠自己了,网络帮不了你什么忙!

S3C2410 datasheetSDIO部分的介绍不够详细,很多部分仅仅提到,因此我怀疑sumsung们并不重视这一部分。或者说,他们不擅长这部分。

不管调试哪个从设备,第一步想到应该是去读出该设备的ID号,因为每个设备肯定是有ID号的,而且在其Datasheet中应该有说明,这是证明你读写寄存器最简单的方法了。对于很多I2C总线接口的设备,读出设备的ID号比较简单,只要读出存放该设备ID号的寄存器就OK了;但,针对SDIO接口规范,要读出SDIO卡的ID号,就不只操作一个寄存器这么简单了。因为,SDIO的最大速率达到10Mbyte,这么高的速率肯定是以其复杂的协议规范为代价的。

21 SDIO Signal Pins

 SDIO card ID

    要读出ID号,需要对卡进行初始化工作。下面是我在S3c2410上调试conexant wifi card 时的初始化顺序

 

3.1  S3C2410—SDIO相关寄存器设置

  S3c2410的设置,要根据下列几种情况来考虑

   1polling方式;

   2interrupt 方式;

   3DMA方式;

      因为,我最终是要用到DMA方式,所以我这里只介绍DMA方式的设置。(在调试过程中,一般是先从polling开始调试,因为其最简单)但,因初始化过程中只发送几个命令,所以,我还是采用的polling方式,即使用CMD53命令时,我才用到DMA

    而初始化时只需要设置rSDIPRErSDICONrSDIDTIMER三个寄存器:

    rSDIPRESDI 波特率设置寄存器,在发送数据前,波特率一般设置到400Khz

    rSDICONSDI 控制寄存器,只需ByteOrder, FRST, CTYP置位;

    rSDIDTIMER:数据超时寄存器;(等待SDI数据响应时间,一般设置到0xff00

    在设置完这些寄存器后应该delay 74clock

    注意:发送每个命令前rSDICARG(命令参数寄存器)rSDICCON(命令控制寄存器)是必须设置的。

 

3.2 如何判断命令是否发送正确

       命令发送后,需要根据rSDICSTA(命令状态寄存器), rSDIRSP0-3(命令响应寄存器)来判断是否正确响应。  

                       rSDICSTA(命令状态寄存器)

 

 

如果,RspFin位置位,表示命令响应结束,但这并不代表命令响应正确,还有检测RspCrc, CmdTout 是否置位,如果置位则表示发生错误。(在发送cmd5时,crc位可以不管, 个人认为)在检测状态位的同时,还要判断RspIndex是否为你发送时的命令号。

       rSDIRSP0-3(命令响应寄存器)要根据你所发送的命令来解析是否正确。

3.3 得到CIS 结构指针地址

     3.3.1 什么是CIS

每个SDIO card 有一个CIS区域,在这个CIS区域内分成0-7八段,对应到FN0-FN7(Function Number 0-7)。而且,每个段的CIS都有一个CIS pointerCIS 指针)指向其起始地址。(FN0-7代表每个SDIO卡支持功能数,发送CMD5后,响应R4Number of I/O function 域指示卡所支持的最大功能号。即,如果Number of I/O function == 1,那么表示此卡支持FN0FN1FN0是每个卡都支持的,存放卡最基本的信息,Card Common Card Information Structure表示的就是这个意思,卡的ID号就存放在FN0所对应的CIS中,所以要读出卡的ID号,首先就要得到FN0所对应CIS的指针)

          对,CISCIA)区域的读写操作是通过CMD52来实现的。

          例:

          我在得到conexant wifi card CIS指针时操作如下:

           因为,卡ID号存放在common CIS内,所以我们需要操作FN0。根据SDIO协议规范FN0 CIS Pointer地址为0x09, 0x0A, 0x0B

          

  

(见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信息的。    

 

每个链节点有三个域:

           第一个域: 00 byte,表示tuple code号,也即TPL_CODE Tuple code: CISTPL_xxx(各种代码号见Table13-2)

           第二个域:01 byte,表示tuple body字节数,也即到下一个节点的偏移地址;

           第三个域:02~n+2 byte,表示tuple body内容;

有了这些知识,我们再来看我读写conexant wifi sdio card ID号的操作:

       步骤一:读地址0x001000

              rSDICARG == 0x00200000

              rSDICCON == 0x00000B74

              响应

              rSDICSTA == 0x00000A34

              rSDIRSP0 == 0x 00001021                   

              解读0x00000B74(略)

             解读0x00000A34(略)

             解读0x000010210x00001021的低8位表示从地址0x001000读出来的值为0x21,查看table13-2得知为CISTPL_FUNCID

       步骤二:读地址0x001001

              rSDICARG == 0x00200200

              rSDICCON == 0x00000B74

              响应

              rSDICSTA == 0x00000A34

              rSDIRSP0 == 0x00001002                               

             解读0x00000B74(略)

             解读0x00000A34(略)

             解读0x000010020x00001002的低8位表示从地址0x001001读出来的值为0x02,根据table13-1可知CISTPL_FUNCIDtuple body大小为2字节,读出来的第一个tuple code号并不为CISTPL_MANFID(0x20),而且知道其下一个节点的偏移量为2,需要继续读。

       步骤三:读地址0x001004

              rSDICARG == 0x00200800

              rSDICCON == 0x00000B74

              响应

              rSDICSTA == 0x00000A34

              rSDIRSP0 == 0x00001022                             

             解读0x00000B74(略)

             解读0x00000A34(略)

             解读0x000010220x00001022的低8位表示从地址0x001004读出来的值为0x22,查看table13-2得知为CISTPL_FUNCE

     步骤四:读地址0x001005

              rSDICARG == 0x00200A00

              rSDICCON == 0x00000B74

              响应

              rSDICSTA == 0x00000A34

              rSDIRSP0 == 0x00001004                               

             解读0x00000B74(略)

             解读0x00000A34(略)

             解读0x000010040x00001004的低8位表示从地址0x001005读出来的值为0x04,根据table13-1可知CISTPL_FUNCEtuple body大小为4字节,读出来的第一个tuple code号并不为CISTPL_MANFID(0x20),而且知道其下一个节点的偏移量为4,需要继续读。

    步骤五:读地址0x00100A

              rSDICARG == 0x 00201400

              rSDICCON == 0x00000B74

              响应

              rSDICSTA == 0x00000A34

              rSDIRSP0 == 0x00001020                             

             解读0x00000B74(略)

             解读0x00000A34(略)

             解读0x000010200x00001020的低8位表示从地址0x00100A读出来的值为0x20,查看table13-2得知为CISTPL_MANFID

     步骤五:读地址0x00100C

              rSDICARG == 0x 00201800

              rSDICCON == 0x00000B74

              响应

              rSDICSTA == 0x00000A34

              rSDIRSP0 == 0x00001013                            

            解读0x00000B74(略)

             解读0x00000A34(略)

             解读0x000010130x00001013的低8位表示从地址0x00100C读出来的值为0x13,因为已得到CISTPL_MANFID节点号,根据Table13-1可直接读出tuple body信息,故此时地址为0x00100C,而非0x00100B。所以,读出来的值0x13即为conexant wifi sdio card ID号,这里你也可以读出0x00100B中的值,看CISTPL_MANFIDtuple body总共占多少字节,即可以把其所有信息读出来。

             其实,开始我并不知道,这0x13就为conexant wifi sdio card ID 号,只是我把后续的三个字节读出来才知道。这后续的三个字节是003826,这咋一看也不知道什么东东,但是,在我看conexant提供的驱动代码时,发现其fireware文件名为03826.h,这样我就猜出来了。你想想,这CIS里不放些这样的信息,放什么信息呢?后来的操作,证明我的猜测是正确的,在探索真理的过程中,需要摸着石头过河,既然是探索,就要边走边看,柳暗花明的好事是常有的!

   终于把如何读ID号写完,我要听听音乐了,上上网了。

五.多字节传输

 ID号已经读出来了,

CMD52只是对单个寄存器进行读写操作,而SDIO的优势是多字节传输。SDIO的协议规范专门定义了一个命令CMD53来实现。

 多字节传输又分流方式和块方式。(Stream Mode or Block Mode)

 因为,要挂接DMA,所以我这里先介绍BlockMode

 

 5.1 如何着手

       调试这类设备,一般是先写,然后读,看读出来的是否与写进去的相等。但,有时对一个全新的东西没有一点把握,此时可先读,看读出来的是不是那么回事。(如何把SDIO挂接到DMA上去,我这里就不介绍了)

 

 

 5.2CMD53的理解

    SDCommand IndexR/W FlagCRC7E这些域应该不用解释了;

    Function Number:在实际配置命令参数时,应该设置为多少呢?还记得发送CMD后的响应值吗,你这里的值要根据它来设置,在我的例子中,CMD5返回值中Function Number1(即可支持到FN0FN1),因为FN0中存放的是common CIS,所以,要读写卡内存,应该用FN1,故这里设置到1.

 Block Mode       设置到1

 OP code           设置到0(固定地址);(我还没有完全搞懂

 RegisterAddress     设置到0;(我还没有完全搞懂

 Byte/BlockCount    设置到2,表示只传输2个块。

                     注意:如果BlockMode设置到0,表示以流方式(Stream)传输,Byte/BlockCount就应该是要传输的字节数;如果BlockMode设置到1,表示以块方式(Block)传输,Byte/BlockCount就应该设置为要传输的块的数目。

5.3 以块方式读10个字节

    5.3.1    CMD53配置

                  rSDICARG == 0x18000002

                     rSDICCON == 0x00000B75

                 响应

                     rSDICSTA == 0x00000A35

                     rSDIRSP0 == 0x00001300

 

                  解读0x00000B75(略)

                     解读0x00000A35(略)

                     解读0x00001300:参照R5可知发生了command out of range!   invalid function number!两个错误。对于这两个问题,因Function Number错误只涉及到一个位,所以先解决这个问题。根据参考代码(我这里有一份Marvell-wifi-sdio-card代码)发现有操作CCCR02寄存器,但当时也没有去在意这个操作,后来细读SDIO规范,发现I/O enable这个寄存器是个非常重要的寄存器。

看到了吗?I/O Enable控制着IOE1~IOE7,这七个IOE对应着FN1—FN7

所以要用FN1功能就必须使能IOE1

       I/O Enable的操作是通过CMD52来实现的。

5.3.2 CCCR I/O Enable的操作

              CMD52配置

rSDICARG == 0x80000402

                     rSDICCON == 0x00000B74

                 响应

                     rSDICSTA == 0x00000A34

                     rSDIRSP0 == 0x00001002

                 解读

                  0x00000B74(略)

                     0x00000A34(略)

                0x00001002 8位表示写到I/O Enable寄存器的值为2

      回到5.3.1,再次发送CMD53(内容略)。

      这次响应值为

                   rSDIRSP0 == 0x00001100

     说明invalid function number错误已解决;还剩下command out of range错误,造成这个错误的

原因比较多,所以很难定位。这个地方花了我比较长的时间,后来同事提醒我块的尺寸设置没有(他

当时也在帮我看着部分),我突然想起参考代码有这个动作,只不过他放在写块中,而我调试的是读

块动作。所以,我马上把这个动作加进去了,果然得到了回应码0x00001000

 

5.3.3 FN1I/O block size的操作

           CMD52配置

               设置block size8

rSDICARG == 0x8002200A

                     rSDICCON == 0x00000B74

                 响应

                     rSDICSTA == 0x00000A34

                     rSDIRSP0 == 0x0000100a

                 解读 0x00000B74(略)

                     0x00000A34(略)  0x0000100a 8位表示设置到FN1 Block Size大小的低字节为0x0a

                设置block size8

rSDICARG == 0x80022200

                     rSDICCON == 0x00000B74

                 响应

                     rSDICSTA == 0x00000A34

                     rSDIRSP0 == 0x00001000

                 解读 0x00000B74(略)

                     0x00000A34(略)  0x00001000 8位表示设置到FN1 Block Size大小的高8位为0x00。回到5.3.1,再次发送CMD53(内容略)。这次响应值为

                   rSDIRSP0 == 0x00001000 OK                

        而且,DMA中断发生了,并且得到了读出来的值。但,因不知道这读出来的20个字节为何物,所以还得先写,如果都以块操作应该没什么问题。

5.3 以块方式写10个字节

    5.3.1    CMD53配置

                  rSDICARG == 0x98000002

                     rSDICCON == 0x00000B75

                 响应

                     rSDICSTA == 0x00000A35

                     rSDIRSP0 == 0x00001000

                     rSDIDSTA == 0x00000010

                    

                  解读0x00000B75(略)

                     解读0x00000A35(略)

                     解读0x00001000OK

解读0x00000010(发送完成)

   5.4 Stream Mode存在的问题(具体操作略

       其实,最开始我以简单起见,一直都是以Stream Mode方式操作的。

先写20个字节,好像也没发现什么异常,但,发现读时DMA中断不能发生。这是何故呢?

      在传送数据时还有个数据状态寄存器rSDIDSTA(其实,我每发送一个命令把所有的状态寄存器读打印出来了),发现在写块后,其值老为0x00000002,表示数据正在发送。明明发送完了,命令也正确响应,为什么还在发送呢?再后来,我又去掉写动作,只读,发现虽然把数据读出来,但数据状态寄存器rSDIDSTA老是0x00000001,表示正在接收。

        在此,我徘徊了很久,而且百思不得其解!

        一次偶然,我从Block Mode转到Stream Mode时忘了清S3c2410 SDIO 的数据控制寄存器rSDIDCON的【17】位,即Block Mode位,发现竟然读出了我想要的20个数据。我茫然,怎么会这样呢?既然是以Stream Mode方式,为什么S3C2410 SDIO数据控制寄存器要设成Block Mode方式呢?这难道是sumsung s3c2410 datasheetSDIO部分介绍不够专业的原因?

 

  5.5  s3c2410 sdio 块传输相关寄存器设置

       只需注意rSDIDCON(数据控制寄存器)的设置:

       写时设置为rSDIDCON = 0x0033b002

       读时设置为rSDIDCON = 0x002ba002

 SDIO协议规范—S3C2410寄存器对应关系

   6.1  CMD5剖析  

                        Cmd5 协议规范

 

S

D

Command Index

000101b

Stuff

bits

I/O OCR

 

CRC7

E

1   1        6              8              24                 7    1

S(tart bit)         Start bit. Always 0

D(irection)        Direction. Always 1 indicates transfer from host to card

Command Index    Identifies the CMD5 command with a value of 000101b

Stuff Bits          Not used, shall be set to 0

I/O OCR         Operation Conditions Register. The supported minimum and maximum values for VDD. The layout of the OCR is shown follow

         

 

I/O OCR bit

  position

VDD voltage window

     (in Volts)

    0-3

    Reserved

     4

    Reserved

     5

    Reserved

     6

    Reserved

     7

    Reserved

     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

                                             Table 1

CRC7          7bits of CRC data

E(nd bit)        End bit, always 1

S3C2410中要发送CMD5需要设置rSDICARG rSDICCON ,两个寄存器。

rSDICARGSDI 命令参数寄存器;

rSDICCONSDI 命令控制寄存器;

这两个寄存器合起来构成SDIO协议规范中的CMD5命令。其中:

    rSDICARG[24:0]=====================CMD5[31:8]       8bit无效

    rSDICCON[7:0]======================CMD5[47:40]

个人观点: CMD5stuff bit CRC7bit ,Endbit可以不管。因为他们的值固定,s3c2410已把他们做到SDIO控制器里面去了,实际发送命令时,这些位都传过去了,只是我们看不到而已。

 

CMD5命令响应—S3C2410寄存器的对应关系

协议规定CMD5命令响应为R4,其响应格式为:

                            R4 响应格式

S

D

Reserved

C

Number

 Of I/O

functions

Memory

present

Stuff

Bits

I/O OCR

Reserved

E

1  1     6      1      3          1       3            24            7       1       

S(tart bit)         Start bit. Always 0

D(irection)        Direction. Always 0 indicates transfer from card to host

Reserved         Bits Reserved for future use. These bits shall be set to 1.

C(omplete)       Set to 1 if card is ready to operate after initialization.

I/ OCR           See Table 1

Memory Present   Set to 1 if the card also contains SD memory . Set to 0 if the card is I/O only.Number of I/O FunctionsIndicates the total number of I/O functions supported by this card. The range is 0-7. Note that the common area present on all I/O cards at Function 0 is not included in this count. The I/O functions shall be implemented sequentially beginning at function 1.

Stuff Bits          Not used shall be set to 0.

个人观点: R4的长度为48bit,因为很多位是固定的,因此,S3C2410把它做到了一个响应

寄存器中,即rSDIRSP0(响应寄存器0)

     发送CMD5命令后,通过Pollinginterrupt方式读取rSDIRSP0中的值。我发

CMD50x00000345)后得到的响应寄存器0的值为90FF8000。下面对90FF8000进行解码分析。

 1     001          0       000     1111 1111 1000 0000 0000 0000

 

C

Number

Of I/O

functions

Memory

Present

Stuff

Bits

    I/O  OCR

1      3           1        3            24

C(omplete) == 1 表示初始化完成;

Number Of I/O functions == 001 表示此SDIO card所支持的功能号为01

Memory Present == 0 表示 此卡仅为I/O卡;

Stuff Bits == 000 (本应该为000)

I/O OCR == FF8000对应到Table1 ,即此卡支持的电压范围为【2.7v~3.6v

6.2  CMD52及响应剖析

rSDICARG[7:0]=====================CMD52[15:8]Write Data or Stuff Bits      

rSDICARG[8]=====================CMD52[16]  (Stuff)

rSDICARG[25:9]=====================CMD52[33:17]  (Register Address)

rSDICARG[26]=====================CMD52[34]  (Stuff)

rSDICARG[27]=====================CMD52[35]  (RAW flag)

rSDICARG[30:28]=====================CMD52[38:36]  (FunctionNumber)

rSDICARG[31]=====================CMD52[39]  (R/W flag)

 rSDICCON[7:0]======================CMD5[47:40](S/D/command index)

 

 

 

 

6.2.1 S3c2410中,如何解读发送CMD52后的结果

     s3c2410中,解读任何一个命令发送后的状态是通过读取rSDICSTA(命令状态寄存器), rSDIRSP0-3(命令响应寄存器),然后分析的。以我读取conexant wifi SDIO card 出厂ID号为例,发送CMD52后,得到的这两个寄存器的值为:

     rSDICSTA == 0x00000A34 

rSDIRSP0 == 0x00001013

                     解码0x00000A34 

0………..0      0          1         0           1           0        0011  0100

 

undefine

Response CRC Fail

Command Sent

Command Time Out

Response Receive End

CMD line progress

RspIndex

18            1         1         1           1          1             8

Command Sent == 1 表示命令已发送;

ResponseReceiveEnd == 1 表示命令响应结束;

RspIndex == 0x34 表示命令号为52(0x34)

这表明命令状态OK

解码0x00001013

0……0      0       0       01       0    0    0         0       0001 0011

 

undefine

COM_CRC_ERROR

illegal_COMMAND

IO_CURRENT_STATE

ERROR

RFU

FUNCTION_NUMBER

OUT_OF_RANGE

Read or Write Data

16        1        1        2      1    1     1        1          8

IO_CURRENT_STATE == 01 表示 Execution CMD52 in CMD State

Read or Write Data == 0x13 表示读出来的出厂ID号为0x13

     个人观点:CMD52 Response (R5)中的stuff域,E域因其值固定而在S3c2410中没有表现出来,而CRC7rSDICSTA中有专门的crc位指示。而,S域,D域,CommandIndex域也在rSDICSTA中的【7:0】显示出来了,所以在rSDIRSP0中没有必要再显示这些值。

6.3  CMD53及响应剖析

 

rSDICARG[8:0]=====================CMD53[16:8]  (Byte/Block Count)

rSDICARG[25:9]=====================CMD53[33:17]  (Register Address)

rSDICARG[26]=====================CMD53[34]  (OP Code)

rSDICARG[27]=====================CMD53[35]  (Block Mode)

rSDICARG[30:28]=====================CMD53[38:36]  (FunctionNumber)

rSDICARG[31]=====================CMD53[39]  (R/W flag)

 rSDICCON[7:0]======================CMD5[47:40](S/D/command index)

 

   注意:CMD53的响应与CMD52一样为R5

  

 关于SD Group

     MEIMatsu****a Electric Industrial Co.,LTD美国MEI公司,是无人值守自动支付电子交易系统,包括纸币器,硬币器,无现金支付系统,自动售货机管理解决方案的全球最大制造商之一),SanDisk Corporation(SanDisk, SanDisk Dr. Eli Harari 1988 年创立,是一家在非易失性存储器技术方面享誉全球的国际性知名公司,已发展成为全球最大的闪存数据存储产品供应商。

 

同时为消费者(通过全球接近 200,000 个零售店面)和原始设备制造商 (OEM) 提供服务,SanDisk 设计、开发、制造和销售适用于各种电子系统和数字设备的闪存卡和其它产品。另外,SanDisk 还授权其它多个业界领先的公司使用其技术。

 

凭借闪存以紧凑、活动格式存储大量数据的功能,SanDisk 的产品已帮助推动数码相机、多功能移动电话、USB 闪存盘、MP3 音乐播放器和其它数字消费性设备的销售呈级数增长。

SanDisk 当前在美国拥有大约 720 项专利,在其它国家或地区拥有大约 400 项专利,而且是全球唯一一家有权制造和销售各种主要闪存卡格式的公司,这些格式包括 CompactFlash®SD™miniSD™Micro SDMultiMediaCard™、小型 MultiMediaCard (RS-MMC™ )Memory Stick PRO™ 及相关的 Memory Stick™ 产品、xD-Picture 卡和™ USB 闪存盘。

)Toshiba Couporation(Toshiba,日本东芝)

 

阅读(3895) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~