基于TMS320F2812及ADS8365的投注机数据采集设计

数字信号采集

8人已加入

描述

随着我国福彩事业的快速发展,电脑彩票销售系统对投注机运行的控制、遥测数据的采集提出了更高的要求。数据采集作为福彩销售系统实时控制、监测的前提环节,毫无疑问具有重要的作用。但在数据采集过程中,由于存在谐波等干扰因素,因此如何准确、快速地采集投注机中的各个模块的模拟量一直是销售系统研究中的热点。

近年来,各种集成DSP的性能得到很大的改善,价格大幅度下滑,越来越多的用户开始选用DSP器件来提高产品性能。本文基于ADS8365和TMS320F2812设计了一套信号采集电路,其接口电路简单,采集精度高,速度快,到了预期的目标。

1.TMS320F2812介绍

TI(德州仪器)主推高性能 TMS320C28x系列 TMS320F2812 32位定点微控制单元(MCU),主频高达150MHz; 具备I2C、SPI、CAN、PWM等总线接口,适用于各种控制类工业设备; 体积小、性能强、便携性高,同时适用于多种手持设备; 符合高低温、振动测试,满足工业环境应用。

2.ADS8365介绍

ADS8365是一种高速、低功耗、6通道同步采样与转换、单+5V供电的模数转换芯片。转换最大采样吞吐率可达5MHz,并带有80dB共模抑制的全插分输入通道以及6个差分采样保持放大器。引脚内部还带有2.5V基准电压和高速并行接口。

3.ADS8365与TMS320F2812的接口电路设计

由于ADS8365与TMS320F2812都是TI公司提供的高速芯片,两者在速度上能够完全匹配,实现芯片间的无缝连接。

PTout为模拟信号输入,其电压范围为-5V~+5V,经过差分电路输入到ADS8365的模拟输入通道A0。接口选择16位数据输出方式,因此ADS8365的BYTE和ADD引脚都接地。对每个通道转换结果的读取通过地址线A2、A1、A0来选择。ADS8365的片选信号由F2812的地址线A15、A14、A13和I/O空间片选线XZCS#经过74LV138译码产生,ADS8365芯片地址所占用的是F2812I/O空间的低32K地址空间,与程序的调试和运行地址无关。

为了实现ADS8365六个通道的同步采样,ADS8365的A、B、C三组启动控制信号HOLDA#、HOLDB#和HOLDC#由F2812的同一I/O引脚控制,这样只要F2812使该引脚有效就可以同时启动ADS8365的六个通道,从而实现六通道的同步采样。

ADS8365的时钟信号由F2812的定时器4的输出信号T4PWM提供,频率为3.75MHz。在DSP复位时,A/D芯片也复位。A/D转换结束信号接到DSP的外部中断引脚XINT2,因此对A/D转换结果的读取可采用中断和查询两种方式,视编程和工程应用的具体要求而定。

ADS8365采用+5V模拟电源(AVDD)和+5V数字电源(DVDD)供电,而其内部的缓冲器采用与F2812相同的+3.3V电压。缓冲器电压(BVDD)允许直接连接到3V或5V电压系统。F2812的I/O电压为+3.3V,因此,若使用该元件,ADS8365的BVDD必须设置3.3V。

4.TMS320F2812设置

(1)转换时钟设置在本系统中,用F2812的PWM2为ADS8365提供时钟信号,设置PWM2为全比较方式工作,输出高电平有效。设置F2812系统时钟SYSCLKOUT=90MHZ,则高速外围时钟HSPCLK=SYSCLKOUT/2=45MHz。设置通用定时器T1的周期寄存器值为12(T1PR=0x000c),比较寄存器的值设为6(T1CMPR=0x0006),因此,输出时钟频率为CLK=HSPCLK/T1PR=3.75MHz,符合ADS8365最大时钟频率为5MHz的要求。

(2)输出端口设置设置PWM1/GPIOA0、PWM3/GPIOA2为GPIO输出,GPIOA0用来控制ADS8365的RESET#信号,GPIOA2控制HOLDA#、HOLDB#和HOLDC#信号。端口E的XINT2_ADCSOC设置为中断输入信号

在ADS8365数据转换结束时,引脚EOC#变为低电平,触发XINT2#中断,进入中断服务程序,进行数据的读操作。ADS8365的片选(CS#)为高电平时,并行数据输出引脚D[15:0]处于高阻抗状态,为低电平时,并行数据线反映了输出缓冲器当前的状态。为了正确地将数据从ADS8365的并行总线上读出,必须设置为低电平。由于选择F2812的XZCS2#作为ADS8365的片选信号,故ADS8365地址映射到F2812的扩展总线存储空间XINTF Zone2上。用F2812的A9、A5、A3输出管脚控制ADS8365的A0-A2数据地址,如表1所示

TMS320F2812

5.数据采集过程

通过触发ADS8365的复位引脚为低电平,使读指针指向第一个读数位置。ADS8365的引脚REST#由GPIOA0控制。作为F2812初始化的一部分,GPIOA0最初为高电平,当系统时钟稳定后,被触发为低电平,从而确保了从ADC输出的数据按照通道A0、A1、B0、B1、C0、C1的顺序。

数据采集HOLDX#是有源低电平采样触发器。在ADS8365的HOLDX#保持至少20ns的低电平时,转换开始。将三个HOLD信号都连接到GPIOA2,可使各个通道的采样保持放大器同时处于保持状态,从而使各个通道同时开始转换。

当转换结果被存到输出寄存器后,引脚EOC#将保持半个时钟周期的低电平。另外,通过设置RD#和CS#为低电平,可以使数据读出到并行输出总线。读(RD#)和写(WR#)为有源低电平输入信号。当CS#为低时,在RD#下降沿更新ADS8365的输出缓冲。这就意味着在每个读序列之前,RD#信号必须被触发一次,只有这样,才可以读取新采集到的数据。其读时序图如图2所示。

TMS320F2812

图2读ADS8365时序图

6.软件设计

为了便于调试和维护,软件设计遵循模块化,自顶向下,逐步细化的编程思想。软件采用C语言和汇编语言混合编程。系统上电复位后,首先按照所选定的模式自举加载程序,跳转到主程序入口,然后进行相关变量、数据缓冲区、控制寄存器、状态寄存器的初始化。复位并初始化外部的ADS8365后,等待外部中断,在中断服务子程序中将A/D转换后所得数据读入所分配的数据缓冲区,F2812为定点DSP,为了提高运算的精度和速度,软件设计中充分利用TI公司提供的IQmath Library以实现浮点运算与定点程序代码的无缝接口,简化了程序的开发,并大大提高了程序运行的实时性。其主要代码如下(以CHA0为例):

void main(void)

ptrCHA0=(int*)CHA0;InitSysCtrl();

InitGpio();

ResetADS8365();

DINT;

PieCtrlRegs.PIEIER1.bit.INTx5=1;

XIntruptRegs.XINT2CR.all=0x0000;read_A();

XIntruptRegs.XINT2CR.all=0x0001;

PieCtrlReg.PIEACK.all=0x0001;return;

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分