0

关于投票
16位高速A/D转换器在高速DSP处理器中的应用(转帖)

16位高速A/D转换器在高速DSP处理器中的应用

武汉高压研究所华电公司 武汉材料保护研究所
张蓬鹤 米德伟

摘要:介绍美国BURR-BROWN公司推出的100KHZ采样速率转换器ADS7805的性能特点、引脚功能,描述了ADS7805同DSP的一种简洁、新颖的接口方法,同时用C语言编写了的数据采集的应用程序。

Abstract: The features and pin description are presented in this paper about ADS7805 from BURR-BROWN Corporation in USA .The connection and procedure of ADS7805 and DSP are also given.

关键词: 模/数转换 接口 ADS7805
Keywords: A/D convert interface ADS7805

由于DSP有先进的并行结构使其特别适合于信号处理,故已经越来越多的应用于工业控制领域和各类仪器仪表的开发设计。而在用数字信号微处理器构成的智能仪器仪表中,外部的各种模拟信号必须通过A/D转换器变换为数字信号后才能送入微处理器芯片。而BB公司的高精度转换器ADS7805具有较高的性能价格比,最高的转换频率可达100KHz,在仪器仪表中得到广泛的应用。ADS7805芯片有28脚双排直插式或贴片式封装,只需单端5V电源供电即可正常工作;芯片内部含有采样保持、电压基准和时钟等电路,极大简化用户的电路设计,同时提高了系统的稳定性。ADS7805采用CMOS工艺制造,功耗低(最大功耗为100mW),单通道输入,模拟输入电压的范围为±10V,采用逐次逼近式工作原理,转换结果由16位数据线并行输出,启动转换和读取上次转换的结果可以同时进行。

1、引脚及功能
ADS7805共有28个引脚,图1为其引脚图。这些引脚大体可以划分为3类。

i. 电源类

数字电源Vdig(28脚)和模拟电源Vana(27脚)通常一起接到5V电源上;数字地DGND(14脚)和模拟地AGND1(2脚)、AGND2(5脚)通常共地;参考电压端REF(3脚)对地接2.2μF钽电容,则芯片内部就会产生2.5V基准电压;参考电容端CAP(4脚)对地接2.2μF钽电容。

ii.信号类

模拟信号输入端Vin(1脚);D15~D8(6脚到13脚)与D7~D0(15脚到22脚)为数字信号并行输出口。

iii.控制信号类

片选信号输入端/CS(25脚);读取结果/模数转换控制信号输入端R/C(24脚);转换结果指示输出端/BUSY(26脚);控制从总线读出的数据是转换结果的高字节还是低字节信号输入端BYTE(23脚)。

2、 启动A/D转换和读取转换结果

美国BB公司生产的ADS78XX系列A/D转换器的启动转换和读取转换结果的时序都比较特别,且大致相同,ADS7805的转换时序图如图2所示。

首先要在R/C引脚输入一个低电平信号,此低电平信号的持续时间要求在40~7000ns之间;这时BUSY引脚电平被拉低表示正在进行转换,在经过了大约8μs(即为/BUSY信号保持低电平的时间)以后,转换完成,BUSY引脚电平相应变高;再把R/C脚电平拉高,此时ADS7805就会将转换结果输出到数据总线上。虽然转换结果为16位,但对于具有16位数据总线的DSP微处理器而言,不必分两次读入,故可将BYTE脚从始至终同一信号电平,当BYTE脚为高电平时,Pin6~13输出低字节,Pin15~22输出高字节;反之当BYTE脚为低电平时,Pin6~13输出高字节,Pin6~13输出低字节。如果用/CS引脚来控制ADS7805的转换,其时序同R/C引脚相似,故这里就不详细说明。ADS7805转换得到的数字结果是以补码形式给出的,现给出其理想的数据转换表,表1所列即为ADS7805的模拟电压与其补码形式的数字输出关系, -10V~9.99512V为量程

表1 模拟电压输入和数字信号输出关系

点击看大图

3、 与DSP的接口

