王 龙,聂强广
随着科技的进步,工业应用中数据采集技术标准要求的提高,数据采集的增多,数据记录仪的设计必须考虑存储设备的存储容量、速度、质量、便携性及工业应用环境等因素[1].
本设计构成的模块有:主控处理器、数据通信模块、flash读取模块、U盘读取模块、电源管理模块,具体构成如图1所示.
图1 整体框架图
首先ATmega128主控芯片将外部接收到的数据,缓存到大容量flash中,再从flash中将缓存的数据读出,借助U盘控制芯片CH376s将数据存入U盘中.其采用flash作为前级数据缓存的目的,是实现数据写入的速率与flash的存储速率的匹配,不会因为数据在采集时受U盘存储数据的速率限制,达成数据采集与存储的最佳效果.本设计有以下优点.
(1)将U盘应用于高速数据记录仪,U盘高速数据记录仪因避免了操作系统容易崩溃的问题而具有更高的可靠性,操作简单方便且成本低廉.
(2)采用flash作为前级数据缓存的目的是实现数据在采集存储时写入的速率与flash的存储速率完成有效的匹配,避免数据在采集存储时受到U盘存储数据速率的限制,完成数据采集与存储的最佳效果.
由U盘构成的数据储存记录仪,实现了快速实时数据采集,能在单片机的控制下快速将数据存储到大容量U盘中,并且能脱离计算机控制实现数据存储,满足了在特殊条件下使用USB接口传输存储数据.本设计可面向海量数据采集存储、设备黑匣子、考勤机数据记录、水文监测、无纸记录仪及自动化生产线等应用场合.例如在原始生态自然保护区,需要记录某段时间内的降雨量或者是实时温度变化情况,就可以通过雨量计量仪或者温度测量仪检测出相应数据,再结合数据存储器实时准确记录数据,为生态环境研究提供可靠的数据[2].
flash芯片型号是W25Q128BV,容量有128M-bit,工作电压2.7~3.6V,最大工作频率100MHz[3],可以通过串行方式,将代码映射到RAM中,再通过spi控制方式来调控代码和实现声音、文本、数据的存储.W25Q128BV主要采用四条数据总线即CLK、/CS、DI、DO,他们分别对应片选信号、数据输入端、数据输出端、时钟控制信号,spi特点就是在发送每个数据的同时也会接收到对方一个字节的数据.
本设计中flash芯片W25Q128BV采用spi通信操作方式.spi控制方式主要有四条数据控制线,即MISO、MOSI、SCLK三条主要的数据线,另外一条是片选线CS,它主要控制spi接口的主从方式,当设置为0时即为从设备,设置1也就是主设备.主从选择非常方便,只需控制CS信号线的高低电平便可以快速选择主从设备.
单片机与flash连接如图2所示,CLK连接PB5、/CS连接PB4、DO连接PB6、DI连接PB7,程序配置流程,配置引脚使能,spi时钟,系统IO口初始化,进入spi初始化,判断指定的spi标志位是否已经设置好,读取发送缓存的空标志位,判断是否配置好spi缓存标志.
图2 单片机与flash连接
驱动CH376s步骤.
配置头文件,这其中有Atmega128相应的头文件及CH376应用层和硬件层、文件系统层头文件,例如#include
初始化后应答正常就进入中断,中断函数是CH376DiskConnect,等待U盘插入,紧接着检查U盘相关信息,比如U盘的容量,接着创建文本文档,通过串口返回监测结果,初始化成功后,进入接收数据状态.
异步串口通讯方式主要包括:数据读RXD和串行数据输出引脚TXD.
CH376使用的串行数据传输格式采用字节传输方式,包含1位起始位和8位数据位及1位停止标志位[4].默认设置的波特率是 9600bp,如果要修改波特率需要修改函数CMD_SET_BAUDRATE.
通讯过程中,分为两个阶段,即发送命令阶段和命令应答阶段.其中发送命令也就是使用者向写入器(串口rs-233)提出操作申请和数据应答,命令应答是写入器向用户命令返回的响应.
软件接口功能.首先检测U盘的状态(如插入,拔出),创建文件和目录(支持长文件名文件和目录),打开一个已经创建的文件和目录(支持长文件名文件和目录),从文件中读取指定长度和指定位置的数据(支持长文件名文件和目录).
写数据到指定文件的指定地址(支持长文件名文件和目录),列举目录下的文件和目录(支持长文件名文件和目录),删除文件和目录(支持长文件名文件和目录),查询U盘容量.
CH376的通信方式是异步串行通信UART,其中包含:RXD为串行数据输入,TXD为数据输出[5].采用这种通信方式的优势是减少与单片机的连线.CH376s在通信中的数据格式属于标准的字节传输模式,一位启始位,八位数据位,一位停止位.CH376能够适应硬件设定的串行通讯波特率,当然也可以修改函数CMD_SET_BAUDRATE以匹配单片机的波特率.每次上电复位后,CH376s的波特率取决于BZ和SCK和SDI三个引脚的电平组合,与单片机的连线如图3所示.
图3 ch376模块电路图
数据采集是通过rs232标准串口通信,用串口软件将数据发送给单片机,再通过单片机spi传输方式传输给flash,进行缓存.atmega128将flash缓存数据读取出来,通过uart通信将数据存入U盘.数据采取通过RS-232数据线与电脑的串口调试助手进行通信,从而达到模拟数据采集,当数据存入U盘后会返还一个代码14给单片机,告知它一次数据存入完成,也会通过串口调试助手进行显示,便于监测.
在单片机中TXD、RXD是TTL电平,要将接收的信号转成TTL电平,必须借助max323芯片来实现,将USB数据信号换成TTL电平数据,或将TTL电平转换成USB信号,数据发送以100ms为周期,进行自动数据传输,便于直观监测.电平转换电路如图4所示.
图4 电平转换电路
主程序流程如图5所示.主程序首先对定时器、I/O口资源、wrd128flash、CH376s、串口通信等进行初始化.初始化后应答正常就进入中断,中断函数是CH376DiskConnect,等待U盘插入,紧接着检查U盘相关信息,比如U盘的容量,接着创建文本文档,通过串口返回监测结果,初始化成功后,写数据到缓冲区,读缓冲区数据到写入U盘.
图5 主程序流程图
数据采集最先在flash中缓存,其中flash中是以数组形式进行存储,数据分为一位空闲检测位、一位地址位、八位数据位.主要采用的读取方式是spi,读取寄存器sprd.
将flash数据转存到U盘中,采用异步串行通信数据帧格式传输,数据帧是一位数据起始位、八位数据位、一位校验位和一位停止位.
主程序除了对所用到的外设资源进行初始化之外还调用了3个子程序,分别是模拟数据传感器的数据读写程序、flash暂存读取程序、对CH376s数据处理程序.CH376工作流程图如图6所示,初始化成功后,进入接收数据状态.首先检测U盘的状态(如插入,拔出),创建文件和目录,打开一个已经创建的文件和目录,从文件中读取指定长度和指定位置的数据,最后等待设备的移除.
图6 CH376工作流程图
串口助手调试如图7所示,开机上电,自检初始化,返回U盘信息状态,返回指令字符14,初始化成功,通过串口通信发送数据给单片机,波特率为9600bps,自动写数据周期为1000ms,模拟数据发送,每次数据写入成功会返回字符代码14,并自动换行.
图7 串口助手调试
借助串口调试助手XCOM V1.4进行调试,需要安装串口驱动程序和CH340串口驱动,连接硬件打开串口,波特率设置9600bps,CH376模块指示灯亮灯,表明连接正常,串口助手与单片机握手,进行U盘数据信息读取,并且在U盘中创建一个txt文件用于存储数据.一切正常时会返回初始化成功的命令,并通过串口助手进行显示,这时就能进行模拟数据采集了.
利用串口软件将数据发送给单片机,单片机接收到数据后通过spi传输方式传给flash进行缓存.atmega128将flash缓存中的数据读取出来,然后通过uart通信将数据存入U盘.数据采集是通过RS-232数据线与电脑的串口调试助手进行通信,从而达到模拟数据采集,当数据存入U盘后会返还代码14给单片机告知它一次数据存入完成,也会通过串口调试助手进行显示,能直观地看到一次数据传输的实现和完成,还可以通过电脑访问U盘中存储的数据,图8就是U盘中接收的数据,存储在一个txt文件中.
图8 数据存储效果图