ADS8364 与TMS320LF2407 的接口及应用
2008-08-06
作者:刘 钊 刘和平 王春燕
摘 要:介绍了A/D" title="A/D">A/D转换芯片ADS8364与数字信号处理器芯片TMS320LF2407的接口技术及其工程应用。给出了硬件接口电路" title="接口电路">接口电路及软件编程方法。
关键词:同步采集 ADS8364 TMS320LF2407DSP
电力系统配网自动化是一个庞大、复杂、综合性的系统工程,如何将配电网在正常及事故情况下的监测、保护、控制有机地融合在一起,提高供电质量,是电力系统微机保护的一个重要课题;而对配电网的电压、电流参数进行快速、准确地采集,及时反映配电网的故障状态并进行相应处理,是配电系统微机保护的首要任务。使用美国德州仪器公司(TI)推出的ADS8364 A/D芯片与TMS320LF2407 DSP芯片构成控制系统是一个较好的解决方案,现已将其成功应用到配电网中。
本文在简介ADS8364和TMS320LF2407的功能、性能和特点的基础上,介绍ADS8364与TMS320LF2407的硬件接口电路和软件编程方法。
1 ADS8364介绍[1]
ADS8364是TI公司推出的专为高速同步数据采集系统设计的高速、低功耗、6通道同步采样的16位A/D转换芯片,共有64个引脚,大致可以分为两类,各引脚功能如表1所示。
ADS8364有6个模拟输入通道,分为A、B、C三组,每组包括2个通道,启动A/D转换。模拟量的输入采用差分方式,可以抑制共模干扰。模拟电源为单+5V供电,将ADS8364的REFin和REFout引脚接到一起可以输出+2.5V的参考电压提供给差分电路。ADS8364的时钟信号" title="时钟信号">时钟信号由外部提供,转换时间为20个时钟周期,最高频率为5MHz,在5MHz的时钟频率下ADS8364转换时间为3.2μs,相应的数据采集时间为0.8μs,每个通道的总的转换时间为4μs,A/D转换完成后产生转换结束信号数字电源供电电压为3V~5V,即可以与3.3V供电的微控制器接口,也可以与5V供电的微控制器接口。A/D转换结果为16位,最高位为符号位,数据输出方式很灵活,分别由BYTE、ADD与地址线A2A1A0的组合控制,如表2所示。
从表2中可以看出,转换结果的读取方式有三种:直接读取、循环读取和FIFO方式。根据BYTE为0或者为1可确定每次读取时得到的数据位数,根据ADD为0或者为1可确定第一次读取的是通道地址信息还是通道A/D转换结果。表中的db15…db0表示16位数据,db7…db0表示16位数据的低8位,db15…db8表示16位数据的高8位,A2A1A0表示通道地址。
2 TMS320LF2407 DSP简介[2~4]
TMS320LF2407 DSP是TI公司C2000系列DSP 中的一款高性能芯片。具有以下几个方面的特点:
(1)资源丰富
具有多达41个的通用、双向数字I/O" title="I/O">I/O引脚;两个事件管理器EVA和EVB,包含了4个通用定时器、6个比较单元、6个捕获单元、12路PWM输出电路和4路正交编码脉冲电路;串行外设接口模块SPI可实现TMS320LF2407与其它SPI接口芯片之间的数据交换;串行通信模块SCI和CAN控制器可实现TMS320LF2407与PC机之间的数据交换;可变周期的看门狗定时器和基于锁相环的时钟模块提高了系统的适应性;片内2.5K字的RAM单元可以存放程序运行过程中的大量参数而无需外扩数据RAM,32K字FLASH为程序提供了较大的程序空间;具有六个可屏蔽的硬件中断源" title="中断源">中断源,通过DSP内核将这六个中断源加以扩展,可使每一个中断源同时挂接几个外部中断源,使得DSP能够处理的外设硬件中断将近50个,具有很强的事件处理能力。
(2)数据处理能力强且运算速度快
TMS320LF2407采用改进的哈佛结构,片内有六条独立、并行的数据和地址总线,极大地提高了系统的数据吞吐能力;32位的累加器、16位的硬件乘法器和输入、输出数据移位寄存器相结合能快速地完成复杂的数值运算;丰富的指令集系统、流水线的操作方式、33.3ns的指令周期使得系统的运行速度特别快,指令执行速度可达到30MIPS。
(3)功耗低
TMS320LF2407采用高性能静态CMOS技术,供电电压为3.3V,而且有多种低功耗工作模式,能充分而有效地降低系统功耗。
3 ADS8364与TMS320LF2407的接口电路及编程
由于ADS8364与TMS320LF2407都是TI公司提供的高速芯片,两者在速度上能够完全匹配,实现芯片间的无缝连接。图1是ADS8364与TMS320LF2407的接口电路图。
图中的PTout为模拟信号的输入,其电压范围为-5V~+5V,经过差分电路输入到ADS8364的模拟输入通道A0。ADS8364的BYTE和ADD引脚都接地,因此选择16位数据输出方式,并且对每个通道转换结果的读取通过地址线A2、A1、A0来选择。ADS8364的片选信号由TMS320LF2407的地址线A15、A14、A13和I/O空间选通因此ADS8364芯片地址所占用的是TMS320LF2407的I/O空间的低32K地址空间,与程序的调试和运行地址无关。为了实现ADS8364六个通道的同步采样,ADS8364的A、B、C三组启动控制信号同一I/O引脚控制,这样只要TMS320LF2407使该引脚有效就可以同时启动ADS8364的六个通道,从而实现六通道的同步采样。
ADS8364的时钟信号由TMS320LF2407的定时器4的周期PWM输出信号T4PWM提供,频率为4MHz。在DSP复位时,A/D芯片也复位。A/D转换结束信号接到DSP的外部中断引脚 XINT2,因此对A/D转换结果的读取可采用中断和查询两种方式,视编程和工程应用的具体要求而定。
由于ADS8364的转换速度很快,在启动A/D转换之后,只需等待5μs即可读取转换结果,因此采用等待方式,等待时间大于5μs即读数据。图2为定时器中断采样程序的流程图。
A/D采样在定时器1的周期中断中完成。TMS320LF2407通过ADS8364实现等间隔的采样程序如下:
(1)在头文件中定义
由16根地址线和确定的硬件I/O空间存储器,高3位(bit15~13)由74LV138的片选信号确定,低3位与ADS8364的相同(参见表2),其余10位(bit12~3)可忽略,本定义只给出了Ad_A0(0通道)和Ad_A1(1通道)的定义,其余A2~A5可参照定义,在程序中就可以象使用数据存储器一样使用定义的I/O空间存储器。
#define FCMR portFF0F /*Flash 控制方式寄存器*/
ioport unsigned int portFF0F; /*C2xx编译特定关键字*/
#define WSGR portFFFF /*等待插入状态寄存器*/
ioport unsigned int portFFFF; /*C2xx编译特定关键字*/
#define Ad_A0 port2000
ioport unsigned int port2000; /*定义AD采样通道A0*/
#define Ad_A1 port2001
ioport unsigned int port2001; /*定义AD采样通道A1*/
(2)主程序及中断程序(TMS320LF2407的C语言中断矢量表及头文件参见参考文献[3])
Main() /*TMS320LF2407主程序*/
{
asm(' SETC INTM'); /*禁止所有中断*/
asm(' CLRC SXM'); /*抑制符号位扩展*/
asm(' CLRC OVM'); /*累加器结果正常溢出*/
asm(' CLRC CNF'); /*DSP的B0配置为数据存储空间*/
SCSR1=0x81FE; /*对系统时钟进行4倍频,使其工作于24MHz */
WDCR=0xE8; /*关看门狗 */
WSGR=0x1C0; /*对访问IO空间插入等待状态 */
IFR=0xFFFF; /*清中断标志*/
IMR=0x2; /*使能中断INT2(定时器1的定时AD采样中断)*/
MCRC=MCRC&0xfeff; /*将IOPF0设为I/O口*/
PFDATDIR=PFDATDIR|0x0101; /* IOPF0设为输出,作为ADS8364的启动信号,初始时为1,不启动AD */
AD_Init(); /*调AD定时器1初始化子程序*/
asm(' CLRC INTM'); /*使能全局中断*/
while(1); /*程序进入循环,可在此添加用户处理程序*/
}
AD_Init() /*A/D初始化子程序*/
{
T4PR=5; /*使T4PWM输出频率为4MHz*/
T4CMPR=3; /*T4PWM的周期输出作为ADS8364的时钟信号 */
T4CNT=0; /*计数器清0*/
GPTCONB=0x48; /*使能所有通用定时器比较输出,高有效 */
T4CON=0x104a; /*使能定时器4比较操作*/
T1PR=0x3a90; /*使定时器1每0.625ms产生一次中断*/
T1CNT=0;
T1CON=0x100C; /*设置定时器1周期中断*/
EVAIMRA=0x80; /*使能定时器1周期中断*/
EVAIFRA=0x80; /*清定时器1周期中断标志位 */
T1CON=0x104C; /*启动定时器1*/
return;
}
T1_interrupt() /*定时器1周期中断程序*/
{
EVAIFRA=0x80; /*清定时器1的周期中断标志 */
T4PR=5; /*使T4PWM输出频率为4MHz*/
T4CMPR=3; /*T4PWM的周期输出作为ADS8364的时钟信号*/
T4CNT=0;
GPTCONB=0x48;
T4CON=0x104a; /*使能定时器4比较操作*/
PFDATDIR=PFDATDIR&0xfffe; /*IOPF0置低,启动A/D转换*/
asm(“ NOP”);
asm(“NOP”);
PFDATDIR=PFDATDIR|0x01; /*已启动A/D转换,IOPF0置高,本次不再启动A/D转换*/
asm(“RPT #120”); /*延时,大于5微秒,等待A/D转换结束 */
asm(“NOP”);
AD0=Ad_A0; /*读取6个通道的转换结果,分别存放在AD0~AD5的RAM中*/
AD1=Ad_A1; /*AD0~AD5为定义在TMS320 TMS320LF2407 RAM空间的变量*/
AD2=Ad_A2;
AD3=Ad_A3;
AD4=Ad_A4;
AD5=Ad_A5;
/* 可在此添加用户处理程序*/
return;
}
上面介绍的ADS8364与TMS320LF2407的接口电路已成功应用于电力系统配网自动化装置中。实践证明,该电路具有良好的抗干扰能力,A/D采样结果能很好地满足系统要求。
参考文献
1 ADS8364 250kHz, 16-Bit, 6-ChannelSimultaneous Sampling Analog-to-digital Converters.TI Company,2002
2 刘和平,严利平,张学锋. TMS320LF240x DSP结构、原理及应用.北京:北京航空航天大学出版社,2002年4月
3 刘和平,王维俊,江 渝. TMS320LF240x DSP C语言应用.北京:北京航空航天大学出版社, 2003
4 TMS320LF/LC240xA DSP Controllers Reference Guide: System and Peripherals. TI Company, April 2001