对多路数据采集存储的设计实现

2014-03-13 07:02韩云杰刘宇红包化伟
电子科技 2014年6期
关键词:寄存器命令总线

韩云杰,刘宇红,包化伟

(贵州大学 电子信息学院,贵州 贵阳 550025)

随着各种嵌入式系统应用于工作现场的数据采集和控制,完成数据的传输及存储。数据的采集要求不断提升和USB 总线技术的发展,使U 盘的大容量存储和方便易用的功能从PC 机系统扩展到单片机系统中,进行数据采集和传输,可便于在室外进行大量数据的采集。基于单片机技术的U 盘数据采集是将单片机系统作为主机系统,再利用支持USB 总线协议的U盘读写芯片来完成工业现场的数据采集或传输。

1 系统硬件的实现

1.1 总体模块设计

系统硬件结构如图1 所示,采用高性价比STM32F103VC 作为系统主机,并将采集数据传入主机,选用CH376 作为USB 主机控制读写芯片,实现数据的采集存储,同时将采集到的数据在显示屏上进行显示。

图1 系统总体结构图

1.2 功能模块的实现

采用高精度24 位AD7793 芯片实现了对数据的采集,使用SPI 接口协议,设备使用4 线双向接口从主/从模式下通信,其原理如图2 所示,通过配置SPI_CNTL[22],MCU 也可支持2 位数据传输模式,当SPI_CNTL[22]寄存器的TWOB 位使能,即可传输2 位数据的输入/输出。第一位数据从SPI_TX0 输出或从SPI_RX0 输入,第二位数据从SPI_TX1 输出或从SPI_RX0输入。

图2 AD7793 芯片接口原理图

采用文件管理CH376 芯片控制单片机系统的读写,芯片内置了USB 通讯协议的基本固件,可处理海量存储设备的专用通讯协议,并在读写时理解传输USB 协议,易于读写控制。通过串行接口,CH376 可用最少的连线与STM32F103 进行点对点的连接以实现USB_HOST 功能,CH376 芯片的RXD 和TXD 分别连接到单片机的串行数据输出/输入引脚,对芯片提供3.3 V 电压,Y 为芯片的外部晶振,管脚RST 为芯片复位管脚,CH376T 依靠串口收发指令通知STM32F103,故INT#输出的中断请求管脚悬空。CH376 与主机连接如图3 所示。

图3 USB 主机接口原理图

2 系统软件的实现

2.1 数据采集的实现

对数据采集的编程主要是对AD7793 芯片初始化,其主要寄存器配置流程如下:(1)选定写配置寄存器,设置单极性编码,Gain=8,设置外部参考源,通道为AIN1;(2)选定写IO 寄存器,恒流源1 接IOUT1,恒流源2 接IOUT2,激励恒流源210 μA;(3)选择写模式寄存器,进行内部零电平校准,设置内部时钟,更新速率为16.7 MHz,读状态寄存器,循环判断零电平是否校准;(4)再次写模式寄存器,进行写内部满量程校准,设置内部时钟,更新速率为16.7 MHz,再次选择读状态寄存器,循环判断满量程是否校准;(5)选择写模式寄存器返回连续转换模式,设置内部时钟,更新速率为16.7 MHz,读取状态寄存器,循环判断连续返回位是否设置成功。

2.2 数据采集的存储实现

CH376T 支持以Byte 为最小单位进行读写。采用默认的9 600 bit·s-1速率,发送两个字节的同步码(57 H,ABH,命令码)在指令之前,用以区分指令和数据。依靠指令用一问一答的形式实现数据的存储。其流程主要包括硬件初始化、数据写入、文档的关闭,具体如图4 所示。

图4 数据存储流程图

