您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页Freescale单片机的SD卡数据读写设计

Freescale单片机的SD卡数据读写设计

来源:爱go旅游网


Freescale单片机的SD卡数据读写设计

【摘要】本文讨论了使用Freescale单片机对SD卡进行文件读写的实现方式。针对SD的电平特点,给出了SD卡与单片机的接口电路。针对SD的SPI通讯模式,阐述了SD的初始化和读写程序需要注意的问题,最后通过读写实例验证了设计。

【关键词】SD;Freescale;SPI

1.引言

通过车载传感器对发动机参数采集和存储,Electronic Control Unit(ECU)可以判断发动机的工作状态和工作趋势。许多车载传感器[1](例如燃油质量传感器)需要对发动机参数进行长期监控,单片机作为控制器件,其数据存储资源十分有限。Secure Digital(SD)卡具有大容量、小体积、低功耗、非易失性以及兼容MMC卡等特点,是理想选择。

部分文章已介绍了单片机(如PIC、C51等)读写SD卡的应用实例[2,3],但这些单片机在汽车领域使用较少。本文以Freescale公司的MC9S12XEP100[4]单片机为控制器,通过PC将图片文件存入SD卡,并将数据送入彩色液晶上实现循环播放实验,探讨了Freescale单片机对SD卡文件读写的设计方法,该方法可广泛应用于车载传感器的数据存储单元。

2.硬件系统

2.1 SD卡的硬件特性

SD卡[5]主要由存储芯片和控制芯片组成,SD卡控制芯片负责对数据的读写控制。其工作电压为2.7-3.6V。每次对SD卡进行数据读写时的最小单位是1个扇区,即512Byte。SD卡支持两种操作模式,SD模式和SPI模式,因单片机的IO口资源限制,大多数应用都选择SPI模式。

SD总线模式包含4根数据线和1根命令线,传输速度可达到100Mbit/s。SPI模式是4线制总线,SPI模式下的接口定义参见表1。

表1 SPI模式接口定义

引脚 名称 功能 引脚 名称 功能

1 CS 片选 6 Vss 地

2 DI 数据输入 7 DO 数据输出

3 Vss 地 8 RSV 保留

4 Vcc 3.3V电源 9 RSV 保留

5 CLK 时钟

2.2 Freescale单片机特点

Freescale推出的16位MC9S12XE系列单片机具有增强的系统集成性和更好的功能性[6]。其内部PLL超频能力能显著降低对外部频率源的主频的需求,从而提高单片机的抗干扰能力。XGATE核能协处理I/O中断需求,从而降低主核的任务量。另外,其具有EEPROM、FLASH以及丰富的I/O资源(例如SPI、ECT、CAN2.0等),可满足汽车领域严苛的应用环境需求。

2.3 硬件系统

实验系统组成如图1,单片机通过SPI总线与SD通信,并通过并口与彩色液晶模块进行通信。SD需由LDO电源转换芯片供电。

图1 实验系统原理框图

3.程序设计

SD卡的实验系统工作过程如下:a.由上位机软件对待处理数据进行格式转换,生成二进制文件。b.将文件拷入SD卡,拷贝前需要对SD卡进行以FAT格式化,以确定存储位置的首地址。C.实验系统上电后,进入SD卡读写程序读取相应文件,并进行显示。

单片机完成初始化后,在RAM中缓冲512 bytes,并送LCD显示;当i=300时,表明1幅图像显示完成。程序共设置了5幅图像循环显示,软件流程图如图2所示。

图2 软件流程图

3.1 SD卡初始化

系统上电后SD卡默认进入SD模式,需设置SPI模式以及单块读写的数据长度。当CS处于低电平时,发送CMD0,发送完毕后,接受R1回应,判断SD卡是否正确接受指令。CMD0使得SD进入IDLE状态,CMD1激活SD卡的初始化过程,等待R1判断SD卡是否处于激活状态。CMD16指令设置读写块的大小为512Byte。需等待至少74个时钟周期。初始化流程参如图3所示。

图3 SPI初始化流程

3.2 读写程序

读程序过程如图4所示,单片机通过CMD17指令读取SD卡扇区数据,若成功SD卡返回R1响应,单片机对512byte数据进行缓存。写程序过程见图5,CMD24指令作为SD卡的写入指令,若SD卡成功响应则返回R1,单片机从缓存区写入512bytes数据。

图4 读程序

图5 写程序

图6 SD卡文件显示效果

3.3 图片格式

本文所使用彩色液晶分辨率[7]为QVGA,16位真彩色格式。实现实验图片正常显示,需要解决2个问题:图像的格式和图像数据量。一方面,Freescale单片机应用通常不具备操作系统,因此需要将.jpg、.gif、.bmp文件转换成二进制文件.bin格式。另一方面,根据彩色液晶模块的分辨率特点,可根据公式(1),得出显示图片的数据是:

320×240×2-153600bytes (1)

显然,当需要显示多幅图片时对单片机的存储开销十分巨大,需要借助SD卡的存储能力。由SD卡的读写单位是512bytes,可得出1幅图像占用的扇区数为:

(2)

4.实验

本文选取MC9S12XEP100单片机搭建的实验系统对SD卡读写接口程序进行了验证。由图6可见,所设计的程序能正常读写SD卡文件。

5.结束语

SD卡的存储方式可以有效的缓解单片机存储资源有限的问题,满足日渐复杂的各种车载设备及传感器的数据存储要求。本文研究了Freescale单片机对SD卡读写的设计方法,并通过存储图片数据实验进行了验证,该方法可广泛应用于车载传感器的长期数据存储需求。

参考文献

[1]吕艳,孙克.汽车电子传感器简述[J].仪表技术与传感器,2009(Z1).

[2]张凯临,姚玉玲,刘金涛.SD卡在PIC系列微控制器系统中的应用[J].微计算机信息,2008(24).

[3]张恒.基于AT89S52和FAT16的SD卡读写系统设计[J].单片机与嵌入式系统应用,2009(08).

[4]MC9S12XEP100 Reference Manual Covers MC9S12XE Family[M].Version 1.25,Freescale,February,2013.

[5]SanDisk Secure Digital Card Product Manual[M].Version 2.2,San-Disk Corporation,September,2004.

[6]孙同景.Freescale 9S12十六位单片机原理及嵌入式开发技术[M].北京:机械工业出版社,2008.

[7]应根裕,胡文波,邱勇.平板显示技术[M].北京:人民邮电出版社,2002.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务