基于AVR单片机大容量数据采集系统的设计
扫描二维码
随时随地手机看文章
摘要:高速嵌入式AVR单片机广泛应用于数据采集控制系统中,但由于自身存储容量过小而不能尽其所能,外扩Flash芯片很好地解决了存储容量上的瓶颈,在提高单片机性能的同时大大降低了系统成本。基于此设计了5路A/D采集电路,同时介绍了各个芯片的特点、功能结构,并在此基础上给出了它们之间的硬件接口设计及程序设计流程。
关键词:大容量数据采集;AVR单片机;Flash存储器,接口设计
0 引言
AVR系列单片机一直以功能强、高可靠性、高速度、低功耗等特点而受到广泛的应用。但是AVR单片机自身的存储空间不大,例如在长时间或者高速数据采集系统中,对数据存储空间需求很大,单片机自身的空间难以满足存储要求,所以在大容量数据采集的场合下其作用受到了限制。因此,在AVR单片机的基础上外扩一个存储芯片可以解决其存储容量小的问题。
Flash存储器体积小、容量大、并可随机访问,是作为扩展存储芯片的最佳选择。设计中采用了sumsung公司生产的NAND型的K9F5608UOM芯片作为扩展存储。
1 硬件设计
论文设计了5路A/D采集电路,介绍了如何在实际的电路中实现大容量数据采集。设计要求:5路并行采集电路,A/D采集精度为12位,每路的采集速度约为10 k/s,有效采集时间约为10分钟。由此我们可以得到所需要的存储空间大小大约为3 M(10×5 x10×60 K),一般AVR单片机的数据存储容量是远远达不到的,因此扩展一个FLASH芯片作为数据存储器。
整个数据控制采集系统由三大模块组成,分别是MAX1304模数转化芯片构成的数据采集模块、K9F4G08UOM存储芯片构成数据存储模块以及Atm-ega16L芯片组成的系统控制模块。系统设计构架见图1。
1.1 系统控制芯片介绍
ATmage16L是ATMEL公司在2002年第一季度推出的一款AVR单片机,采用RISC指令系统,Havard结构设计,具有接近1MIPS/MHz的高速处理能力,具有16 k字节的在线编程FLASH,512字节的EEPROM数据存储器,32个可编程双向I/O口可传送地址和数据。芯片引脚见图2。
1.2 A/D芯片接口设计
MAX1304是MAXIM公司推出的可编程12位精度串行输出A/D转换芯片,它具有8路模拟通道输入,每路都有独立的采样保持(T/H)电路。并行采样的功能极大地提高了采样速率,可应用在高速数据采集电路中。其电压输入范围为0~+5 V,并具有±6 V的故障保护,为电路提供了很好的安全屏障。内部或外部基准模式以及内部或外部时钟选择使得在设计电路时有了很大的灵活性。本设计中选用的是内部时钟及内部基准模式(电路典型接法如图3所示)。MAX1304的数据位与ATmegal6L的B,D两个扩展口相连,以实现采集数据的读取;其控制位与ATmegal6L的A扩展口连接,控制AD转换、芯片配置等操作。
MAX1304的12个I/O口中高8位分别与PB的8个口相连,低4位与PD的前4个口相连。其中可以通过配置高8位D0~D7来选通要启动的模拟输入通道。上电时,在启动转换位CONVST(接PA4)之前写入配置寄存器,以选择有效通道。写配置寄存器时,将片选CS(接PA3)和写使能WR(PA2)设为低电平,然后将D0~D7位装载到并行总线,再将WR置为高电平,数据在WR的上升沿锁存。转换结束位EOLC(接PA0),所有选通通道转换结束指示,在EOLC的下降沿,将CS(接PA3)和读RD(接PA1)置为低电平,把第一个转换结果置于并行总线。RD连续的低电平脉冲将转换结果顺次放到总线上。时序中最后一个转换结果读取后,额外的读脉冲可以使指针重新指向第一个转换结果。
1.3 Flash芯片接口设计
K9F5608UOM 32M×8位闪速存储器是sumsung公司生产的基于NAND技术的大容量、高可靠性存储器。该芯片结构简单,只有一颗存储体;数据读、写、擦除速度快,按页顺序读取平均每字节50 ns,与一般的SRAM相当;接口电路简洁,8位双向I/O口端口,地址,数据复用;编程简单,片内的写操作控制器自动执行所有的写操作和擦除功能,包括提供必要的脉冲、内部校验等,完全不用外部控制器考虑;数据完全性好,具有硬件写保护功能,采用CMOS浮置门技术提高其寿命(可擦写100,000次),数据保存10年不丢失。本设计中Flash的数据位与ATme-gal6L的C扩展口相连,控制位与ATmegal6L的B,D扩展口连接,实现数据的写入操作。
如图4所示Flash芯片的8个I/O与ATmega16L的PC0~7相连,作为数据总线,用于输入命令、地址、数据,在读操作中输出数据。忙闲指示(R/B)接PD4,器件运行状态指示,当进行一个写、擦、随机读取操作时,指示为低电平,操作结束后指示高电平。读使能RE接PD5,控制把片内数据放到I/O中线上,在它的下降沿时数据有效,同时使内部的列地址自动加1。写使能WE接PA5,用于控制把命令、地址和数据在它的上升沿写入到I/O口,而在读操作时必须保持高电平。片选CE接PD6,用于器件的选择控制,在进行读操作时,如果CE变为高电平,器件转入待用状态,而当器件写操作或擦除过程中,则不受CE高的影响。命令锁存使能CLE接PA7,使输入的命令发送到命令寄存器,当变成高电平时,在WE上升沿命令通过I/O口锁存到命令寄存器。地址锁存器使能ALE接PA6,使输入的地址发送到地址寄存器,当变成高电平时,地址在WE的上升沿被锁存。写保护WP提供由于芯片供电压突变而引起的意外擦写操作保护,当WP置低时,内部高压源使芯片复位,引脚状态不定,处于无操作态。由于本设计只需要向Flash中写入数据,所以写保护WP接VCC强制高电平。
2 软件设计流程
数据采集模块负责数字化5个通道的模拟输入量,将每路模拟量转化为并行输出的12位数字量。控制模块的作用是将MAX1304所转化的数据进行读取并写入到K9F4G08UOM存储模块中。
由图5可以看到整个软件的设计流程。MAX1304在上电时,开始配置寄存器选通前5路模拟通道输入。在第一个CONVST脉冲上升沿时,5路并行采样数据开始转换。当所选通道数据全部转化完毕时,EOLC将输出低电平,可以通过查询该端口状态来了解转换是否完成。当该端口电平为高时,继续转换下一路通道数据;为低时,ATmega16L配置相应的读取端口为读取状态,将这一路数据读到ATmega16L的缓存中,并控制Flash芯片将缓存中的数据写入其中。随着5个RD的脉冲信号,5路的数据将依次放置12位I/O总线上。所以,循环操作5次即可将一次并行采集的数据写入Flash。然后进入下一时刻读取写入操作,整个过程循环操作即可。
3 结束语
通过这个5路采集电路,可以看出ATmega16L单片机和32M的K9F5608UOM大容量Flash存储芯片在实际的接口设计是十分简单的,而且操作灵活多变。在以上设计基础上还可以将5路扩展到8路以内(通过配置MAX1304芯片可以实现),实现更多路的并行采集,并且可以根据实际情况来选择大小合适的Flash芯片。这种可扩展的采集电路具有很高的性价比,无需选择更昂贵的大容量控制芯片,可广泛用于大批量数据采集记录系统中。