新闻  |   论坛  |   博客  |   在线研讨会
S3c2410_SDIO_调试笔记
xiajiashan | 2012-08-28 15:24:23    阅读:746   发布文章

作者:下家山

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控制器里面去了,实际发送命令时,这些位都传过去了,只是我们看不到而已。

 

 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
02年接触ARM和ucos,开发过有线和无线图像报警器,IPCamera,人脸识别系统,OCR识别系统,指纹识别系统,05年开始从事Linux及Rtems下WiFi,camera,Ethernet等驱动开发工作,专做嵌入式linux培训,致力于把我十年来的研发经验传授给每一个学员,招人的可以找我,ximenpiaoxue4016@sina.com
推荐文章
最近访客