SD卡应用于汽车CAN总线-汽车CAN总线
成都盘沣科技有限公司   2015-07-07 09:36:20 作者:cenxueqi 来源: 文字大小:[][][]

 SD卡应用于汽车CAN总线

 汽车CAN总线的广泛应用创造了基于CAN总线的其他设计,下面成都盘沣科技工程师将为大家介绍用SD卡来实现记录汽车CAN总线数据的设计,介绍基于LPC2368的SD卡FAT文件系统的实现方法,并给出了该设计的硬件接口与软件实现,阐述了SD卡应用于大容量数据记录的优点。

 SD卡应用于汽车CAN总线

 设计以SD卡作存储载体,实现实时记录CAN总线上数据的记录仪,具有容量大、体积小、重量轻、接口电路简单等特点。并且记录的数据文件可以为PC机所识别,通过PC机上的分析软件对其进行分析和回放,作为历史数据用于数据对比。



1 硬件接口设计

  硬件平台的控制核心采用NXP公司的ARM7芯片LPC2368, 该芯片是基于ARM7TDMI-S内核的32位微控制器,可在高达72 MHz的频率下操作,功能强大且成本低,具有高达512 KB的片内Flash、32 KB的SRAM,内部具有丰富的系统外围设备控制器,包括SD控制器和CAN控制器。

  SD卡支持2种工作模式:SD模式和SPI模式。SD模式允许4线高速数据传输,SPI模式允许简单通用的SPI通道接口, 但读写速度大大降低。由于CAN总线数据传输速率较高,因此本设计采用SD模式的4线高速数据传输功能。

  LPC2368与SD卡接口电路如图2所示,使用SD通信协议将SD和LPC2368相连实现数据传输。CMD传输SD控制器的命令及相关参数和SD卡对命令的响应信号,DAT0、DAT1、DAT2、DAT3传输读写数据,CLK为时钟信号,并由主控芯片来控制SD卡的电源。

2 系统设计

  SD卡应用于CAN总线数据记录仪的系统结构图如图1所示,CAN总线数据仪工作时应挂接到汽车CAN总线上,成为一个CAN节点,以便采集CAN数据信息。主控芯片的主要作用是进行数据采集并将采集到的CAN数据以文件格式存储在SD卡上。此外,SD卡在数据组织结构上与PC机格式兼容,这里选用FAT32文件系统,使记录数据可以直接供Windows操作系统下的应用程序使用。

3 软件设计

3.1 SD卡底层读写

  SD卡的读写操作都是基于命令的,主控芯片通过向SD卡发送相应的命令并读取相应的响应来实现对SD卡的控制,在对SD卡读写之前,首先要对SD控制器进行初始化,完成各项参数的配置,包括控制器与CPU数据传输的DMA方式、传输速率和读写数据块长度等,之后需要对SD卡进行初始化,这是确保SD卡正常数据读写的前提。SD卡的初始化流程如图3所示。

SD卡初始化完成之后如果要使用默认的块读写长度(512 B),就可以进行SD卡的读写。当然,也可用CMD16命令来设置SD卡的块读写长度,可以是1B~512 B之间的任意值。但是对SD卡的写过程则要求块长度必须为512 B。无论是SD卡的读还是写,都要求在读写命令发送后有数据起始令牌FEH,数据传输结束有2 B的循环冗余编码CRC。本设计采用默认的块读写长度。

