嵌入式
返回首页

基于DSP的高速数据采集系统设计方案

2010-11-18 来源:电力科学与工程

 引言

    近年来,高速数字信号处理器(DSP)已越来越广泛地用于各个领域,例如:通信、语音处理、图像处理、模式识别及工业控制等方面,并且日益显示出巨大的优越性。数字信号处理器是利用专门或通用的数字信号处理芯片、以数字计算的方法对信号进行处理,具有处理速度快、灵活、精确抗干扰能力强、体积小、可靠性高等优点,满足了对信号快速精确实时处理及控制的要求。

    通用串行总线USB(Universal Serial Bus)具有连接灵活、可热插拔、一种接口适合多种设备、速度高、自动配置、无需定位及运行安装程序、可为外设提供电源、低功耗、低成本、高可靠性等优点使数据的高速传输变得非常便利。

    设计一种通用数据采集与信号处理系统,采用高性能的TMS320F2812 芯片和USB总线传输技术,使信号能实时送到上位机进行分析与处理,从而实现高速的数据采集和处理功能。

1、系统概述

    该系统的工作过程主要是将外部的八路同步模拟输入信号经过A/D  转换器进行采样和转换,并把采集得到的大量数据送入DSP 内部对采样结果进行软件滤波以及前端处理。在DSP 完成采集数据的处理工作后,将处理结果经过USB 总线送至主机,进行实时的后端分析处理和显示。

    结构框图如图1 所示,MAX1308 为MAXIM 公司生产的模/数转换器,其采样最高速率为单通道1075kSPS,8 通道为456kSPS ,精度为12 位,为8 通道同步采样。采用TI 公司的TMS320F2812 作为处理器,其时钟频率最高为150MHz,是目前控制领域性能最高的处理器,具有精度高、速度快、集成度高等特点,为不同控制领域提供了高性能的处理器。USB  接口芯片采用的是CH372 ,具有8 位数据总线和读、写、片选控制线以及中断输出功能,可以方便地挂接到DSP 控制器的系统总线上。利用VC++ 实现了USB 和计算机的高速数据通信,充分利用了计算机的存储容量大等特点,可将采集到的数据存储起来供事后分析,也可以实现数据的实时处理。

 

图1 系统框图

 2、系统硬件

2.1 TMS320F2812

     C281x 系列DSP 是TI 公司最新32 位定点数字信号处理器,是基于TMS320C2000 数字信号处理器平台开发的,其代码与24x/240x 数字信号处理器完全兼容。因此,240x 的用户能够轻松的移植到C281x系列DSP 平台上,C281x 系列DSP 同时具有数字信号处理器和微控制器的特点,尤其是C281x 继承了数字信号处理器的诸多优点,其中包括可调整的哈佛总线结构和循环寻址方式。微控制器的特点主要包括字节的组合与拆分、位操作等。哈佛总线结构能够完成指令的并行处理,在单周期内通过流水线完成指令和数据的同时提取,从而提高了处理器的处理能力。

     C281x  处理器采用C/C++ 编写的软件,其效率高,因此用户不仅可以应用高级语言编写系统程序,也能够采用C/C++ 高效率的数学算法。C281x  系列数字信号处理器在完成数学算法和系统控制等任务时都具有较高的性能,这样就避免了用户在一个系统中需要多个处理器的麻烦。C281x 处理器内核包含了一个32×32  位的乘法累计单元,能够完成64 位的数据处理能力,从而使该处理器能够实现更高精度的处理任务。

 2.2 USB接口

     USB 通用接口芯片可分为3 种。一种是专门为USB 应用设计的USB 芯片,一种是建立在现有芯片系列基础上的USB 芯片,还有一种是只处理USB 通信,必须被一个外部微控制器所控制的USB 芯片。该设计采用CH372属于最后一种。

     CH372 内置了USB 通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH372 自动处理默认端点0 的所有事务,本地端DSP 只要负责数据交换,所以DSP 程序非常简洁。在外置固件模式下,由外部DSP 根据需要自行处理各种USB 请求,从而可以实现符合各种USB 类规范的设备。

  CH372  与 TMS320F2812 之间以非总线方式连接,连接框图如图2  所示。CH372  的8 位数据口D0 ~D7 分别挂在TMS320F2812 的GPIOA0 ~ GPIOA7 准双向I/O 口上,命令数据地址选择端A0,读信号选择端RD,写信息选择端WR 和中断输出端INT 分别与TMS320F2812的GPIOA9、GPIOA10、GPIOA11 和GPIO8(CAP1)相连,片选引脚CS 接地。

 

