S3c2410_SDIO_調試筆記<五>

作者:下家山 

5.3 以塊方式寫10個字節

    5.3.1    CMD53配置

                  rSDICARG == 0x98000002;

                     rSDICCON == 0x00000B75;

                 響應

                     rSDICSTA == 0x00000A35;

                     rSDIRSP0 == 0x00001000;

                     rSDIDSTA == 0x00000010;

                    

                  解讀0x00000B75(略)

                     解讀0x00000A35(略)

                     解讀0x00001000(OK)

解讀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 datasheet對SDIO部分介紹不夠專業的原因?

 

  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 ,兩個寄存器。

rSDICARG:SDI 命令參數寄存器;

rSDICCON:SDI 命令控制寄存器;

這兩個寄存器合起來構成SDIO協議規範中的CMD5命令。其中:

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

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

個人觀點: CMD5的stuff bit ,CRC7bit ,Endbit可以不管。因爲他們的值固定,s3c2410已把他們做到SDIO控制器裏面去了,實際發送命令時,這些位都傳過去了,只是我們看不到而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章