发送CMD_CHECK_EXIST 命令及5 H 数据,若返回0AAH,说明硬件初始化成功。发送CMD_SET_USB_MODE 命令,后续数据位选择模式,若返回为CMD_RET_SUCCESS 说明选择U 盘模式成功。发送CMD_DISK_CONNECT 命令检查U 盘,返回CMD_INT_CONNECT 说明选择成功;发送CMD_DISK_MOUNT 命令初始化U 盘,返回成功为CMD_INT_CONNECT,若失败,则需重复5 次初始化U 盘。

发送CMD_FILE_OPEN 命令,若返回CMD_INT_SUCCESS 说明打开成功,否则发送CMD_SET_FILE_NAME、CMD_FILE_CREAT 命令设置文件名创建文档。若返回CMD_INT_SUCCESS,说明创建成功。接着发送CMD_BYTE_LOCATE 命令写入4 个字节的偏移量,低字节在前来确定数据读写位置,发送CMD_BYTE_WRITE 命令写支持最大数据长度,返回是USB_INT_DISK_WRITE 命令时,读取可向CH376 中的数据长度,接着循环写数据;写完数据之后再发送CMD_BYTE_WR_GO 命令,等待返回,若为USB_INT_DISK_WRITE 继续返回写数据,否则此次数据将写入成功。

发送CMD_DIR_INFO_SAVE 命令,接着发送数据01H(00H 表示不更新文件的长度,01H 表示更新长度)。若返回为CMD_INT_SUCCESS,说明保存再发送CMD_FILE_CLOSE 命令,若返回CMD_INT_SUCCESS命令,则表明此次数据读写保存、关闭成功。

3 调试

系统硬软件制作完成后,针对系统运行情况进行相应的测试,当数据采集出现延时时,芯片和主机时钟现实中出现不同步,需逐步去调试程序延时达到近似同步,在数据存储时能有效地将数据在U 盘中建立txt文档并写入数据,满足控制要求。

4 结束语

文中主要阐述了对AD7793 芯片采集大量数据的基本配置和流程,用STM32F103VC 芯片和CH376 芯片收发对接控制,使用串口指令来控制数据的存储实现,代替了传统芯片中断的实现方式。实验证明其有效节省了单片机接口资源,随着嵌入式系统对USB 设备的存储要求越发强烈,此方法既方便了USB 移动存储设备存取数据,又降低了系统成本,具有较大的实用价值。

[1] 祝常红,彭坚.数据采集与处理技术[M].北 京:电子工业出版社,2008.

[2] 李念强,魏长智,潘建军,等.数据采集技术 与系统设计[M].北京:机械工业出版社,2009.

[3] 南京沁恒电子有限公司.USB 总线接口芯片CH376 中文手册[M].南京:南京沁恒电子有限公司,2009.

[4] USB Implementer's Forum.USB mass storage class bulk only transport rev1.2[EB/OL].(2011-09-12)[2013-09-29]http://www.usb.org.

[5] 夏益民,王广君.基于USB 总线的高速数据采集系统[J].国外电子元器件,2003(10):20-23.

[6] 刘荣.圈圈教你玩USB[M].北京:北京航空航天大学出版社,2009.

[7] 张蕾,杨洁,许力.基于ARM 的CH375 读写U 盘的接口设计与实现[J].电工技术,2008(8):40-41,46.

[8] 赵磊,牛俊邦.基于USB 主机的嵌入式数据采集系统的设计和应用[J].仪表技术与传感器,2009(3):52-54,57.

[9] 胡晓军,张爱成.USB 接口开发技术[M].西安:西安电子科技大学出版社,2005.

[10]路永坤.基于USB 接口的数据采集模块的设计与实现[J].自动化仪表,2005,6(2):35-37.

猜你喜欢
寄存器命令总线
只听主人的命令
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
机载飞控1553B总线转以太网总线设计
一种基于CAN总线的误码测试方法
移防命令下达后
这是人民的命令
CAN总线并发通信时下位机应用软件设计
宝马F02车总线系统
高速数模转换器AD9779/AD9788的应用