没有合适的资源?快使用搜索试试~ 我知道了~
sd卡(驱动)工作原理分析完整版
3星 · 超过75%的资源 需积分: 20 17 下载量 61 浏览量
2011-12-12
18:37:28
上传
评论
收藏 521KB PDF 举报
温馨提示
试读
18页
sd卡(驱动)工作原理分析完整版 描述了sd卡的spi模拟方式和硬件驱动方式,主要是从原理方面介绍sd卡的应用!做sd卡驱动的朋友不可多得的资料
资源推荐
资源详情
资源评论
sd 卡工作原理分析 skyge2002@hotmail.com
1
sd 卡工作原理分析
侯会明
2005-11-22
一 CPU 相关,ssio 的连接和设置 ................................................................................................. 2
1 硬件初始化,ssio 的相关配置 ............................................................................................ 2
1) 端口功能选择寄存器——GPCTL .......................................................................... 2
2) 端口模式寄存器——GPPMA,GPPMB,GPPMC,GPPMD,GPPME ........... 2
3) 同步 SIO 控制寄存器——SSIOCON ..................................................................... 3
4) 同步 SIO 状态寄存器——SSIOST ......................................................................... 3
5) 同步 SSIO 测试控制寄存器——SSIOTSCON ....................................................... 4
6) 同步 SIO 收发缓冲寄存器——SSIOBUF .............................................................. 5
7) 同步 SIO 中断申请寄存器——SSIOINT ............................................................... 5
8) 同步 SIO 中断使能寄存器——SSIOINTEN .......................................................... 5
2 CPLD 片选 ............................................................................................................................ 6
3 第三步,ssio 收发字符相关 ................................................................................................ 6
二 数据包的封装与命令协议相关 ................................................................................................. 6
1 sd 卡指令数据包 ................................................................................................................... 6
2 sd 卡命令索引表 ................................................................................................................... 7
3 命令回应 repond ................................................................................................................. 10
1) R1 模式 ................................................................................................................... 10
2) R2 模式 ................................................................................................................... 11
3) R3 模式 ................................................................................................................... 11
三 命令的控制与实现 ................................................................................................................... 12
1 程序中调用的 sd 卡命令 .................................................................................................... 12
1) 命令响应函数——UCS_DRSD_niCommandRespond ......................................... 12
2) sd 卡驱动程序初始化——UCS_DRSD_giSdIdentify .......................................... 13
3) 读 sd 卡操作函数 ................................................................................................... 15
4) 写 sd 卡操作函数 ................................................................................................... 15
四 sd 卡的配置信息和相关结构体 .............................................................................................. 16
1 卡识别寄存器——CID(card identification register ) ......................................................... 16
2 卡特性寄存器——CSD(card specific data register) ........................................................... 17
sd 卡工作原理分析 skyge2002@hotmail.com
2
一 CPU 相关,ssio 的连接和设置
1 硬件初始化,ssio 的相关配置
1) 端口功能选择寄存器——GPCTL
地址:0xB7000000
功能描述:这个寄存器配置各组GPIO的管教原始功能或者第二功能;CPU可
以对这个寄存器进行读/写访问;复位后的默认值是0x0000。
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
GPCTL
-*
At reset
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
这里对这个寄存器有两处操作
① 首先将此寄存器和~0x0008 与,来操作 GPPMB;
GPCTL3(bit3)位控制管脚 PIOB[4]和 PIOB[1:0]的功能,设置如下:
GPCTL3 = “0” (原始功能)
GPCTL3 = “1” (第二功能)
Function
In/Out
Function
In/Out
PIOB[0]
In/Out
DREQ0
Input
PIOB[1]
In/Out
DREQCLR0
Output
PIOB[4]
In/Out
TCOUT0
Output
② 然后将此寄存器和 0x0100 或,来操作 GPPME。
GPCTL9(bit9)位控制管脚的功能,它的第二功能是 ssio
GPCTL9 = “0” (原始功能)
GPCTL9 = “1” (第二功能)
Function
In/Out
Function
In/Out
PIOE[3]
In/Out
SDA
In/Out
PIOE[4]
In/Out
SCL
Output
2) 端口模式寄存器——GPPMA,GPPMB,GPPMC,GPPMD,GPPME
地址:0xB7A01008~0xB7A01088
功能描述:这些寄存器指定相应管脚的I/O流向(PIOA[7:0], PIOB[7:0],PIOC[7:0],
PIOD[7:0] and PIOE[9:0]);CPU可以对这个寄存器进行读/写访问;复位后的默
认值是0x0000。
GPPMA[7:0]/GPPMB[7:0]/ GPPMC[7:0]/GPPMD[7:0] (bits 0 to 7)/GPPME[9:0]
(bits 0 to 9):,这些位置0时表示input;置1时表示output。
15~10
9
8
7
6
5
4
3
2
1
0
GPPM*
-*-*-*-
GPPMA[7:0]/GPPMB[7:0]/GPPMC[7:0]/
GPPMD[7:0]/GPPME[9:0],
GPPME uses bit9 & bit8.
For other GPPMx, bit9 & bit8 are “-*”.
At reset
0
0
0
0
0
0
0
0
0
0
sd 卡工作原理分析 skyge2002@hotmail.com
3
这里对寄存器GPPMB和0x0002,将PIOB[2]作为输出,作用是CPLD的片选。
对寄存器GPPME先后进行了三步操作:
① 首先将寄存器和 0x0001 或
将 PIOE[0]作为输出,该管脚输出时钟 clock。
② 再次将寄存器和 0xfffd 与
将 PIOE[1]作为输入,该管脚为 SDI,即 SD 卡的输入。
③ 最后将寄存器和 0x0004 或
将 PIOE[4]作为输出,该管脚为 SDO,即 SD 卡的输出。
3) 同步 SIO 控制寄存器——SSIOCON
地址:0xB7B01010
功能描述:SSIOCON寄存器用来控制收发操作。这个寄存器可以通过程序来进
行读或者写。如果SSIOCON寄存器被修改,那么变化会在收发操作结束后生
效。如果SSIOCON在传送过程中被修改,那么当前的操作将不能正确的执行。
7
6
5
4
3
2
1
0
SSIOCON
-*
-*
SLMSB
SFTSLV
-*
-*
SFTCLK [1:0]
At reset
0
0
0
0
0
0
0
0
注意:-*是保留位,这些位总是被写 0,如果这些位被写 1,正常操作无法被保
证。
位说明:
① SFTCLK [1:0] (bit 1 to bit 0)
这两位选择同步时钟,操作必须在主模式(master mode)下,从模式(slave mode)
被禁止。
bit[1:0]] = 00 时,1/8 HCLK;
bit[1:0]] = 01 时,1/16 HCLK
bit[1:0]] = 1x 时,1/32 HCLK
② SFTSLV (bit 4)
这位用来选择主从模式
bit[4] = 0 时,Master mode
bit[4] = 1 时,Slave mode
③ SLMSB (bit 5)
这位用来选择在收发数据过程中最低有效位在前(LSB first)还最高有效位在前
(MSB first)
bit[5] = 0 时, LSB first
bit[5] = 1 时, MSB first
这里将其存器设置成 0x22 ,选择了主模式 Master| 最 高 有 效 位 在 前
MSB|1/32HCLK。
4) 同步 SIO 状态寄存器——SSIOST
地址:0xB7B01004
sd 卡工作原理分析 skyge2002@hotmail.com
4
功能描述:SSIOST寄存器指示同步SIO的操作状态,通过程序可以读写OERR
和BUSY。寄存器的SFTCT[2:0]位是只读的,写这些位无效,当写这些位是,
将写0。
.
7
6
5
4
3
2
1
0
SSIOST
SFTCT [2:0]
-*
-*
-*
OERR
BUSY
At reset
0
0
0
0
0
0
0
0
注意:-*位是保留位,总是向这些位写0,如果写1,正常德操作将无法保证。
位说明:
① BUSY (bit 0)
这位指示数据正在被收发,这位在数据收发时自动置1,操作完成时自动清0。
当置1时,意味着数据正在被传送,在传送的过程中写0,可能会终止收发操作
并且重新初始化SSIO。如果在空闲时写0,操作是无效的。
当bit[0] = 0,Transmit-receive idle
当bit[0] = 1,Transmit-receive in progress
② OERR (bit 1)
这位指示overrun错误是否发生。如果当前接收的数据没有被读,CPU该位置1。
一旦被置1,这位不会清0,即使在下一个接受操作中没有overrun错误发生。因
此有必要在程序中清0,写0该位被清0,但写1也被置1。
当bit[1] = 0, No overrun error
当bit[1] = 1 ,Overrun error
③ SFTCT[2:0] (bit 7 to bit 5)
这个位指示 3 位移位计数器的当收发时的计数值。当没有数据收发时计数器被
设置成 000(二进制)。每次收发数据时有移位,计数器增 1。当收发操作结束时
或者 BUSY 位在接收数据过程中写 0 时,寄存器返回 000。
这里这个寄存器被写 0x00 清除状态。
5) 同步 SSIO 测试控制寄存器——SSIOTSCON
地址:0xB7B01014
功能描述:SSIOTSCON是一个可以设计简单的同步SIO内部测试的寄存器,寄
存器可以有程序读写。在普通操作中,设置SSIOTSCON为0x00,收发数据时不
覆盖此寄存器的内容。
7
6
5
4
3
2
1
0
SSIOTSCON
LBTST
-
*
-
*
-
*
-
*
-
*
-
*
-
*
At reset
0
0
0
0
0
0
0
0
注意:-*位是保留位,这些位总是写0,如果写1,正常的操作无法保证。
位说明:
LBTST (bit 7)
这个位使能循环回侧函数,当循环回侧函数使能时,发送信号作为接收信号被
读回。
剩余17页未读,继续阅读
资源评论
- greedy122012-02-06很好的资料,但是没有介绍SD基本读写的原理和信号时序
- David_zhou12013-07-23都是硬件方面的 看不太懂
kermitlei
- 粉丝: 33
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功