智能车数据存储模块设计

2014-12-18 08:04王长峰陈进军
制造业自动化 2014年21期
关键词:高电平按键单片机

王长峰,陈进军,于 婷

(1.贵州大学 电气工程学院,贵阳 550003;2.长春轨道客车装备有限责任公司 国凯公司,长春 130062 )

0 引言

近年来,单片机系统发展迅猛,这不仅体现在CPU处理能力迅速提升、外界设备与处理器交互能力快速提高,更体现在单片机系统的复杂性日益提高、系统存储容量急剧增大。这些变化对于数据操作的灵活性提出了越来越高的要求[1,2]。将SD卡与单片机系统结合起来,通过单片机处理SD卡信息,可以将信息化嵌入式产业向更小体积发展。为了使单片机写入的文件能被Windows系列操作系统正确识别,所以需要引入高效率并且应用广泛的FAT文件系统。SD卡引入单片机系统,能够增强系统的数据存储速度和空间,FAT文件系统的引入,使得单片机系统数据管理更具层次性和逻辑性,更重要的是与Windows系统兼容,所形成的数据文件可以直接用操作系统来进行处理。

1 智能车数据存储模块硬件设计

1.1 总体方案设计

智能车数据存储模块的设计要求是能够实现将智能车数据(如路径信息、车速、舵机控制信息、车速控制信息等)存储在SD卡中,并利用按键来实现文件的命名和形成至少三个数据文件。根据设计要求分析其硬件设计包括电源、单片机、SD卡、按键、接口电路、传感器数据输入等部分。其硬件原理框图如图1所示。

图1 硬件原理框图

1.2 电源模块

本设计中采用5V稳压器作为单片机电源,SD卡的电源使用LM1117-3.3来把5V电压转为3.3V。

1.3 单片机模块

智能车数据存储模块选用MC9S12XS128单片机,该单片机带有SPI模块。

1.4 接口电路模块

接口电路由三极管C1815和电阻搭建,包括三个5V转3.3V和1个3.3V转5V的电路。

1.5 SD卡模块

本设计采用的SD卡为金士顿SD卡,内存为256M,MC9S12XS128单片机的全双工8位SPI模块有4个引脚,分别为主入从出引脚MISO、主入从出引脚MOSI、串行时钟引脚SCK以及从机片选引脚SS。当CS信号线为低电平时,主机开始所有的总线传输。数据从单片机的MOSI引脚同步输入Micro SD卡的DA引脚,Micro SD卡返回数据由D0线同步输入单片机的MISO引脚,数据在CLK信号的上升沿同步输入和输出。

SD卡SPI模块下与单片机的连接如图2所示,此图是示意图,实际连线要接电平转换电路。

图2 SD卡与单片机接线

1.6 按键模块

按键模块电路,当按键打到1时单片机PA1为低电平,打到3时输入为高电平。

2 智能车数据存储模块软件设计

在充分理解FAT文件系统[3]和SD卡的操作基础上,完成了智能车数据存储模块软件设计,软件设计包括单片机初始化程序和SD卡操作程序以及形成FAT文件系统程序三部分。如图3所示为软件结构图,下面就这三部分进行介绍。

图3 软件结构图

2.1 单片机初始化程序

单片机初始化程序包括时钟的初始化以及SPI模块的初始化,时钟初始化的功能是使单片机的时钟频率设置为40MHz,SPI模块初始化包括使能SPI模块以及设定传输波特率。由于硬件包含一个按键输入,同时程序设计当数据传到SD卡时[4],开发板上接到PB口的灯闪一下,所以初始化程序中包含对PB和PA口的初始化。

2.2 SD卡操作程序

根据第三章介绍的SD卡的知识,用单片机来编写SD卡的复位函数,SD卡的读操作函数,SD卡的写操作函数,SD卡的高速传输设置函数。SD卡的读写操作函数实现了单片机对SD卡读写功能,由于在SD卡的复位及初始化时期,SD卡时钟信号应该保持低速,所以一开始SPI传输速度会很低,当初始化完成以后,传输数据的时候可以将SPI波特率设高,所以编写了SD卡的高速传输设置函数。

2.3 FAT文件形成函数