2.3 AD 转换器

    该系统采用MAXIM  公司的MAX1308 型号的AD 转换器,MAX1308  独立的采样保持(T/H)电路为每个通道提供同时采样,MAX1308 提供±5V 输入范围,输入故障容限为±16.5V。其ADC 在0.9µs 内完成2 个通道的转换,在1.98µs 内完成多达8 个通道的转换,8 个通道转换时每通道吞吐率为456kSPS。其他特性包括20MHz 的T/H 输入带宽、内部时钟、内部(+2.5V)或外部(+2.0V 至+3.0V)基准以及低功耗省电模式。20MHz、12 位双向并行数据总线用来提供转换结果,并可接受数字输入分别激活每一路通道。工作在+4.75V 至+5.25V 模拟电源与+2.7V 至+5.25V 数字电源下,全速运行时,总电源电流为57mA,工作温度为-40℃至+85℃扩展温度范围。

3、软件设计

    该数据系统的软件由USB 驱动程序、DSP 程序和PC 机应用程序3 大模块构成。

3.1 USB 驱动

    USB 设备驱动是应用程序和硬件之间的接口,起着承上启下的作用。CH372 套件包括CH372 芯片和计算机端的CH372 驱动程序。在本地端,CH372 芯片以内置的固件程序自动处理了USB 通讯中的基本事务;在计算机端,驱动程序以及动态链接库等软件向计算机应用层提供应用层接口。

    它内部提供API 函数供应用程序使用,以实现对USB 设备的打开、关闭、读写等操作。此设计中USB 设备驱动采用USB 芯片厂商提供的驱动程序CH372DRV.EXE,安装驱动程序CH372DRV.EXE 后,在应用程序中调用动态链接库CH375DLL.DLL 提供的API 函数来打开、关闭、和读写USB 设备。

    DSP  和USB  芯片通信时,CH372 芯片占用两个地址位,当A0 引脚为高电平时选择命令端口,可以写入命令;当A0 引脚为低电平时选择数据端口,可以读写数据。DSP 通过8 位并行口对CH372 芯片进行读写,所有操作都是由一个命令码、若干个输入数据和若干个输出数据组成,部分命令不需要输入数据,部分命令没有输出数据。命令操作步骤如下:

①、在A0=1 时向命令端口写入命令代码;

②、如果该命令具有输入数据,则在A0=0 时依次写入输入数据,每次一个字节;

③、如果该命令具有输出数据,则在A0=0 时依次读取输出数据,每次一个字节;

④、命令完成,可以暂停或者转到①继续执行下一个命令。

    CH372 芯片专门用于处理USB 通讯,在接收到数据后或者发送完数据后,CH372 以中断方式通知DSP 进行处理。DSP 通过CH372 芯片接收数据的处理步骤如下:

①、当CH372 接收到USB 主机发来的数据后,首先锁定当前USB 缓冲区,防止被后续数据覆盖,然后将INT 引脚设置为低电平,向DSP 请求中断;

②、DSP 进入中断服务程序,首先执行GET_STATUS 命令获取中断状态;

③、CH372 在GET_STATUS 命令完成后将INT 引脚恢复为高电平,取消中断请求;

④、由于通过上述GET_STATUS 命令获取的中断状态是“下传成功”,所以DSP 执行RD_USB_DATA命令从CH372 读取接收到的数据;

⑤、CH372 在RD_USB_DATA 命令完成后释放当前缓冲区,从而可以继续USB 通讯;

⑥、DSP 退出中断服务程序。

    DSP 通过CH372 芯片发送数据的处理步骤如下:

