为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机访问SD卡精简方法的设计与实现

2013-10-27 4页 pdf 242KB 47阅读

用户头像

is_530147

暂无简介

举报
单片机访问SD卡精简方法的设计与实现 第 28卷第 4期 2011年 4月 机 电 工 程 Journa l ofM echanica l& E lectr ica l Eng ineering Vo.l 28 No. 4 Apr. 2011 收稿日期: 2010- 11- 01 基金项目:湖北省数字化纺织装备重点实验室开放课题资助 (DTL200905) 作者简介:张 弛 ( 1979- ),男,湖北武汉人,讲师,主要从事机电一体化,数字化制造方面的研究. E-m ai:l b etazhang13@ sina. com 单片机访问 SD...
单片机访问SD卡精简方法的设计与实现
第 28卷第 4期 2011年 4月 机 电 工 程 Journa l ofM echanica l& E lectr ica l Eng ineering Vo.l 28 No. 4 Apr. 2011 收稿日期: 2010- 11- 01 基金项目:湖北省数字化纺织装备重点实验室开放课题资助 (DTL200905) 作者简介:张 弛 ( 1979- ),男,湖北武汉人,讲师,主要从事机电一体化,数字化制造方面的研究. E-m ai:l b etazhang13@ sina. com 单片机访问 SD卡精简方法的设计与实现* 张 弛,张成俊,吴晓光 (武汉纺织大学 机电学院, 湖北 武汉 430074) 摘要:针对传统方法中 /单片机 (MCU )读写 SD卡数据时需要执行复杂的文件分区表数据操作 0的缺点 ,以 LED护栏管显示屏技术 要求为例,提出了一种单片机主从系统中快速、简单的 SD卡存储器的访问方法, 并给出了一种实用的 SD卡与单片机连接的接口电 路。采用该方法读取 SD卡控制数据与存储文件的分区式无关, 因此支持 FAT32、NTFS、exFAT等文件格式下从 16MB ~ 32 GB 的 SD卡。该方法对需从 SD卡中连续读取控制数据的主、从控制系统均适用,有很强的实用性。该方法在 LED护栏管显示屏控制 器产品中得到应用,应用结果表明该系统读取数据稳定,控制效果良好。 关键词: SD卡; SP I方式;单片机; STC11L05 中图分类号: TH39; TP39 文献标志码: A 文章编号: 1001- 4551( 2011) 04- 0479- 03 Design and implementation of simple SD card drivenmethod inMCU system ZHANG Ch,i ZHANG Cheng- jun, WU X iao-guang ( Schoo l ofM echan ica lEng ineering, Wuhan Text ile Un iversity, W uhan 430074, Ch ina) Abstract: In o rder to reduce the d ifficu lty of secure dig italm emo ry card operation in m ic rocon tro ller un it(MCU ) system, a simp le SD card driven me thod and interface circu itw as introduced. This me thod is independent o f partition tab le, so it susta ins all k inds of SD card and par- tition fo rm ats, inc lud ing FAT32, NTFS, exFAT form at from 16MBy te to 32 GByte SD card. It can be appropr iate forM aster- slave control sys- tem using SD card. Th is m ethod was used in LED d isplay controller system. The app lication results indicate that the system ach ieves good effec.t Keyw ords: secure d ig ita lm em ory card; SP Im ode; m icro contro ller unit( MCU ); STC11L05 0 引 言 SD卡是基于 FLASH 存储介质的新一代记忆设 备, 由日本松下、东芝及美国 SanD isk公司于 1999年 8 月在 MMC卡 (M u lt iM ed ia Card)基础上共同开发研 制,具有体积小、容量大、数据传输快、移动灵活、安全 性能好以及兼容 MMC卡等特点 [ 1-2]。它的出现提供 了一个便宜的、结实的、卡片式的存储媒介, SD卡的容 量从 16MB到最高 32GB不等, 可为众多应用提供充 足的外部存储空间 [ 3-4 ]。 SD卡的数据读取以扇区为单位,一次读取512 By tes。 对于低成本 51核单片机,片内只有 256 By tes RAM空 间, 并且不能全部用来读取 SD卡数据。因此很多 SD 卡数据读取控制方案, 使用 SD卡的单片机都要求能 一次存储 512 By tes数据, 必需选择性能较高的单片 机。而且为了便于同 PC机兼容, 传统方式下需对 SD 卡的文件分区格式进行处理。为了能适用于 FAT32、 NTFS、exFAT等各种分区格式, 单片机驱动程序中使 用了较多的资源来实现 SD卡的访问控制, 特别是针 对分区表的操作。 笔者针对一些主从控制系统的控制要求, 提出了 一种精简 SD卡读取方法, 使得一些低成本单片机也 能很方便地使用 SD卡这种大容量外部存储介质。 1 SD卡精简方法适用场合 在低成本单片机控制系统中, 单片机访问 SD卡 的方式一般是只读的,而且为了达到较好的实时性,数 据往往是连续读取的。例如: LED护栏管显示屏是由 首尾相连的护栏管排列组成, 多用于楼宇外立面的亮 化工程。相对户外 LED显示屏, LED护栏管显示屏控 制点数较少 ( 2万点以下 ) , 显示分辨率较低, 用 SD卡 或 CF卡将节目录制后通过控制器送出,而不采用 DV I 同步显示,成本低廉。对于成本敏感楼宇亮化与广告 显示屏应用有较广泛应用。低成本 LED护栏控制器 使用 SD卡的控制系统的工作过程如下 (如图 1所 示 ): ( 1) 由设计软件根据系统驱动点数或路数等参 数, 把所有要显示的动画效果数据经相关算法转换后 写入一个二进制文件,即由上位 PC机合成控制数据。 ( 2) 将此文件拷贝至 SD卡。一般一张卡上只有 一个此文件。在拷贝前选择适合的分区形式对 SD卡 进行格式化, 即选择合适、大容量的外存储器 (如 SD 卡、CF卡或其他 FLASH存储器 )存放控制数据。 ( 3) 系统上电后,由主控制器负责从 SD卡中将 数据读出。然后根据驱动类型将此数据通过串口或 SPI方式送至 N个下位机, 即单片机系统工作时由一 台主机快速、连续读取指定数据,并发送给下位机。 ( 4) 下位机接收串口数据,将此数据送入自己的 RAM区,或根据地址选择其中的有效数据写入自己的 RAM区,即从机通过串行或并行方式接收主机数据, 并根据得到本机数据。 ( 5) 接收到上位机的同步命令后同时更新驱动数 据, 即最终驱动 I/O控制单元。 图 1 LED护栏控制器使用 SD卡工作过程 此类系统控制数据通常为主从系统, 系统控制数 据存放于一个数据文件中,主机工作时顺序读出数据。 一旦通过操作文件分区表找到相应文件名所在的起始 地址就不需要经常使用分区表。由于 SD卡中数据为 连续存储,只需依据此文件的首地址即可对文件进行访 问。由于驱动点数或路数一般固定,每帧长度固定。如 果该文件下控制的数据包括多个模式或帧数不同,计算 相应的文件地址偏移量即可找到需要的起始位置数据。 2 接口设计 SD卡有 SD和 SPI两种工作模式 [ 5] , 相对于 SD 模式, SPI模式可以简化主机设计, 降低成本。 STC11L05 [ 6]单片机与 SD卡在 SPI工作方式下的硬件 接线图如图 2所示。由于 SD卡控制器的核心电压在 3. 3 V左右, 在单片机选型时选择工作电压支持 3. 3 V 的型号, 如 STC11L系列, AVR系列的宽电压范围类 型 [ 7] , FO20系列 [ 8-9]。在编程时选择可以进行位操作 的引脚与 SD卡脚位连接。SD_CS为 SD卡使能控制, SD _WR为 SD卡数据或命令写入位, SD _RD为 SD卡 数据读出位, SD_SCL为 SPI串行时钟输入位。 STC单 片机有内部上拉,固电路中数据引脚上拉均可以省略。 由于此应用中为只读方式, SD卡的写保护WP引脚未 使用。在电源两端增加 0. 1 LF滤波电容作为附助电路 在图中省略。此连接方法几乎可以使用单片机上任意 4位做位操作的引脚直接与 SD卡相连,简单实用。 图 2 STC11L05单片机与 SD硬件接线图 3 文件格式设计 为了让文件访问独立于分区表, 其核心就是要在 拷贝至 SD卡中数据有一个惟一的识别数据, 并设计 文件头数据格式, 使其便于后续的按帧、按控制模式 读取。 文件头尺寸应为 512 By tes的整数倍,即使用整数 个扇区,便于访问后续实际控制数据。文件头中第 1 个字节可用于确定文件序号, 这样就可以使 SD卡中 存入多个控制文件也不需要访问分区表。第 2~ 11字 节为文件识别数据,可存入 / XX公司 0或 / XX科技0等 识别数据,与后续控制数据相区别。单片机在定位文 件起始地址时, 连续读入扇区数据, 对此数据进行比 较,相同则找到文件头地址, 将文件起始地址存入全局 变量。此操作只在初始化时执行一次, 后续再不用执 行类似操作,节约文件定位时间。后续数据包括驱动 总点数,控制模式数及驱动路数,可用来确定每帧数据 所占扇区数。若上位机组织数据时能将驱动数据按 #480# 机 电 工 程 第 28卷 512 By tes填充满, 使得每帧数据占据整数个扇区, 则 后续寻址操作更简洁。文件头数据格式说明表如表 1 所示,以某 LED亮化工程控制系统中 SD卡的文件头 数据格式为例进行说明, 具体使用中用户可以进行相 应的修改,以制定自己的标准。 表 1 文件头数据格式说明表 序号 文件偏址 数据类型 说明 1 0000H byte / XX0文件头, 自定义 2 0001H) 000BH byte 文件识别数据, 11Bytes,自定义 3 000CH ) 000FH long 驱动总点数, 长整型 4 0010H byte 控制模式数 ( 0- 255) 5 0011H byte 驱动路数 ( 0- 255) 6 0012H) 0015H long 模式 1的帧数,长整型 7 0016H) 0019H long 模式 2的帧数,长整型 , , , , 8 01FDH byte 帧延时值设定, 0- 255 m s 9 01FEH ) 01FFH byte / EE EE0,文件尾, 自定义 4 软件设计 SD卡工作在 SPI方式下, 单片机系统可用硬件 SPI功能脚与 SD卡相连, 并按 SPI模式进行读 /写操 作。对于无 SPI接口的单片机可用 I /O脚模拟 SPI协 议对 SD卡进行读 /写操作。笔者给出的接口与程序 利用能直接进行位操作的单片机引脚进行, 可以适用 于工作电压为 3. 3 V的 51核、AVR核、PIC等各种单 片机系统。下面具体说明单片机软件如何实现对 SD 卡的读 /写与定位文件初始物理地址等操作。 4. 1 SP I方式下的读 /写操作 写操作通过 PIN _CLK与 PIN _WR两个引脚将数 据或命令写入 SD卡,其中 PIN _WR为数据输入端口, 且数据传送为高位先写入, P IN _CLK上升沿锁存数 据。具体代码如下: vo id SP I_WBYTE ( uchar va l) / /往 SD卡写入 1 Byte { uchar i= 0; for( i= 8; ;i i- - ) { P IN_CLK= 0; P IN_WR= ( va&l 0x80); va l< < = 1; P IN_CLK= 1; } P IN_WR= 1; } 读操作通过 PIN _CLK与 PIN _RD两个引脚将 SD 卡数据或状态读出,其中 PIN _RD为数据输出端口,且 数据传送为高位先送出, P IN _CLK上升沿锁存数据。 具体代码如下: uchar SP I_RBYTE( void) / /从 SD卡读出 1 Byte { uchar n= 0; uchar i= 0; PIN _RD= 1; for( i= 8; ;i i- - ) { PIN _CLK= 0; PIN _CLK= 1; n< < = 1; if( P IN _RD ) n |= 1; } return n; } 4. 2 SD卡命令格式 SPI模式是一种简单的命令响应协议, 主控制器 发出命令后, SD卡针对不同的命令返回对应的响应。 SD卡的命令列表都是以 CMD和 ACMD开头, 分别指 通用命令和专用命令, 后面接命令的编号 [ 10]。例如, CMD17就是一个通用命令, 用来读单块数据。在 SPI 模式中,命令都是以如下的 6 By tes形式发送的。具体 代码如下: vo id SdCommand( uchar command, ulong argum en,t uchar CRC) / /写入命令 { SPI_WBYTE( command| 0x40); SPI_WBYTE( ( ( unsigned char* )& argum ent) [ 0] ); SPI_WBYTE( ( ( unsigned char* )& argum ent) [ 1] ); SPI_WBYTE( ( ( unsigned char* )& argum ent) [ 2] ); SPI_WBYTE( ( ( unsigned char* )& argum ent) [ 3] ); SPI_WBYTE( CRC); } 常用的 3条命令如下: SdCommand( 0x00, 0, 0x95 ); 设置 SD卡工作于 SPI方式 SdCommand( 0x01, 0x00FFC000, 0xFF) ;打开 SD卡 SdCommand( 0x11, cntA ddress, 0xFF) ; 连续读取 SD卡数据, cntAddress为 32位任意地址,一般低 9位 为零,即扇区物理地址。其它命令与控制方式见数据 手册。 4. 3 确定文件物理地址 而在实际控制中, 系统初始化后应对 SD卡物理 地址中数据进行遍历,确定数据起始地址,找到后存放 于一公用变量中,为从任意模式、任意帧定位驱动数据 给出参考物理地址。具体程序流程如图 3所示。 利用遍历定位文件初始物理地址后, 可反复读取 文件头数据,从而定位出每一模式、每一帧数据存放在 SD卡上的物理地址。为了方便寻址, 存放在 SD卡的 数据组织上最好将数据对齐至扇区, 这样可以大大减 少空读数据的时间。 (下转第 499页 ) #481#第 4期 张 弛,等: 单片机访问 SD卡精简方法的设计与实现 使用,也可以组网使用。由于精确测量湿度是一个难 题, 该仪器也只是在现有基础上通过大量实验,得到了 一个比较可行的测湿方法, 但还有改进的余地。相信 随着湿度传感器技术的发展, 对湿度测量的精度也会 逐步提高,这种电子产品的使用也会越来越多。近年 来无线传感器网络技术发展很快,该仪器也可以加以 改进,配合无线收发模块,实现无线通信功能。 参考文献 (References): [ 1] 窦振中.基于单片机的嵌入式系统工程设计 [M ]. 北京: 中国电力出版社, 2008. [ 2] Texas Instruments Inc. . MSP430x13x, M SP430x14x, MSP430x14x1 M ixed Signa l M icrocontrolle r Data M anual ( Rev. F ) [ EB /OL ]. [ 2004-06-03]. http: / / focus. t.i com / lit /ds / sls272f /slas272 .f pd.f [ 3] 何立明.单片机应用技术选编 [ M ]. 北京: 北京航空航天 大学出版社, 1997. [ 4] 谢瑞和. 串行技术大全 [ M ] . 北京: 清华大学出版社, 2003. [ 5] Texas Instrum ents Inc. . Choosing an U ltra Low Pow erMCU ( Rev. F ) [ EB /OL ]. [ 2003-06-16]. http: / / focus. t.i com. cn/ cn / lit/ an / slaa207 /slaa207. pd.f [ 6] 曹 磊. M SP430单片机 C程序设计与实践 [ M ].北京 :北 京航空航天大学出版社, 2003. [ 7] Texas Instrum ents Inc. . M SP430x1xx Fam ily U ser. s Gu ide ( Rev. F ) [ EB /OL ]. [ 2006-02-28]. http: / / focus. t.i com / lit /ug / slau049 f/s lau049.f pd.f [ 8] 胡大可. M SP430系列 FLASH 型超低功耗 16位单片机 [M ] .北京: 北京航空航天大学出版社, 2001. [ 9] 秦 龙. MSP430单片机 C语言应用程序设计实例精讲 [M ] .北京: 电子工业出版社, 2006. [ 10] Texas Instrum ents Inc. . M SP430x13x, M SP430F14x, M SP430F15x, MSP430F16x Code Examp les ( Rev. F ) [ EB /OL ]. [ 2005-06-11 ]. http: / / fo cus. t.i com / sw / slac015n /s lac015n. z ip. [编辑:张 翔 ] (上接第 481页 ) 图 3 SD卡数据文件定位流程图 5 结束语 笔者通过设计带有特殊识别数据的文件及文件相 关格式,实现访问文件不依赖分区表的功能,但又能兼 容上位机在各种文件分区格式下写入的数据。此方法 为一种精简控制方案,可以使用一些低成本单片机,方 便地读取 SD卡数据,并实现对操作对象的快速控制。 该方案特别适合一些成本敏感或以单片机为核心的 主、从控制系统,要求主机读取大量数据并连续向从机 或驱动部分发送的小型控制系统。 通过该方法能够实现 LED护栏管显示屏的控制 要求,生成的文件通过 PC机存入 SD卡后,读取操作 时只需在初始化时通过遍历所有扇区方式找到有效数 据的起始地址,后续数据读取操作只与此起始地址有 关。该方法节约了读取文件所需的程序资源, 简化了 控制过程。硬件结构上接线简单,调试方便,便于移植。 经实际调试应用, 系统工作稳定可靠, 大大缩小了代码 的规模与复杂度。并对有类似控制要求的系统有一定 的通用性,可供开发有相同控制要求的系统参考。 参考文献 (References): [ 1] SD G roup ( M EI, SanD isk, Toshiba ) . SD M em ory C ard Specifications Part 1: Physical Layer Specification Version1. 01[ Z]. SD G roup(ME I, SanD isk, Tosh iba), 2002. [ 2] 周立功. SD卡读写模块设计 [ M ]. 北京:北京航空航天大 学出版社, 2004. [ 3] 孙 方, 颜国正, 王文兴. Mu ltim ed ia Ca rd及其与单片机 接口 [ J]. 单片机与嵌入式系统应用, 2004( 6): 44-46. [ 4] 张 凯,姜熙君,陈 磊,等 . MM C卡的文件系统及其实 现方法 [ J]. 单片机与嵌入式系统应用, 2006( 5): 30-32. [ 5] SanD isk Co rpo ra tion. SanD isk secure d ig ita l ca rd product manua l[ K ]. SanD isk Corporation, 2004. [ 6] STC Co rporation. STC11-10Fxx product m anua l[ K ] . STC Co rpo ra tion, 2008. [ 7] AVR Corpo ration. AVR-MEGA48 /88 product m anua l[ K ]. AVR Corporation, 2004. [ 8] Silabs Co rpo ra tion. F020-10Fxx produc tm anual[ K ]. Silabs Co rpo ra tion, 2005. [ 9] 李长有,武学东,孙步胜, 等.基于 C8051F020的 SD卡主 控制器设计 [ J]. 微计算机信息, 2007, 23( 9-2): 120-122. [ 10] 张洪涛, 莫文承, 李兵兵.基于 SP I协议的 SD卡读写机 制与实现方法 [ J]. 电子元器件应用, 2008, 10( 3): 42- 43, 47. [编辑:李 辉 ] #499#第 4期 付华圆,等: 基于 M SP430F149的温湿度测控仪设计
/
本文档为【单片机访问SD卡精简方法的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索