SD卡(Seecure Digital Memory Cardl)是一种基于Flash的新一代存储器,具有体积小、容量大、数据传输快、移动灵活、安全性能好等优点,是许多便携式电子仪器理想的外部存储介质。
1 ATMEGAl28的SPI接口简介及基本数据传输
SPI全称为“Series Peripheral Interface”,意为“串行外设接口”,是一种全双工、3线同步数据传输的串行总线接口。图1为ATMEGA128单片机主机一从机通过SPI进行互连的示意图。
系统包括两个移位寄存器和一个主机时钟发生器。主机通过将需要的从机的SS引脚拉低,启动通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器中。主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS引脚拉高实现与从机的同步。基本的通过SPI接口发送和接收单个字节的流程如图2所示。
值得注意的是,因为发送和接收是同时进行的,所以发送和接收数据使用同一个函数。在发送数据时,并不关心函数的返回值;在接收数据时,可以发送并无实际意义的字节(如0xFF)作为函数的参数。
2 SPI模式下的ATMEGAl2B单片机与SD卡的接口电路
SD卡为用户提供两种操作模式:SD模式和SPI模式。SPI模式下SD卡的引脚定义如表1所示。在该模式下,SD卡为主机提供了CS、SCLK、DI、DO四线接口。ATMEGAl28单片机与SD卡的接口电路如图3所示。
因为不涉及主从机之间的转换,所以单片机的SS引脚闲置不用。单片机的PORTXn引脚作为SD卡的选通信号。
对于单片机来说,SPI接口和程序接口复用,节约了单片机的硬件开销,提高了单片机的资源利用率。
3 SPI模式下对SD卡的操作
SPI模式下SD卡的操作流程如图4所示。
上电后,SD卡自动进入SD模式。单片机此时使CS信号为低电平,并向SD卡发送RESET命令(CMDO),如果SD卡有0x01作为响应,则表明SD卡进入SPI模式下的ldle状态。在等待至少74个时钟周期后,向SD卡发送SEND_OP_COND(CMD1)命令,当轮询到SD卡的响应为0x00时,说明SD卡已经准备好接收读写操作了。
对SD卡的基本读写操作命令有:数据块读命令READ_BLOCK(CMDl7)、多数据块读命令READ_MULTIPLE_BLOCK(CMDl8)和数据块写命令WRITE_BLOCK(CMD24)、多数据块写命令WRITE_MULTIPLE_BLOCK(CMD25)。
对SD卡的操作都是由一些命令来实现的。所有的命令都是由48个数据位组成的,其结构如表2所示。
在应用时,可以连续发送6个字节来实现上述的命令格式。
4 应用于断路器离线测试仪的SD卡文件系统设计
在使用断路器离线测试仪的过程中,希望记录下断路器每次动作时的线圈电流以及动作电压。按照图5所示的结构来组织数据的存储。
首先为各次动作数据文件创建父文件夹。以动作的次数作为文件夹名,CuRRENT.TXT和V0LTAGE.TXT分别为各文件夹下记录电流、电压数据的扩展名为TXT的子文件。
SD卡数据区的组织结构如表3所示。
在实际应用中,只对系统区进行配置即可。其中的分区引导扇区设置了扇区(Sector)和串(Cluster)的大小,以及采用哪类文件分配表(FATl2或FATl6)等内容。
文件分配表则包含了与目录或文件相对应的入口(Entry)。每个入口由32个字节组成,包含文件名、扩展名、记录的时间和日期、起始位置和文件大小等信息。文件的大小可以根据对电流电压信号进行采样时的采样频率和采样时间计算得到。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。