SD卡操作程序其实是FAT文件形成函数的底层函数,如果说SD卡操作程序完成单片机对SD卡读写功能,那么FAT文件形成函数完成功能是高速单片机要写的内容。FAT文件形成函数包括写FAT表函数,写文件名函数,写数据函数。

2.4 程序流程图

程序实现的功能是将数据存到SD卡上,由于涉及到FAT文件系统,所以存储数据不单单是写数据,为了节省单片机内存以及保证存储数据时间尽量少的占用单片机时间,所以简化了形成文件的步骤,通过winhex软件直接查到关于FAT的一些重要地址,如FAT表的扇区,文件目录的扇区,起始簇的扇区等等[5],然后将这些地址预先存到单片机,这样就免去了单片机去查询的SD卡的时间,同时将SD卡格式化,写FAT表的时候一次写十个簇,最后一簇为结束簇,值为0Xff,相当于是开辟了一个十簇的空间,往里面放数据,如果放满了,则再顺次开辟一个十簇的空间,但是由于第一个簇与上次开的最后一簇要重合,所以相当于开了九个簇,当写满一次的空间的时候,灯会闪一下,告诉操作人员。当操作人员来回拨一下按键时,单片机往SD卡中写文件名,然后开始重新开辟空间,存储数据[6]。软件流程如图4所示。

图4 主程序流程图

3 软件调试

智能车存储模块设计软硬件完成以后,需要进行调试来验证该模块是否完成设计要求功能,下面将阐述软件调试情况[7~10]。

软件的程序编写、编译以及下载是通过软件codewarrior5.0来完成。

程序下载到单片机以后,单片机就会预先产生11111111……的数据,总计为512个字节,然后不断把这512个字节写到卡里面,若写完十簇空间,则灯会亮灭一次,当把开关掰到右边时,单片机程序一直等待开关再次掰到左边,此时会形成文件名001.txt。

然后单片机会继续写数据,再次掰开关,则会形成002.txt,依次类推。

如图5所示为使用上位机读取SD卡的数据。图6为文件内容,实验证明该模块满足设计要求。

图5 上位机读取SD卡数据

图6 文件内容

4 结束语

本设计主要讲述了通过对单片机的编程,将数据存储到SD卡上,以及FAT文件系统,SD卡的相关内容等。在FAT文件系统中,FAT文件系统结构分MBR区、保留区能及BPB参数、FAT表、文件以及目录的表达方式;FAT16的存储过程是建立文件,将数据写到数据区,再写根目录区和FAT表。了解SD卡的硬件基础知识、SD卡命令以及它的操作是必不可少的[11]。

在这次设计中单片机与SD卡的电平不兼容,因此在它们之间设计了一个接口电路,接口电路的主要功能是把单片机输出的5V高电平转为SD输入的3.3V高电平,把SD卡输出的3.3V高电平转为单片机输出的5V高电平。

[1]王福瑞,等.单片微机测控系统设计大全[M].北京:北京航空航天大学出版社,1999.

[2]王毅.单片机器件应用手册[M].北京:人民邮电出版社,1994.

[3]邓剑.FAT文件系统原理及实现[J].计算机与数字工程,2005.

[4]田茂.SPI模式下SD卡驱动的设计与实现[J].现代电子技术,2009.

[5]宋群生,宋亚琼.硬盘扇区读写技术一修复硬盘与恢复文件[M].北京:机械工业出版社,2004.

[6]院泽嘉,董金明.FAT16文件系统在嵌入式操作系统μC/OS 中实现[J].电子测量技术,2005.

[7]韩九强.现代测控技术与系统[M].北京:清华大学出版社,2007.9.

[8]王福瑞,等.单片微机测控系统设计大全[M].北京:北京航空航天大学出版社,1999.

[9]胡汉才.单片机原理及接口技术[M].北京:清华大学出版社,2004.2.

[10]康华光.电子技术基础[M].北京:高等教育出版社,2006.1.

[11]张凯.MMC卡的文件系统及其实现方法[J].单片机与嵌入式系统应用,2006.

猜你喜欢
高电平按键单片机
一种基于FPGA的PWM防错输出控制电路
基于有限状态机的按键检测程序设计
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
按键消抖在单片机和FPGA实验教学中的应用
数字电子技术的应用
浅谈物理电路与数字电路