模电资料库sd卡驱动工作原理分析完整版.docx
- 文档编号:885427
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:24
- 大小:107.01KB
模电资料库sd卡驱动工作原理分析完整版.docx
《模电资料库sd卡驱动工作原理分析完整版.docx》由会员分享,可在线阅读,更多相关《模电资料库sd卡驱动工作原理分析完整版.docx(24页珍藏版)》请在冰豆网上搜索。
模电资料库sd卡驱动工作原理分析完整版
sd卡工作原理分析
侯会明
2005-11-22
一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
-*
Atreset
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
这里对这个寄存器有两处操作
1首先将此寄存器和~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
2然后将此寄存器和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]andPIOE[9:
0]);CPU可以对这个寄存器进行读/写访问;复位后的默认值是0x0000。
GPPMA[7:
0]/GPPMB[7:
0]/GPPMC[7:
0]/GPPMD[7:
0](bits0to7)/GPPME[9:
0](bits0to9):
,这些位置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],
GPPMEusesbit9&bit8.
ForotherGPPMx,bit9&bit8are“-*”.
Atreset
0
0
0
0
0
0
0
0
0
0
这里对寄存器GPPMB和0x0002,将PIOB[2]作为输出,作用是CPLD的片选。
对寄存器GPPME先后进行了三步操作:
1首先将寄存器和0x0001或
将PIOE[0]作为输出,该管脚输出时钟clock。
2再次将寄存器和0xfffd与
将PIOE[1]作为输入,该管脚为SDI,即SD卡的输入。
3最后将寄存器和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]
Atreset
0
0
0
0
0
0
0
0
注意:
-*是保留位,这些位总是被写0,如果这些位被写1,正常操作无法被保证。
位说明:
1SFTCLK[1:
0](bit1tobit0)
这两位选择同步时钟,操作必须在主模式(mastermode)下,从模式(slavemode)被禁止。
bit[1:
0]]=00时,1/8HCLK;
bit[1:
0]]=01时,1/16HCLK
bit[1:
0]]=1x时,1/32HCLK
2SFTSLV(bit4)
这位用来选择主从模式
bit[4]=0时,Mastermode
bit[4]=1时,Slavemode
3SLMSB(bit5)
这位用来选择在收发数据过程中最低有效位在前(LSBfirst)还最高有效位在前(MSBfirst)
bit[5]=0时,LSBfirst
bit[5]=1时,MSBfirst
这里将其存器设置成0x22,选择了主模式Master|最高有效位在前MSB|1/32HCLK。
4)同步SIO状态寄存器——SSIOST
地址:
0xB7B01004
功能描述:
SSIOST寄存器指示同步SIO的操作状态,通过程序可以读写OERR和BUSY。
寄存器的SFTCT[2:
0]位是只读的,写这些位无效,当写这些位是,将写0。
.
7
6
5
4
3
2
1
0
SSIOST
SFTCT[2:
0]
-*
-*
-*
OERR
BUSY
Atreset
0
0
0
0
0
0
0
0
注意:
-*位是保留位,总是向这些位写0,如果写1,正常德操作将无法保证。
位说明:
1BUSY(bit0)
这位指示数据正在被收发,这位在数据收发时自动置1,操作完成时自动清0。
当置1时,意味着数据正在被传送,在传送的过程中写0,可能会终止收发操作并且重新初始化SSIO。
如果在空闲时写0,操作是无效的。
当bit[0]=0,Transmit-receiveidle
当bit[0]=1,Transmit-receiveinprogress
2OERR(bit1)
这位指示overrun错误是否发生。
如果当前接收的数据没有被读,CPU该位置1。
一旦被置1,这位不会清0,即使在下一个接受操作中没有overrun错误发生。
因此有必要在程序中清0,写0该位被清0,但写1也被置1。
当bit[1]=0,Nooverrunerror
当bit[1]=1,Overrunerror
3SFTCT[2:
0](bit7tobit5)
这个位指示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
-*
-*
-*
-*
-*
-*
-*
Atreset
0
0
0
0
0
0
0
0
注意:
-*位是保留位,这些位总是写0,如果写1,正常的操作无法保证。
位说明:
LBTST(bit7)
这个位使能循环回侧函数,当循环回侧函数使能时,发送信号作为接收信号被读回。
当bit[7]=0,Loopbacktestfunctiondisabled(normalmode)
当bit[7]=1,Loopbacktestfunctionenabled(testmode)
这里这个寄存器被写0x80,循环回侧函数使能,进行虚拟发送数据0xff并接收。
6)同步SIO收发缓冲寄存器——SSIOBUF
地址:
0xB7B01000
功能描述:
SSIOBUF寄存器在收发操作过程中保存收发的数据,寄存器可以通过程序读/写。
当写时,寄存器作为发送缓冲区;读时,寄存器作为接收缓冲区。
当接收SSIOBUF的内容时,数据保存直到下次接收操作完成。
转换并行发送数据为串行数据和转换串行接收数据为并行数据时SSIOREG寄存器被配置成移位寄存器。
在发送操作中,发送数据写到SSIOBUF中,SSIOBUF中的数据自动传送给SSIOREG。
在接收操作中,当接收完最后一位时,SSIOREG数据传送给SSIOBUF。
寄存器SSIOREG不能在程序中读/写。
7)同步SIO中断申请寄存器——SSIOINT
地址:
0xB7B01008
功能描述:
SSIOINT寄存器设定一个同步SIO中断请求,可以通过程序读写寄存器,向一位写1来清除该位。
7
6
5
4
3
2
1
0
SSIOINT
-*
-*
-*
-*
-*
TREMP
RXCMP
TXCMP
Atreset
0
0
0
0
0
0
0
0
注意:
-*作为保留位,这些位总是写0,如果这些位被写1,正常德操作无法保证
位说明:
1TXCMP(bit0)
当发送完成时这位被设置。
当bit[0]=0,Transmissionnotcomplete
当bit[1]=1,Transmissioncomplete
2RXCMP(bit1)
当接收完成时这位被设置。
当bit[1]=0,Receptionnotcomplete
当bit[1]=1,Receptioncomplete
3TREMP(bit2)
当收发缓冲区寄存器的数据被传送到移位寄存器并且收发缓冲区为空时这位被置位。
当bit[2]=0,Transmitdatanottransferred
当bit[2]=1,Transmitdatatransferred
这里将此寄存器写入0x07,将3个标志位置1,清除中断作为初始状态。
8)同步SIO中断使能寄存器——SSIOINTEN
地址:
0xB7B0100C
功能描述:
SSIOINTEN寄存器可以使能同步SIO中断,可以通过程序读写寄存器。
7
6
5
4
3
2
1
0
SSIOINTEN
-*
-*
-*
-*
-*
TREMP
RXCMP
TXCMP
Atreset
0
0
0
0
0
0
0
0
注意:
-*是保留位,总是对这些位写0,如果写1,正常操作无法保证。
位说明:
1TXCMPEN(bit0)
这位使能发送完成时的中断请求。
当bit[0]=0,Transmitcompleteinterruptrequestm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 资料库 sd 驱动 工作 原理 分析 完整版