TI公司的16-bit定点DSP TMS320F206,是一种低功耗器件,采用了改进的哈佛结构,有1条程序总线和3条数据总线,流水线操作,有高度并行32-bit算术逻辑单元、16*16-bit并行硬件乘法器、片内存储器、片内外设和高度专业化的指令集。当TMS320F206外接16MHZ的晶振,工作时钟控制模式选为×1时,可以将ADS7805的/CS脚接到DSP的/RD信号引脚,但为了减少控制线,可以将/CS引脚直接接成低电平,R/C引脚接到DSP的扩展输出口,而/BUSY信号只需连接到普通的端入端口即可,如DSP的IO口、扩展芯片74LS244的输入口等。图3是一个ADS7805与TMS320F206的典型接口电路。

4、 C语言程序设计

TMS320F206的用户可以用汇编语言或C语言进行源程序的编写,而C语言开发出的系统易于维护,可靠性高,可移植性好,故下面介绍用C语言编写的ADS7805的开发程序。

源程序如下:
#include
#include
ioport unsigned int port90ac;
ioport unsigned int porte0f7;
#define ic273n port90ac
#define ads7805 porte0f7
#define Wait asm(" nop ");
int i, ia[8]; double bv_coil,IA;
reg_aspcr=0x0e00; reg_iosr=0x0000;
asm( " clrc intm ");
ic273n=0x0008; Wait;
for(i=0;i<=7;i++)
{ ic273n=0x0000;
while ((reg_iosr&0x0004)==0x0004)
{ if (adt> 2; return();)
ic273n=0x0008; Wait;
ia[i]=(int)(ads7805&0xffff); }
IA=0;
for (i=0;i<=7;i++)
{ if ia[i]<32767 pr[i]=((double)(ia[i]))*0.000305185;/*10/32767=0.000305185*/ else
pr[i]=((double)(ia[i]-65535))*0.000305185;
IA=IA+pr[i]*pr[i]; }
bv_coil = sqrt(IA/8);

5、 结束语
ADS7805为16位的A/D转换器,它不仅分辨率高、转换速度快,而且接口简单方便、应用灵活,因而具有广泛的应用前景。笔者在GKNDC-H型高压开关特性精密测量仪中就使用了ADS7805,并取得了很好的测量效果。


系统分类: DSP
用户分类: DSP206
标签: 无标签
来源: 转贴
发表评论 阅读全文(196) | 回复(0)

0

关于投票
TMS320F206的中断技术及其实现(转帖)
摘要:TMS320F206是德州仪器公司定点DSP芯片中具有代表性的一种,在介绍其特点和中断技术的基础上,重点阐述了该芯片在软件开发过程中中断技术是如何实现的。
   关键词:TMS320F206 DSP 中断
以信息高速公路为标志的信息化,已成为社会发展的大趋势,并在逐步成为现实。信息化是数字化为背景的,而数字信号处理技术则是数字化最重要的基本技术之一。在过去短短的十几年里,各种集成化的单片数字信号处理器(DSP)的性能得到了很大的改善,软件开发工具越来越多,也越来越好;而价格却大幅度下降,从而使得数字信号处理器件及技术更容易使用,价格也能够为广大用户接受。从市场上各种DSP产品来看,德州仪器公司产品占据半壁江山,特别是TMS320系列,本文讨论的TMS320F206就是这个系列中的定点数字信号处理芯片。
1 TMS320F206的结构特点
TI公司的TMS320F206芯片是采用静态CMOS集成电路工艺制造的。结构设计建立在TMS320C20X芯片的基础上,只需5V的低电压就可运行。它的先进的哈佛结构、片内外设、片上内存以及丰富的命令集使它的速度和可靠性大大提高。
点击看大图
    TMS320F206的主要特点有:
(1)32K×16字的FLASH EEPROM大大降低了开发成本;
(2)采用了100线TQFP的封装技术;
(3)64K字的程序存储空间、64K字的数据存储空间和64K字的I/O空间,通过三条并行总线(PBA、DRAB、DWAB)独立操作。所以可以同时访问程序空间和数据空间,在一个指定机器周期内,可央算术逻辑单元可执行多达三次的并行存储器操作;
(4)片上4.5K的RAM使得芯片可以实现快速的DSP计算,并使大部分运算能够在一个指令周期内完成;
(5)丰富的指令集和灵活的寻址方式;
(6)有四条流水线操作和九级可断,并且大多数可断用户可以屏蔽,可以通过软件的方式灵活控制。
点击看大图
2 TMS320F206的可断
在TMS320F206的程序空间可,可断向量占据了00~3fh的位置,并且中断的优先级也是固定的,所以在编程开发时先要编好一个中断向量表,对于没有用到的中断也应该编上,并让它返回到一个空位置,以免发生意外情况。TMS320F206的中断有许多特殊的地方,如HOLD和INT1共用一个中断向量,INT2与INT3也共用一个中断向量。如果在实际应用中用到的中断比较多时,那么控制中断就是一件比较难的事,此时就要对它的三个中断寄存器灵活运用。下面就来介绍这三个寄存器。
(1)16位的中断标志寄存器(IFR),地址为0006h,各位情况如图1所示。当有一个可并蔽中断到达CPU时,IFR的相应标志位就置1,这表明相应中断正在被挂起或正在等待响应。将1写入到相应的标志位,可清除相应的位并清除其中断请求。
在图1中,0表示一般情况下读的数为0,R表示读,W1C表示写1时把这位清为0。-0表示复位后这位为0。
点击看大图
    (2)16位的中断屏蔽寄存器(IMR),地址为0004h,各位情况如图2所示。它用来屏蔽外部和内部硬件中断(NMI和RS除外)。当要屏蔽某硬件中断时,就把相应位清0当要开放某硬件中断时,就把相应位置1,并且它的每一位不受硬件复位的影响。
在图2中,0表示一般情况下读的数为0,R表示读,W表示写,-0表示复位后这位为0。2位是定时器中断,该位为1表示开放定时器中断。
(3)16位的中断控制寄存器(ICR),地址为0FFECh,各位情况如图3所示。主要用来控制HOLD/INT1和INT2/INT3。
在图3中,0位为0时表示屏蔽中断2(INT2),0位为1时表示开放中断2;1位为0时表示屏蔽中断3(INT3),1位为1时表示开放中断3;2、3位分别为INT2、INT3的标志位,当其为1时表示对应的中断有中断请求;4位1时表示单边沿触发模式,INT1引脚下降沿到来时,向CPU发出中断请求,用于INT1中断。4位为0时表示双边沿触发模式,这种模式适用于HOLD操作。
此外,TMS320F206还有两个不能由这三种寄存器来操作和控制的中断,即:
(1)RS(Reset),RS上一旦有请求,将中止程序的流程,使程序执行重新从程序存储器地址为0000h处开始执行。
(2)NMI,当NMI引脚激活时,程序将强行转移到中断向量在24h的位置,并且其它可屏蔽中断都将禁止。所以当NMI引脚不用时,通常应把它到高电平,发免发生意外情况。

3 TMS320F206的中断实现
在应用实际中,让INT2引脚测交流电压频率和相位而交流电流相位则由INT3引脚来测量,并计算电压、电流间的相位差。在本实例中,中断信号均采用过零信号,定时器的中断向量为timer,INT2/INT3的中断向量为intp2(中断向量表略)。
主程序流程图中图4所示。
主程序如下:
start:nop
setc intm ;禁止所有中断
splk #0ffffh,ifr ;清中断标志
splk #2h,imr ;清中断标志
splk #2h,imr ;清INT2,INT3的屏蔽位
splk #1h,60h
out 60h,0ffech ;仅开INT2
splk #0h,61h
splk #0f9fh,62h ;设置定时器
out 61h,0fffah
out 62h,0fff9h
clrc intm ;开中断
wait:idle
b wait1 ;等待中断
中断INT2/3服务程序(intp2)流程图如图5所示。
中断INT2/3服务程序(intp2)如下:
Intp2: setc intm ;进入INT2,INT3中断服务程序。
…… ;根据控制字判断是进入频率测试子程序还是进入相位测试子程序
bond intp23,tc
b intp 21
intp23: in 60h,0fffech ;读控制字ICR
bit 60h,13
sst #1h,62h
bit 62h,4 ;判断是INT2还是INT3
bcnd intp22,tc 中断
点击看大图
    b intp31
intp22:splk #0002h,60h ;INT2服务程序
out 60h,0ffech ;开INT3中断
splk #0c29h,63h
out 63h,0fff8h ;启动定时器
splk #0002h,ifr ;清INT2/INT3的标志位
clrc intm ;开中断
ret
intp31:setc intm ;INT3服务程序
splk #0412h,64h
out 64h,0fff8h ;停止定时器
splk #0002h,ifr ;清INT2/INT3的标志位
clrc intm
ret
in 65h,0fffah ;读定时器的时间
…… ;计算相位
intp21:setc intm ;判断中断次数,第一次开
…… ;定时器,第二次关定时器
bchd stoptimerl,ntc
out 63h,0fff8h ;启动定时器
splk #0002h,ifr ;清除INT2/3标志
clrc intm ;开中断
ret
stoptimer1:splk #0412h,64h
out 64h,0fff8h ;关定时器
…… ;计算频率
b $ ;等待
定时器中断服务程序(timer)流程图如图6所示。
timer: lacl 73h ;定时器中断服务程序
…… ;据控制字判断是进入频率测试子程序还是进入相位测试子程序。
cmpr 0
bcnd timer2,tc
b timer1
timer1:lacl 69h ;频率定时器服务子程序
add #1h
sacl 69h
splk #4h,ifr ;清除定时器标志
clrc intm
ret
timer2:lacl 69h ;相位定时器服务子程序
add #1h
sacl 69h
splk #4h,ifr ;清定时器的标志位
clrc intm
ret ;中断返回
(综合电子论坛)
系统分类: DSP
用户分类: DSP206
标签: 无标签
来源: 转贴
发表评论 阅读全文(190) | 回复(2)

0

关于投票
TMS320F206的仿真调试(转帖)
前言
  TMS320F206(以下简称F206)是C2XX系列DSP中的一个产品,其独有的片内32KB的闪速存储器FLASH使其仿真调试与众不同。F206带有程序、数据和I/O三个相互独立的存储空间,每个存储空间均为64K×16位,其中片内双访问RAM为544字(288字用于数据,另256字可用于程序/数据),片内FLASH为32K字,片内单访问RAM为4.5K字,其具体分布如表1所示。

F206的仿真调试
● F206仿真调试的特点
  F206的仿真调试器没有采用传统的插入仿真的方法,而是通过仿真器与DSP芯片上的几个仿真引脚间通信实现,F206具有符合IEEE1149.1标准的JTAG逻辑扫描电路,扫描仿真不仅克服了因仿真电缆过长而引起的信号失真,而且克服了传统单片机“插入式”仿真方式脱机运行时就出错的缺点。利用闻亭公司生产的EPP_XDS510仿真器进行系统的在线仿真调试,其一端与计算机的并口相连,另一端通过一双列14脚的仿真插头与F206通信。
● 问题的提出
  如果所要进行仿真的硬件装置没有外部存储器,此种情况下如何实现仿真呢?若将程序完全定位至8000H开始的片上SARAM内,则与F206中断向量表应该定位至0000H相矛盾,从而中断进一步程序将不可能正确运行;若将程序完全定位至0000H开始的FLASH内,虽保证了中断进一步程序可以正确运行,但是由于在FLASH内无法设置断点,所以此种情况下不能顺利进行仿真调试;若将中断向量表定位至0000H的FLASH内,将程序的其他部分定位至8000H内,可以保证中断进一步程序的正确执行,也可以在SARAM内设置断点,似乎是一种可行的方法,但是程序每改动一点,也就意味着中断向量表也要做相应的修改,即要再次将中断向量表烧写到FLASH内,不仅麻烦而且对FLASH也有损伤。
● 问题的解决
  针对以上种种方案存在的弊端,笔者提出了一种行之有效的解决办法,那就是将中断向量表和程序都定位至8000H开始的SARAM内,而在0000H烧写进一定的跳转语句,这样既保证了中断的正确执行,程序断点的调试,同时对FLASH也只要进行一次烧写即可。
  首先完成跳转语句的烧写。F206的FLASH烧写必须具备如下几个前提:FLASH烧写工作只能在WIN98操作系统下完成,在WIN2000操作系统下将会显示窗口初始化失败,被强行关闭;时钟频率必须为20MHz。
  相应的CMD文件为:
MEMORY
{ PAGE 0: VECB :org= 0000h,length=40h
......
PAGE 1:
......
}
SECTIONS
{ vectorb : {} > VECB PAGE 0
......
}
  相应的vectorb的程序为如下。
*File: vectorb.h *
*File defines Interrupt vector labels *
.global _c_int0
.global _c_int1
.global _c_int2
.global _c_int3
.sect "vectorb"
b 8000h ;硬件复位c_int0
b 8002h ;外部中断1 /INT1
b 8004h ;外部中断2 INT2/INT3
b 8006h ;定时器中断
nop
nop
b 8000h
b 8000h ;保留
b 8000h ;保留
b 8000h ;保留
nop
nop
b 8000h
b 8000h
b 8000h
b 8000h
  假设烧写程序在E:\LOADEPP\目录下,则将上述工程编译并建立形成的TZ.OUT文件也复制到同样的E:\LOADEPP\目录下,然后执行如下烧写语句。
  E:\LOADEPP\>PRG2XXPP -P 280 -M 0X0006 -S 0X4007 -W 6 -E SRC\C2XX_SPX.OUT TZ.OUT即可。
  在跳转语句的烧写完成后,即可将中断向量表和程序都定位至8000H开始的SARAM内,这样在SARAM内既可很方便设置断点,同时已经烧写进FLASH的跳转语句又能保证中断的正确执行,且每次对程序修改后无需再次对FLASH烧写,只要重新生成.OUT文件,然后执行CCS的FILE菜单下的LOAD PROGRAM即可。
  相应的CMD文件如下。
MEMORY
{ PAGE 0:
VEC :org=8000h,length=40h
PROG :org=8050h,length=0600h
PAGE 1:
RAM_B2 :org=60h,length=20h
RAM_B0 :org=0200h,length=0100h
RAM_B1 :org=0300h,length=0100h
DATAS :org=11ffh,length=0600h
}
SECTIONS
{ .data : {} > RAM_B0 PAGE 1
.stack: {}> DATAS PAGE 1
.bss : {}>DATAS PAGE 1
/******************************************/
vectors : {} > VEC PAGE 0
.text : load > PROG, PAGE 0
.mirro : {} > PROG PAGE 0
.cinit : {} > PROG PAGE 0
}
相应的vectors中断向量表的程序如下。
* File: vector.h *
* File defines Interrupt vector labels *
.global _c_int0
.global _c_int1
.global _c_int2
.global _c_int3
.sect "vectors"
b _c_int0 ;硬件复位c_int0
b _c_int1 ;外部中断1 /INT1
b _c_int2 ;外部中断2 INT2/INT3
b _c_int3 ;定时器中断
nop
nop
b _c_int0
b _c_int0 ;保留
b _c_int0 ;保留
b _c_int0 ;保留
nop
nop
b _c_int0
b _c_int0
b _c_int0
b _c_int0

结语
  针对具有片内FLASH的DSP芯片TMS320F206,在没有片外RAM的情况下如何方便有效的进行仿真调试,本文提出了一种行之有效的解决办法,以期对各位致力于DSP研究开发的同仁有所帮助。


系统分类: DSP
用户分类: DSP206
标签: 无标签
来源: 转贴
发表评论 阅读全文(122) | 回复(0)
总共 , 当前 /