①、DSP 执行WR_USB_DATA 命令向CH372 写入要发送的数据;

②、CH372 被动地等待USB 主机在需要时取走数据;

③、当USB 主机取走数据后,CH372  首先锁定当前USB  缓冲区,防止重复发送数据,然后将INT引脚设置为低电平,向DSP 请求中断;

④、DSP 进入中断服务程序,首先执行GET_STATUS 命令获取中断状态;

⑤、CH372 在GET_STATUS 命令完成后将INT 引脚恢复为高电平,取消中断请求;

⑥、由于通过上述GET_STATUS 命令获取的中断状态是“上传成功”,所以DSP 执行WR_USB_DATA命令向CH372 写入另一组要发送的数据,如果没有后续数据需要发送,那么DSP 不必执行WR_USB_DATA 命令;

⑦、DSP 执行UNLOCK_USB 命令;

⑧、CH372 在UNLOCK_USB 命令完成后释放当前缓冲区,从而可以继续USB 通讯;

⑨、DSP 退出中断服务程序;

⑩、如果DSP 已经写入了另一组要发送的数据,那么转到②,否则结束。

3.2 DSP 程序

    DSP 程序是设计中很重要的组成部分,主要分为DSP 和USB 转换芯片之间的通讯以及DSP 和数据采集芯片MAX1308 之间的通信。当计算机每次下传数据块或DSP 上传数据块成功时,DSP 的外部捕获中断CAP1就会收到CH372 的中断请求信号。当DSP接收到计算机传输过来的采样命令后就启动MAX1308进行数据采集,根据计算机要求设置采样频率和采样通道数目,采样完成后,将数据一并打包传给计算机。

    DSP和采集芯片的连接采用的是总线连接方式,进行数据采集时,DSP通过总线的D0–D7 写配置寄存器可以激活相应通道。配置寄存器中的位直接映射到相应通道,D0 控制通道0,D7 控制通道7 。把任意一位设为高电平,将激活相应的输入通道;同样,把任意一位设为低电平,将禁用相应通道。对少于8通道的器件,其中几位没有任何功能。写配置寄存器时,将CS和WR 设为低电平,然后将D0–D7 位装载到并行总线,再将WR 置为高电平。数据在WR 的上升沿锁存。在转换时序的任意时刻都能够对配置寄存器进行写操作。上电时,在启动转换之前写入配置寄存器,以选择有效通道。

     内部时钟模式下启动一次转换,需在采样时间内将CONVST 置为低电平。当CONVST 为低电平时,T/H 捕获信号,在CONVST 的上升沿转换开始。一旦能够读取转换结果,转换结束信号(EOC)将给出一个低电平脉冲。当最后一个通道的转换结果可以被读取时,最后转换结束信号(EOLC)跳变到低电平。

     在EOLC 的下降沿,DSP 将CS 和RD 置为低电平,把第一个转换结果置于并行总线。RD 连续的低电平脉冲将转换结果顺次放到总线上。时序中最后一个转换结果读取后,额外的读脉冲可以使指针重新指向第一个转换结果。

3.3 计算机应用程序

    计算机应用程序主要完成数据的人机交互功能,用户通过应用程序配置监测系统、控制数据采集的过程和显示采集的数据。

 4、结论

    本系统采用DSP 和MAX125 进行数据采集,通过USB 进行数据传输。对单路的数据采集,可以实现800kSPS 的实时数据传输,8 路同步采集可以实现400kSPS 的实时数据传输。该系统的使用方法简便、快捷、实时监测性好,可扩展性良好,抗干扰能力强。适当地改进硬件电路和程序就可以对更多采集点进行采集和监测。基于USB 和单总线的便携式监测,必将被众多领域广泛应用。

进入嵌入式查看更多内容>>
相关视频
  • PX4固件二次开发课程

  • RISC-V嵌入式系统开发

  • NuttX Workshop 2024

  • 自己动手写操作系统

  • SOC系统级芯片设计实验

  • 自己动手做一台计算机

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章