微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 基于SD卡的BMS海量历史数据存储系统

基于SD卡的BMS海量历史数据存储系统

时间:03-21 来源:21ic 点击:

动力电池作为混合动力电动汽车的关键零部件之一,由于其一致性差等原因易导致整组电池性能下降,从而直接影响到整车的可靠性与安全性。为了满足实际的整车控制需求而调整和优化控制器中的控制参数,需要收集大量的工作数据,以便离线分析电池性能以及进行系统标定。传统的收集数据方法通常是利用串口或CAN总线将即时数据读入计算机,但是该方法还局限于实验阶段,一般需要PC机参与,在实际工作中的数据较难获得。国外有公司生产的基于CAN总线的行车记录仪,体积较大且价格昂贵,仅适用于整车厂研发新车时使用。利用SD卡(Se-cure Digital Memory Card)轻巧、传输速度高、容量大、成本低、读写方便的优点,以及在原有电池管理系统上配置方便的特点,本文设计了一种小巧的应用于电池管理系统的海量历史数据存储系统,采用标准Windows系统FAT32文件格式存储,可以方便将数据导入到计算机中。一次换卡可以记录1年的数据,为电池管理系统和电池特性的研究准备了大量第一手数据。

1 SD卡硬件电路设计

SD是新一代半导体存储设备卡,其外形及引脚定义如图1、表1所示。SD卡工作电压为2.0~3.6 V,最大读写速度达10MB/s(4位数据线并用),并且提供了SD和SPI两种通信模式。在使用时,主机只能通过其中一种方式与SD卡进行通信,该模式通过上电后检测Reset命令来决定。本系统采用SPI方式操作SD卡,因为该方式具有接口电路简单(DSP芯片TMS320LF2407A提供SPI接口),并且通信协议也十分简洁的优点。因为DSP芯片TMS320LF2407A的SPI模块高电平刚好是3.3 V,所以SD卡座可直接与TMS320LF2407A的SPI引脚连接,其连线方式如图2所示。

2 软件程序设计

软件设计主要难点是SD卡驱动与FAT32文件系统的结合方式设计。FAT32文件系统的实现有一定的复杂性,如果设计地不好不但会浪费大量CPU资源,而且可能造成数据丢失、覆盖等严重后果。采用传统数据流式程序设计思想实现起来比较困难,Debug也很不方便。本设计引用现代Windows操作系统惯用的层次模型划分的方法开发了一套基于SD卡的FAT32文件系统协议包,具有层次分明、结构紧凑、可移植性强及逻辑清晰的特点。

2.1 FAT32文件系统

FAT32是由Microsoft设计并运用得非常成功的文件系统。至今FAT32依然占据着Microsoft Windows文件系统中重要的地位。FAT32改进了FAT16和FAT12不支持大分区、单位簇的容量过大以致空间急剧浪费等缺点。由引导扇区、FAT表、根目录和数据区4大部分组成。图3标出了FAT32分区的基本构成,FAT2是FAT1的备份,用于在FAT1损坏时修复。

FAT表(File Allocation Table文件分配表)记录文件在介质上的放置位置,即簇号序列。每个表项记录的簇号都是32位的,故这个方法称为FAT32。表2所示是一段简化的FAT表,第2簇记录根目录存放位置,第3簇记录某文件存储的下一簇号(该文件从本簇即第3簇开始存放)是6号,第6号又记录接下来的簇号……,至到标记FF表示文件结束。同样道理从第12簇开始存放另一个文件,该文件在第93簇存放结束。从表中可以看出文件是可以非连续存放的,这样可以充分利用SD存储介质的空间,并且可以保证存放BMS采集数据不会发生重叠,冲掉以前数据。表3列出了FAT表各记录项的取值含义。


系统在存储一个文件时先计算出需要几个簇的空间来存放,再从FAT表中找出这相应个数的空闲簇,并其修改记录项的取值使之首尾连成一串。然后在目录表中创建一个新的文件项,并记录它在介质上存放的首簇号。这样在读文件时,只要直接从目录表中找到该文件的记录项,获取它的首簇号就能把文件读出来了。FAT32文件系统目录的记录项的结构定义如表4所示。

2.2 SD卡SPI通信协议

发送给SD卡的命令采用6字节的格式如表5所示。命令的第1个字节可通过将6位命令码与16进制码0x40进行或运算得到。如果命令需要,则在接下来的4个字节中提供一个32位的参数,最后1个字节包含了从第1个字节到第5个字节的CRC-7校验和。表6列出了部分SD存储卡SPI命令的解释。

2.3 下位机软件设计

下位机SD存储卡驱动程序采用层次化的方法设计,从下到上的关系如图4所示。下一层提供面向上一层的接口支持。其中SPI硬件层是与BMS中所采用的芯片TMS320LF2407A相关的,SD卡命令集则实现DSP与SD存储卡通信需要的SPI命令集的子集,SD卡API层包装好SD卡命令集,使其便于FAT32文件系统层使用。FAT32文件系统层即实现了按照FAT32文件系统要求的文件存储方案。最上层是BMS应用层,负责将BMS系统采集的电池包状态信息打包并以FAT32形式存储到SD卡上。因为本系统只需要文件保存功能,故FAT32文件系统层和SD卡硬层都做了精简处理,这样明显减少了驱动设计时的复杂程度。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top