51单片机读写sd_mmc卡设计报告

51单片机读写sd_mmc卡设计报告

ID:6069310

大小:318.00 KB

页数:13页

时间:2018-01-01

51单片机读写sd_mmc卡设计报告_第1页
51单片机读写sd_mmc卡设计报告_第2页
51单片机读写sd_mmc卡设计报告_第3页
51单片机读写sd_mmc卡设计报告_第4页
51单片机读写sd_mmc卡设计报告_第5页
资源描述:

《51单片机读写sd_mmc卡设计报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、51单片机读写SD_MMC卡设计报告杨文斌(qq:292942278)2007-08-20一、总则本文件介绍了在51平台通过SPI方式读写SD/MMC卡,包括软硬件需求,SD/MMC硬件连接,SPI接口软件模拟,SD/MMC上电初始化,写单块,读单块,写多块,读多块,块擦除,上位串口通讯协议,PC上位软件操作说明等。二、软硬件需求a)单片机固件编译环境:KeilC51uVision2b)PC上位软件编译环境:VisualC++6.0c)硬件环境:1)W78E52B一片;2)SD/MMC卡插座一个;3)MAX

2、232一片;4)cross串口线一条;三、SD/MMC硬件连接SD/MMC与51单片机引脚连接如下表1,供参考:51单片机引脚SD/MMC引脚P1_0SPI_CS(PIN1)P1_1SPI_SI(PIN2)P1_2SPI_SCK(PIN5)P1_3SPI_SO(PIN7)PIN4接VDDPIN3/6接GND表1SD/MMC与51单片机引脚连接表注意:SD/MMC引脚除VDD(PIN4)/VSS(PIN3/6)外,其它引脚连接上拉电阻(47k)至3.3v电源。四、SPI接口软件模拟由于W78E52B没有集成硬

3、件SPI接口,所以固件需要通过软件来模拟实现SPI接口;a)SPI接口基本原理:SPI采用HOST/SLAVE结构,HOST与SLAVE以字节为传输单位,支持4种模式;SPI接口定义有4个引脚CS,SI,SO,SCK;SDSPI接口工作于模式0,各引脚功能分别描述如下:1)CS为片选引脚,低电平为有效;2)SI为Host输出Slave输入引脚,空闲为高电平,SCK上升有效,;3)SO为Slave输出Host输入引脚,SCK下降有效;4)SCK为同步时钟;b)SPIHAL:包括4个函数,上层软件通过调用这4个

4、函数,来实现与SD/MMC以SPI方式进行数据交换。1)SPI_SendByte(INT8Uonebyte)――以SPI方式向SD/MMC发送一个字节2)INT8USPI_RecByte(void)――以SPI方式从SD/MMC接收一个字节3)SPI_CS_Assert(void)――将CS引脚置为低电平有效4)SPI_CS_Deassert(void)――将CS引脚置为高电平无效a)通过SPIHAL发送的RESET命令CMD0波形图,如下图1,以供参考:图1-RESET命令CMD0波形图一、SD/MMC上

5、电初始化当SD/MMC卡上电后,单片机需要对其进行上电初始化,上电初始化步骤顺序所列如下:1)置CS为低,至少延时74个CLK,延时波形图,如图2,以供参考:图2-延时波形图2)发送RESET命令CMD0,其波形图参考图1:3)发送命令CMD1(SD卡使用命令ACMD41)激活SD/MMC卡,固件需重复发送命令CMD1直到R1idlestate位为0。4)发送命令CMD58,读卡OCR寄存器。5)发送命令CMD9,读卡CSD寄存器,获得SD/MMC的基本参数:1)块最大的长度;2)卡中块的个数;等二、写单块

6、1)发送命令CMD24。2)接收R1响应。3)发送DataTokens(SingleBlockWrite:0xfe)。4)发送一个block(一般为512个字节)。5)发送两个CRC16码。6)循环接收数据,等待写完成,直到写完成接收到0xff。三、读单块1)发送命令CMD17。2)接收R1响应。3)等待DataTokens(SingleBlockRead:0xfe)。4)接收一个block(一般为512个字节)。5)接收两个字节CRC16码。四、写多块(Openended)1)发送命令CMD25。2)接收

7、R1b响应。1)发送DataTokens(SingleBlockWrite:0xfe)。2)发送一个block(一般为512个字节)。3)发送两个字节CRC16码。4)循环接收数据,等待写完成,直到写完成接收到0xff。5)重复步骤3,继续发送下一个数据包,直到所有数据包发送完成,至步骤8继续。6)发送命令CMD12,数据传输结束。7)接收R1b响应。一、读多块(Openended)1)发送命令CMD17。2)接收R1响应。3)等待DataTokens(SingleBlockRead:0xfe)。4)接收一

8、个block(一般为512个字节)。5)接收两个字节CRC16码。6)重复步骤3,继续接收下一个数据包,直到接收所有数据包完成后,至步骤7继续。7)发送命令CMD12,数据传输结束。8)接收R1b响应。二、多块擦除SD/MMC最大支持一次删除一个EraseGroup大小的连续块,SD/MMC的EraseGroup大小不是固定的,其大小指定在SD/MMC卡的CSD寄存器内,在上电初始化阶段,HOST可以使用命令CM

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。