摘要:介绍了一种高精度单通道16位并行输出a/d转换器ltc1606的功能特点和工作过程,给出了ltc1606与dsp芯片tms320lf2406a的硬件接口方法以及和数据采集相关的主要汇编源程序。
关键词:
1 ltc1606的主要特点
ltc1606是linear公司生产的具有采样保持功能的16位高速adc。该adc分辨率高,采样速率高、功耗小,可在高精度的数据采集系统中广泛应用。其主要特点如下:
●含有16位采样保持功能的模数转换器;
●250khz采样速率,信噪比达90db;
●信号输入范围为±10v;
●采用单5v电源供电,典型功耗为75mw;
●片内自带基准源,也可以外接基准源;
●片内自带同步时钟;
●采用28脚ssop封装;
●带有和mcu兼容的16位并行输出端口。
2 ltc1606的引脚介绍及使用说明
2.1 ltc1606的引脚介绍
ltc1606的引脚排列图如图1所示,各引脚功能及使用说明如下:
vin:模拟量输入端,使用时应通过200ω的电阻连接到需转换的模拟输入,满量程为±10v;
agnd1、agnd2:模拟地;
ref:2.5v基准源输入端,通常接2.2μf的旁路钽电容,也可以接外部基准源;
cap:基准缓冲输出,应接10μf电容旁路到地;
d15~d8:三态数据输出端,当cs为高或r/c 为低时,输出为高阻态;
dgnd:数字地;
d7~d0:三态数据输出端,当cs为高或r/c 为低时,输出为高阻态;
byte:字节选择端,当byte端接低电平时,d15~d0按16位并行输出数据;当byte端接高电平时,高8位和低8位分两次并行输出;
r/ c:read/convert输入端,当cs为低时,在 r/ c端的下降沿启动采样保持器并进行模数转换,并在r/ c的上升沿将使能数据输出;
cs:片选端,当r/ c为低时,在cs引脚的下降沿启动模数转换,当r/c 为高时,在cs引脚的下降沿使能数据输出;
busy:模数转换状态输出引脚。当进行模数转换时,该引脚输出低电平,当busy端产生一上升沿时,表示模数转换结束,数据输出端有效。当busy产生上升沿时,cs和r/ c必须为高;
vana:模拟5v电源输入端,接0.1μf的陶瓷电容和10μf的钽电容旁路到地;
vdig:数字5v电源输入端,使用时接到vana。
2.2 a/d转换的启动和数据读取
ltc1606在cs和r/ c脚的共同作用下,可在下述两种情况下开始一次a/d转换:一是当r/ c脚为低电平时,将在cs引脚的脉冲下降沿启动一次a/d转换。该负跳变脉冲至少应持续40ns,且 大脉冲宽度应不超过6μs。二是当cs引脚为低电平时,可在r/ c脚的脉冲下降沿启动一次a/d转换。这种方式对负跳变脉冲的要求与第一种情况相同。
在一次a/d转换启动后,busy脚将变为低电平并保持直至本次转换完成。当busy为低时,新的转换命令将不起作用。应注意的是,在busy变高之前,r/ c和cs必须变为高,否则将启动一次无效的转换过程。
ltc1606的转换结果以二进制补码的形式并行输出。转换结果可按字16位读取,也可按字节8位分两次读取。在一次转换完成之后,转换结果送入输出寄存器锁存。当且仅当r/ c为高电平而cs为低电乎时,转换结果才能被读取。
芯片转换结果输出线的高字节和低字节的位置可用byte脚电平的变化加以改变,这样ltc1606芯片与16位数据总线和8位数据总线的微处理器均能接口,可满足不同的应用场合,从而使ltc1606具有较广的应用范围。
3 高精度数据采集电路设计
tms320lf240x是德州仪器(ti)公司推出的基于c2xlp 16位定点低功耗的数字信号处理器系列,该系列可用于各种数字伺服控制和嵌入式控制系统。240x系列dsp芯片除具有dsp芯片共有的速度快的特点外, 大的特点是片上集成了大量的外围资源,主要包括双存取ram以及flash和两个事件管理模块eva、evb,在事件管理模块中主要有以下功能模块:定时器、pwm信号发生器、can现场总线接口、sci串行通信接口、看门狗定时器以及通用的双向数字i/o端口等。
笔者在研究海洋重力传感器的信号提取过程中,为了实现高精度的信号采集进行了大量的数据处理运算,并且以此为基础实现了伺服控制。应用时采用tms320lf2407a作为这个系统的主控芯片,通过ltc1606实现对模拟信号的采集和模数转换,图2所示为数据采集部分的电路原理图。
在图2所示的电路中,在5v供电的ltc1606和3.3v供电的tms320lf2407a之间加上了两片16位的总线驱动器。这样,ltc1606接地可使其工作在16位并行输出方式下,这样可以很方便地实现和16位dsp的接口设计。为使ltc1606的控制逻辑变得比较简单,可将cs接地。在这种情况下,如果r/ c引脚变低,ltc1606将对输入信号进行采样保持,并开始模数转换。而在模数转换过程中,busy将变低,直到转换结束,此时微处理器将从ltc1606的数据端口读出模数转换结果。
在用dsp对ltc1606进行控制时,可用dsp的一次“假写”操作将we引脚置低,并使ltc1606 r/ c引脚变低,从而启动ltc1606进行模数转换。在转换结束时,再由状态引脚busy的上升沿信号产生dsp的外部中断xint1所需的中断源信号,从而在dsp的中断程序中读出模数转换结果,并进行相应处理,然后启动下一次模数转换。值得注意的是,tms320lf2407a的xint1外部中断的极性是可编程的,在该系统中,必须将其编程为上升沿触发。
图3所示为tms320lf2407a控制ltc1606进行一次模数转换的时序图,在编制tms320lf2407a的数据采集程序时,采用汇编语言具有较高的效率,下面给出和数据采集相关的初始化程序和读取模数转换结果的中断子程序:
(1) 数据采集初始化子程序
adinit
setc intm ;关总中断
clrc sxm
clrc ovm
clrc cnf ;b0区被配置为数据空间
splk #0e8h,wdcr ;不使能wdt
ldp #0e1h
lacl mcra
or #04h
sacl mcra ;配置串行口引脚为特殊功能:xint1
ldp #0e0h ;指向7000h~7080h区
splk #0005h,xint1cr ;使能xint1中断,并将xint1设为高优先级,同时使其在上升沿时产生中断
ldp #0h
splk #0001h,imr ;使能中断第1级int1
splk #0ffffh,ifr ;清全部中断标志
clrc intm ;开总中断
ret
(2) 据采集中断子程序
gisr1: ;优先级int1中断入口保护现场
ldp #0e0h
lacc pivr,1 ;读取外设中断向量寄存器(pivr),并左移一位
add #pvectors ;加上外设中断入口地址
bacc ;跳到相应的中断服务
子程序
adread_isr: ;读取模数转换结果中断程序
ldp #0h
in adresult,0ffffh ;读取a/d转换结果,将其存于变量adrerult中
call datamanage ;调数据处理函数
ldp #0h
splk #0fh , startad
out startad , 0fffeh ;启动a/d转换
clrc intm ;开总中断,因为一进中断就自动关闭总中断
ret ;中段返回
4 结束语
由模数转换器ltc1606和tms320lf2407a构成的数据采集电路中,其外围电路和接口均很简单,利用ltc1606的高分辨率和dsp的高速性能可满足高精度的数据采集要求,并能完成大量复杂的数据处理工作,从而兼顾了数据采集处理的高精度和高速性,因此,具有广泛的适用范围。