基于C8051F320USB接口的数据采集存储电路的设计
发布时间:2008/6/3 0:00:00 访问次数:349
本文给出的是用于大型光伏系统运行状态监测的数据采集存储电路,由于采用表面贴片工艺制作,整个电路板的宽度仅为18毫米,就像使用u盘一样方便。
采集电路硬件部分
电路的硬件结构
本系统采用了cygnal公司的c8051f320芯片和atmel公司的at45db321c存储芯片作为控制和存储的主要芯片。图1是信号采集系统的采集及存储系统框图。
图1 基于usb数据采集及存储系统框图
从图1中可见,在采集过程中,传感器的输入模拟信号经可变增益放大器放大后送至c8051f320,经过adc转换为数字信号。单片机片外有8个45db321c芯片组成了一个32mb的data flash存储器,采集到的数据不断地通过spi接口传送到45db321c芯片中存储。
与其他型号芯片相比,c8051f320带有usb接口,片内的usb功能控制模块符合usb2.0规范,可在全速或低速下运行,并具有1kb usb缓存、集成收发器,无需外部电阻。可以与pc机即插即用。当需要数据时,可将采集存储电路从现场取回,通过usb接口回放到pc机中,在labveiw平台上进行波形显示和数据分析处理。
8051f320与45db321c的硬件接口
系统中c8051f320与45db321ci采用spi单主多从机的方式通信。引脚nss作为从机选择线,选择存储芯片,低电平有效;sck作为串行外设接口发送和接收数据的同步时钟信号;rdy/buz作为判断设备不忙或准备接收新的指令操作的信号线;so、si作为数据传输线。
本系统设计上考虑使用8片45db321c芯片,最大容量达32mb,通过片选cs1~cs8分别连到各45db321c的cs端。时钟sck只对被选中的45db321有效。本系统使用多片flash芯片的设计除了提供充足的存储空间之外,还解决了一个关键问题,就是借鉴硬盘领域raid技术的思路,通过对4片一组的flash顺序操作实现一个基本的并行加速,解决了flash写入速度过慢的问题,大大提高了存储性能。
图2 单片机与flash存储器的接口电路
具体电路如图2所示,其中8片存储器的spi采用级联只画出一片,各自的cs片选信号由74hc138译码给出。
采集电路的程序软件
采集电路的程序是指固化在c8051f320 中的程序,采用c语言编写,由主程序模块、adc数据采集、flash数据存储和usb通信四部分组成。
主程序和adc数据采集
主程序主要完成系统初始化状态指示操作控制和参数设置启动a/d转换等。
adc数据采集程序将来自传感器的模拟信号转换成数字信号的。本系统中,adc的转换是通过timer2的自动溢出来触发的,而采集的速率可以事先通过上位机设置。
flash数据存储程序
c8051f320芯片与flash存储器的通信采用spi接口方式,数据传输率为12mhz(位/秒)。本设计中,c8051f320工作在spi主机模式,spi总线的数据传输都将由c8051f320发起。 首先对spi相关sfr spi0cfg寄存器和spi0cn寄存器进行配置,使其工作在3线主模式12mhz。通信时首先用gpio引脚来选择相应的flash从器件,随后通过读取spidat来进行读写操作。在使用flash芯片进行读写操作时,首先要确定flash存储器的状态。可通过写入d7h命令,读取状态寄存器判断设备是否ready或处于busy状态。确定状态后,可根据数据手册中的命令格式进行相关的读写以及擦除操作。
usb通信程序
固件编程是usb设备开发过程里的主要工作。固件的主要任务是初始化单片机和外设,发送usb请求,响应主机的标准设备请求。根据设备的功能分类完成各种数据交换请求。初始化编程主要完成usb控制器的初始化、端点初始化,交叉开关和i/o口初始化、系统时钟设置,控制器使能。初始化后,usb设备可随时插入主机中,主机将遵循usb协议对设备进行识别和初始化。主机识别到设备之后对设备进行配置,调用相应的驱动程序,配上上位机软件进行相关通信操作。
silicon lab公司提供了usbxpress的开发套件。通过使用usbxpress库,大大简化了usb固件程序和pc端驱动程序的开发。 usbx
本文给出的是用于大型光伏系统运行状态监测的数据采集存储电路,由于采用表面贴片工艺制作,整个电路板的宽度仅为18毫米,就像使用u盘一样方便。
采集电路硬件部分
电路的硬件结构
本系统采用了cygnal公司的c8051f320芯片和atmel公司的at45db321c存储芯片作为控制和存储的主要芯片。图1是信号采集系统的采集及存储系统框图。
图1 基于usb数据采集及存储系统框图
从图1中可见,在采集过程中,传感器的输入模拟信号经可变增益放大器放大后送至c8051f320,经过adc转换为数字信号。单片机片外有8个45db321c芯片组成了一个32mb的data flash存储器,采集到的数据不断地通过spi接口传送到45db321c芯片中存储。
与其他型号芯片相比,c8051f320带有usb接口,片内的usb功能控制模块符合usb2.0规范,可在全速或低速下运行,并具有1kb usb缓存、集成收发器,无需外部电阻。可以与pc机即插即用。当需要数据时,可将采集存储电路从现场取回,通过usb接口回放到pc机中,在labveiw平台上进行波形显示和数据分析处理。
8051f320与45db321c的硬件接口
系统中c8051f320与45db321ci采用spi单主多从机的方式通信。引脚nss作为从机选择线,选择存储芯片,低电平有效;sck作为串行外设接口发送和接收数据的同步时钟信号;rdy/buz作为判断设备不忙或准备接收新的指令操作的信号线;so、si作为数据传输线。
本系统设计上考虑使用8片45db321c芯片,最大容量达32mb,通过片选cs1~cs8分别连到各45db321c的cs端。时钟sck只对被选中的45db321有效。本系统使用多片flash芯片的设计除了提供充足的存储空间之外,还解决了一个关键问题,就是借鉴硬盘领域raid技术的思路,通过对4片一组的flash顺序操作实现一个基本的并行加速,解决了flash写入速度过慢的问题,大大提高了存储性能。
图2 单片机与flash存储器的接口电路
具体电路如图2所示,其中8片存储器的spi采用级联只画出一片,各自的cs片选信号由74hc138译码给出。
采集电路的程序软件
采集电路的程序是指固化在c8051f320 中的程序,采用c语言编写,由主程序模块、adc数据采集、flash数据存储和usb通信四部分组成。
主程序和adc数据采集
主程序主要完成系统初始化状态指示操作控制和参数设置启动a/d转换等。
adc数据采集程序将来自传感器的模拟信号转换成数字信号的。本系统中,adc的转换是通过timer2的自动溢出来触发的,而采集的速率可以事先通过上位机设置。
flash数据存储程序
c8051f320芯片与flash存储器的通信采用spi接口方式,数据传输率为12mhz(位/秒)。本设计中,c8051f320工作在spi主机模式,spi总线的数据传输都将由c8051f320发起。 首先对spi相关sfr spi0cfg寄存器和spi0cn寄存器进行配置,使其工作在3线主模式12mhz。通信时首先用gpio引脚来选择相应的flash从器件,随后通过读取spidat来进行读写操作。在使用flash芯片进行读写操作时,首先要确定flash存储器的状态。可通过写入d7h命令,读取状态寄存器判断设备是否ready或处于busy状态。确定状态后,可根据数据手册中的命令格式进行相关的读写以及擦除操作。
usb通信程序
固件编程是usb设备开发过程里的主要工作。固件的主要任务是初始化单片机和外设,发送usb请求,响应主机的标准设备请求。根据设备的功能分类完成各种数据交换请求。初始化编程主要完成usb控制器的初始化、端点初始化,交叉开关和i/o口初始化、系统时钟设置,控制器使能。初始化后,usb设备可随时插入主机中,主机将遵循usb协议对设备进行识别和初始化。主机识别到设备之后对设备进行配置,调用相应的驱动程序,配上上位机软件进行相关通信操作。
silicon lab公司提供了usbxpress的开发套件。通过使用usbxpress库,大大简化了usb固件程序和pc端驱动程序的开发。 usbx