本发明涉及一种数据采集系统,特别涉及一种基于atmega48和at26df161a的数据采集系统。
背景技术:
当今世界科学技术快速发展,使得通信、雷达、航空航天等军事或民用的各个领域对信息获取速度的要求越来越高,因此对高速数据采集的需求越来越广泛。数据采集是数字世界和实际应用连接的桥梁,只有快速获取、存储信息才能更快的作出应对,尤其是用在军事领域早几分钟甚至几秒做出应对,往往能达到克敌制胜的效果。
数据采集存储是信号处理过程的一个重要环节,已经广泛应用于雷达、声纳、无线探伤等领域。在不同条件下采样速率和采样精度不同,实现方法也不同。根据目前的发展趋势,开发存储速度快,功耗低和存储容量大的系统越来越受到重视。
传统的数据采集系统使用am29f040b作为存储芯片,存在以下问题:
(1)am29f040b工作频率较低,最大仅为18mhz。
(2)am29f040b工作电流较大,典型为30ma。
(3)am29f040b存储容量小,仅为4mbit。
技术实现要素:
本发明的目的:本发明设计一种基于单片机atmega48和flash存储器at26df161a的数据采集系统,既能提高系统存储速度,增大系统存储容量,又能降低系统功耗。
实现本发明目的的技术解决方案为:
一种基于atmega48的数据采集系统,其特征是,单片机采用atmega48芯片,flash芯片采用at26df161a芯片;atmega48芯片与at26df161a芯片通过spi通信接口进行数据交互;
atmega48芯片中的主程序通过循环扫描指定端口的输入电平,来确定所选择的模式为采集模式或编辑模式,
如果选择采集模式,分析at26df161a芯片中是否已有数据,若已有数据则进入死循环状态,指示灯闪烁,否则进入采集模式,重新进入主循环;
如果选择编辑模式,则进入编辑模式,对at26df161a芯片进行读取、擦除操作,编辑完后则退出编辑模式重新进入主循环。
进一步地,采集模式时,首先初始化spi通信接口和ad,并启动ad,ad工作在单次转换结束模式;然后打开dataflash连续写模式,对其写入起始地址0x000000和已有数据的表示字0x56;等待一次ad转换结束后,进入循环读写状态;当dataflash写满后,退出采集模式。
进一步地,编辑模式时,首先对单片机串口uart进行初始化,开中断,设置编辑退出模式字为0,即表示继续编辑,然后等待串口中断,中断到来后,根据接收的命令字做出相应的操作。
进一步地,在对at26df161a芯片读取时,首先写入读控制字,然后写入三个字节的地址,之后数据由so引脚输出;每读取一个字节,at26df161a芯片内部的地址计数器自动加1;每次输入df连续读取命令就读取l长度的数据返回给串口,当读到dataflash底时,返回结束提示。
进一步地,第一次读取数据从地址0x000000开始,每次读取后地址自动增加l。
进一步地,l长度的大小由上位机串口缓存大小决定。
本发明创造的优点以及达到的效果:
基于atmega48和at26df161a的数据采集系统,存储速度快,存储容量大,功耗低,采集通道可根据实际情况配置改动,通用性比较强。在单片机系统中使用flash存储器,可以实现用简单设计完成复杂任务的目标,从而有效地缩短产品的开发周期,降低产品的制造成本。
附图说明
图1采集系统硬件电路图;
图2采集系统主程序流程图;
图3采集模式程序流程图;
图4编辑模式程序流程图;
图5数据读取操作程序流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
针对现有技术中存在的问题,本发明设计一种使用at26df161a作为存储芯片的数据采集系统。整个系统以单片机为核心控制器来组织工作,它控制着整个系统的读、写、擦除等操作。at26df161a最高工作频率66mhz,工作电流仅为7ma,存储容量16mbit,为实现存储速度快,功耗低和存储容量大的数据采集系统提供了有利保障。
1.系统硬件设计
本采集系统主要由单片机、存储芯片、稳压芯片组成。单片机选用atmega48芯片,在体积方面,它具有更小的mlf封装。供电方面,它可以在1.8v~5.5v范围内工作。另外,它具有spi通信接口可以方便地与存储芯片通信。atmega48的ad具有10位采样精度。本采集系统硬件设计如图1所示。
flash芯片选择atmel公司的at26df161a,它具有如下特性:2.7v~3.6v单电源供电,最高66mhz时钟工作频率,7ma工作电流,16mbit的容量,spi接口,可反复擦除/编程100000次,字节/页、连续编程模式。其中连续编程模式非常适合于采集系统的数据写入,即每次只存储一个字节,下次存储时地址可以自动加一,只需要给出起始地址,就可以完成数据连续的存储,节省了存储数据的步骤和时间。
根据所选芯片电压范围,本系统统一采用3.3v供电,通过稳压芯片ht7133提供。vin1到vin4为四个采集输入接口,因为本系统的供电电压为3.3v,所以为了适应不同电压范围的输入信号,在每个采集输入端加入了分压电阻。采集系统中芯片封装应尽量选择体积小的,其中atmega48选择mlf封装,ht7133选择sot89封装,at26df161a选择soic8封装。
2系统软件设计
2.1主程序的设计
本系统主程序提供两个基本模式的选择:1.采集;2.编辑。为了减小系统体积,使用两个i/o端口,作为基本模式选择的输入方式。主程序通过循环扫描指定端口的输入电平,来确定所选择的模式。采集系统主程序流程如图2。系统上电后先进行端口设置:采集和编辑对应的端口设置为输入且内部上拉,然后循环读取设定端口的输入电平,哪一个端口被拉低,就进入其相应状态。如果选择采集,首先分析flash中是否已有数据。如果已有数据则进入死循环状态,指示灯闪烁,这样可以防止覆盖已采集的数据,否则进入采集模式,并完成后重新进入主循环。如果选择编辑,则进入编辑模式,这时可以对flash芯片进行读取、擦除操作,当编辑完后则可退出编辑模式重新进入主循环。为了增加对系统状态的了解,加入了指示灯。如果系统进入某个模式,也即系统忙时,指示灯就点亮。如果在等待模式选择,即空闲,指示灯灭。指示灯闪烁时表示flash内已有数据。
2.2采集模式程序的设计
当选择采集模式后,程序就进入了采集子函数。图3给出了采集模式程序流程。首先初始化spi通信接口和atmega48芯片中的ad,并启动ad,这里ad工作在单次转换结束模式。然后打开at26df161a芯片中的dataflash连续写模式,对其写入起始地址0x000000和已有数据的表示字0x56。等待一次ad转换结束后,进入循环读写状态。当dataflash写满后,退出采集模式,返回主程序。
2.3编辑模式程序设计
当选择编辑模式后,用户可以通过上位机发出命令对dataflash芯片进行整片擦除和数据读取操作。进入编辑子函数后,首先对单片机串口uart进行初始化,开中断,设置编辑退出模式字为0,即表示继续编辑,然后等待串口中断,中断来后,根据接收的命令字做出相应的操作。图4给出了编辑模式程序流程。
在对at26df161a读取时,首先写入读控制字,然后写入三个字节的地址,之后数据就由so引脚输出了。每读取一个字节,at26df161a内部的地址计数器会自动加1,这样只要写入头地址就可以实现连续的数据读取。读取程序的设计流程如图5。每次输入df连续读取命令就读取l长度的数据返回给串口,第一次读取从地址0x000000开始,每次读取后地址自动增加l。当读到dataflash底时,返回结束提示。其中l受到上位机串口缓存大小决定,不同的串口调试软件对缓存的设置也不同,因此根据实际情况确定l的大小,一般设定为4096。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。