原创 SD卡读写程序设计(一)

2009-11-2 21:44 7425 8 11 分类: MCU/ 嵌入式

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

一、概述


在智林STM32开发板上有采用SPI方式的SD卡接口,我手上有一块<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />512MSD卡,所以接下来就开始SD卡的读写程序设计,学习完了,就可以开始文件系统的移植学习了#####


 


二、程序框架设计


1、在shell里增加两个命令:sdwr,和sdrd


2sdwrSD卡设定的扇区写入输入数据。Sdrd是将刚刚写入的数据读出来。


3sdwr命令输入后,内部执行uartcmdsdwrite()函数。调用SD_WriteBlock()函数,将缓冲字符数组写入。而sdrd命令执行UartCmdSDRead()函数,调用SD_ReadBlock()函数,读入一个扇区,并用十六进制的方式在串口中断上显示。


4SD的驱动分为三层:应用层、命令层、和驱动层。分别用sddrive.csdcmd.c,和spi.c三个文件来实现。


 


三、SPI接口的SD


1SPI接口


   SPI是一种全双工、同步串行通信方式接口,这里用到了四个IO口:分别是时钟线SCK、输出口MOSI、输入口MISO、模式从机选择线NSS


2SPI接口与SD


STM32与采用SPI接口的SD卡,就像两个CPU通信一样,STM32处理器通过SPI接口发出命令,SD卡执行命令后返回相应的状态。命令有读写命令、也有参数设置命令。


3SD卡的内部结构:几个重要寄存器


1OCR寄存器:保存着卡的供电允许范围,位31表示卡上电后的状态,1表示空闲。


2CSD寄存器:总共128位,表示了卡的大部分配置信息。


3)状态寄存器:命令响应的状态。


 


4、常用的SPI模式命令


1)命令由六个字节组成:01-六位命令号-四个字节的命令参数-7位校验码-结束位1


2)命令分为10个类:


SPI支持:类0基本控制的(0复位、1激活初始化、9CSD寄存器、10CID寄存器、12多块过程中停止传输、13读状态寄存器),


2块读的(16设置块长度、17读一个数据块、18读多个数据块,直到发命令12);


4块写的(24写块、25写多个块、27CSD的可编程为);


5擦除的(32设置擦除块的起始地址、33设置终止块地址、38擦除先前选择的所有块);


6写保护的(可选28设置写保护、29清除写保护、30读写保护状态);


7的锁卡命令(可选42上锁或者解锁);


8的指定应用(55通知SD卡下个是特殊应用命令、56获取或写入一个数据块)。


 


5SPI命令的响应状态


1)有R11个字节)、R1B1个字节)、R2(两个字节)、R3(五个字节),大部分命令的响应是R1。读取状态寄存器响应R2、读取OCR响应R3R1BR1接近(有些命令只需要0或非0反馈,就用R1B,比如停止传输、擦除等命令)


2)每一个命令都有对应的响应长度,故发送命令函数要经过特殊的处理。

文章评论3条评论)

登录后参与讨论

用户377235 2012-5-21 21:03

SPI模式的命令的资料你是在哪找的,能否相告?在此多谢!

用户377235 2012-5-21 21:03

SPI模式的命令的资料你是在哪找的,能否相告?在此多谢!

用户1593293 2009-12-3 10:19

学习了,太有用了,加油!
相关推荐阅读
nthq2004 2010-05-08 20:04
USB自定义设备驱动02
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  本来还想编写应用程序测试一下自定...
nthq2004 2010-05-07 21:35
USB自定义设备驱动01
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、USB设备驱动入门1、学习目...
nthq2004 2010-05-04 21:01
智林开发板上实现自定义的USB HID设备
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、自定义HID设备的相关概念1...
nthq2004 2010-05-01 21:58
U盘例程在智林开发板上的移植
 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 一、移植前的准备工作1、有哪些操...
nthq2004 2010-04-30 19:19
U盘实现流程跟踪分析02
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   二、追踪USB大容量设备的实现...
nthq2004 2010-04-27 21:51
U盘实现流程跟踪分析01
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   一、追踪USB大容量设备的实现...
我要评论
3
8
关闭 站长推荐上一条 /2 下一条