SD卡在断路器离线测试仪中的应用
2008-05-29
作者:吕 超1, 胡晓光2, 孙来军1
摘 要: 将SD卡作为外部掉电存储介质" title="存储介质">存储介质应用于断路器离线" title="离线">离线测试仪中,介绍了以ATMEGA128单片机作为核心元件,用SPI方式读写SD卡的方法和相应的文件系统设计。该方案使断路器离线测试仪在使用过程中更加灵活,而且操作简单、节省了硬件资源,具有较高的实用价值。
关键词: SD卡 断路器测试仪
在断路器离线测试仪的设计和使用过程中,需要积累大量的正常状态和故障状态下的历史动作数据,形成样本库,作为断路器进行故障诊断的依据。从数据库的建立和维护的角度来说,上位机" title="上位机">上位机比仪器本身更占有优势。同时,由于仪器自身硬件系统资源的局限,相对复杂的故障诊断分析也需要利用上位机软件来实现。因此,这就需要容量大、移动灵活的测试仪和上位机的中间存储介质。
SD卡(Secure Digital Memory Card)是一种基于Flash的新一代存储器,具有体积小、容量大、数据传输快、移动灵活、安全性能好等优点,是许多便携式电子仪器理想的外部存储介质。
1 ATMEGA128的SPI接口简介及基本数据传输
SPI全称为“Series Peripheral Interface”,意为“串行外设接口”,是一种全双工、3线同步数据传输的串行总线接口。图1为ATMEGA128单片机主机-从机通过SPI进行互连的示意图。
系统包括两个移位寄存器和一个主机时钟发生器。主机通过将需要的从机的 SS 引脚拉低,启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器中。主机在SCK 引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS引脚拉高实现与从机的同步。
基本的通过SPI接口发送和接收单个字节的流程如图2所示。
值得注意的是,因为发送和接收是同时进行的,所以发送和接收数据使用同一个函数。在发送数据时,并不关心函数的返回值;在接收数据时,可以发送并无实际意义的字节(如0xFF)作为函数的参数。
2 SPI模式下的ATMEGA128单片机与SD卡的接口电路
SD卡为用户提供两种操作模式:SD模式和SPI模式。SPI模式下SD卡的引脚定义如表1所示。在该模式下,SD卡为主机提供了CS、SCLK、DI、DO四线接口。ATMEGA128单片机与SD卡的接口电路" title="接口电路">接口电路如图3所示。
因为不涉及主从机之间的转换,所以单片机的SS引脚闲置不用。单片机的PORTXn引脚作为SD卡的选通信号。
对于单片机来说,SPI接口和程序下载接口复用,节约了单片机的硬件开销,提高了单片机的资源利用率。
3 SPI模式下对SD卡的操作
SPI模式下SD卡的操作流程如图4所示。
上电后,SD卡自动进入SD模式。单片机此时使CS信号为低电平,并向SD卡发送RESET命令(CMD0),如果SD卡有0x01作为响应,则表明SD卡进入SPI模式下的Idle状态。在等待至少74个时钟周期后,向SD卡发送SEND_OP_COND(CMD1)命令,当轮询到SD卡的响应为0x00时,说明SD卡已经准备好接收读写操作" title="读写操作">读写操作了。
对SD卡的基本读写操作命令有:数据块读命令READ_ BLOCK(CMD17)、多数据块读命令READ_MULTIPLE_BLOCK(CMD18)和数据块写命令WRITE_BLOCK(CMD24)、多数据块写命令WRITE_MULTIPLE_BLOCK(CMD25)。
对SD卡的操作都是由一些命令来实现的。所有的命令都是由48个数据位组成的,其结构如表2所示。
在应用时,可以连续发送6个字节来实现上述的命令格式。
4 应用于断路器离线测试仪的SD卡文件系统设计
在使用断路器离线测试仪的过程中,希望记录下断路器每次动作时的线圈电流以及动作电压。按照图5所示的结构来组织数据的存储。
首先为各次动作数据文件创建父文件夹,以动作的次数作为文件夹名,CURRENT.TXT和VOLTAGE.TXT分别为各文件夹下记录电流、电压数据的扩展名为TXT的子文件。
SD卡数据区的组织结构如表3所示。
在实际应用中,只对系统区进行配置即可。其中的分区引导扇区设置了扇区(Sector)和串(Cluster)的大小,以及采用哪类文件分配表(FAT12或FAT16)等内容。
文件分配表则包含了与目录或文件相对应的入口(Entry)。每个入口由32个字节组成,包含文件名、扩展名、记录的时间和日期、起始位置和文件大小等信息。文件的大小可以根据对电流电压信号进行采样时的采样频率和采样时间计算得到。
按照以上原则设计的文件系统,结构简单、容易维护,能够满足上位机数据积累和软件分析的需要。
参考文献
1 SD memory card specifications. Sanddisk Corporation,2000
2 吴双力,崔 剑,王伯岭. AVR-GCC与AVR单片机C语言开发. 北京:北京航空航天大学出版社,2001