3.2 FAT32文件系统

  存储在SD卡中的数据为二进制数据,为了使其能为计算机所识别,SD卡文件系统必须与计算机的文件系统一致。目前Windows系列操作系统中最常用的文件系统有FAT16、FAT32及NTFS等。由于汽车CAN网络的数据量大,并且记录仪需要记录长时间的数据,所以本设计选择FAT32作为SD卡的文件系统,FAT32最大支持单个文件4 GB容量,满足CAN数据记录仪的要求。

  FAT32文件系统由系统引导记录区、FAT表区、文件登记表区和数据区四部分组成。系统引导记录区存储SD卡有关磁盘的结构信息,包括扇区字节数、FAT表的数目和总扇区数等;FAT表是FAT32文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构,它准确记录着已经被占用的簇,并为每个已经占用的簇指明存储后续内容的下一个簇的簇号。文件登记表FDT记录文件的登记项,每个登记项占32 B,记录了文件的起始簇号、大小以及创建和最后修改的时间等;数据区用于存储文件数据。

  SD卡的文件系统主要功能包括创建文件、打开文件、写文件、读文件和关闭文件。在应用中,可以根据实际情况,增删以上功能,以简化系统。

  考虑数据采集对系统实时性的要求, 对FAT表区的链式结构进行简化,磁盘的空闲空间是连续的,采用连续存储方式,这样略去了每次去FAT表搜索空闲簇的过程,满足系统对实时性的要求。简化后的链式结构是直线链, 即写满一个扇区自动写下一个扇区, 写满一个簇自动写下一个簇。

3.2.1 文件的创建

  在SD卡上创建文件就是在文件目录表FDT中申请登记项和向FAT表中的FAT项填写空闲簇号的过程,流程图如图4所示。程序首先在系统引导记录区获取SD卡磁盘的结构信息;接着要检测文件登记表FDT中是否已经存在该文件,如果存在同名的文件,则返回,创建文件失败;然后申请空闲的FDT表项,申请FDT 表项成功后,程序会检测磁盘剩余的空间是否满足新创文件数据长度的需要,然后寻找第一个空闲的簇号,并修改对应的FDT表项。由于文件都是连续的,在FAT表中的FAT链表是直线链即前一簇指向后一簇,根据文件的大小,向FAT表区填写FAT链表,直到最后一个FAT项写入0x0FFFFFFFH,表示文件结束。
3.2.2 文件的读/写

  SD卡上文件都是以簇为单位存取的,向SD卡上的文件写数据时,首先要根据文件名查找到该文件的文件登记项,根据文件登记项中的起始簇号即可找到文件在数据区中第1簇,向数据区对应的簇中写数据,并且可以在FAT表中找到第2个簇号。根据第2个簇号又能向第2簇写数据并找到FAT 中的第3个簇号,以此类推,直到FAT表中最后一项0x0FFFFFFFH,完成写文件。读取文件的过程与写文件类似。

  SD卡在记录汽车CAN总线数据中的应用程序流程图如图5所示。其中LPC2368以中断方式将接收到的CAN数据以及接收时的时间存储到数据队列里,并立即跳出中断,进行主程序的处理或等待下一帧数据的接收中断,从而避免报文的丢失。

 SD卡应用于汽车CAN总线

    本设计采用SD卡作为外部存储介质,将实时采集到的CAN数据信息以标准文件的格式保存于SD卡中,具有性能可靠、使用方便、重量轻及存储容量大等特点,具有广阔的应用前景。

以上就是成都盘沣科技工程师为大家介绍的关于SD卡应用于汽车CAN总线的内容。成都盘沣科技为高校提供汽车CAN总线教学系统以及汽车电子师资培训,为国产汽车电子人才培养提供一份力量。

【咨询电话】028-68327818 68627808
【业务联系人】贺先生
【业务联系电话】13608179927
【业务联系QQ】800033630
【E_mail】
sales@pfautoecu.com

【客服联系人】袁先生
【客服联系电话】18602801577
【客服联系QQ】800033630
【E_mail】
fae@pfautoecu.com

【公司地址】 四川成都龙泉国际汽车城经开区南二路
【盘沣官方网站】
http://www.pfautoecu.com

最新评论
发表评论
标题
内容
表情
 

  分类导航
业界动态  (210)
企业新闻  (141)
汽车电子及CAN总线技术  (504)
汽车电子开发  (78)
  最新文章

成都盘沣科技有限公司

Copyright © 2009-2011 

腾讯企业QQ
蜀ICP备13022615号