1. 序言
本文介绍了基于TI公司的新一代DSP芯片TMS320C6711和AD公司的串行模数转换芯片AD974的嵌入式数据采集系统的设计方法。
TMS320C6711是32bit浮点信号处理器,核心电压1.8V,工作频率100-150MHz,2级Cache,运算速度 900MFLOPS。其多通道缓冲串口(Multi-channel Buffered Serial Port,McBSP)可直接与AD974进行串口连接,为系统提供高性能的A/D转换和数据处理能力。
AD974是美国模拟器件公司生产的一个200kSPS、4通道、16位数据采集系统。具有高通过率、低功耗、高精度等特性,此外,该器件还集成了外围器件,并采用串行通讯方式,因而可极大地简化数据采集电路的设计,非常适合于体积小、信号复杂的应用系统,如工业控制、医疗仪器等。
2. AD974芯片的特点及工作原理
2.1 AD974芯片的特点
AD974是一个四通道、16位串行通讯数据采集模数转换器。该器件内含模拟输入多路转换器、高速16位采样模数转换器和+2.5V参考电压。从应用角度看,AD974具有如下特点:
(1)支持复杂的信号采集系统。具有四个单端的模拟输入通道,能提供多种可设置的模拟输入范围,包括0V~4V、0V~5V或-10V~+10V;
(2)采用串行接口。与大多数微处理器的串行接口兼容,具有数据传送效率高、数据连线少的特点;
(3)可简化电路的设计,AD974由单电源+5V供电,并且只需较少的外围电路。为了达到简化电路设计的目的,AD974内部还集成了模拟输入多路转换器、高速逐次逼近开关电容ADC、时钟电路和内部2.5V参考电压电路等(参考电压也可以由外部参考电路供应);
(4)高通过率、低功耗。AD974可提供200kSPS的高通过率,而功率耗散最大却只有120mW,因此其转换速率可以高达2kSPS/mW。此外,在掉电模式下,AD974的功耗仅为50μW(典型值)。[page]
2.2 AD974工作原理
1. 主要引脚定义(表1)
表1 AD974的引脚功能
引脚号 |
引脚号 |
功 能 说 明 |
2-5,25-28 |
VXA,VXB |
模拟输入范围选择端。 |
6 |
BIP |
双极性偏移量。连接VXA输入以提供双极性的输入范围 |
7 |
CAP |
参考缓冲输出。 |
8 |
REF |
参考输入/输出端。 |
10 |
R/C |
读取/转换输入端。用于控制转换和读模式。 |
12 |
PWRD |
掉电模式输入端。 |
13 |
EXT/INT |
数字时钟选择输入端,决定采用内部时钟还是外部时钟。 |
15 |
SYNC |
数字输出帧同步端。只有在使用外部时钟时它才起作用。 |
16 |
DATACLK |
串行数字时钟输入或输出端。 |
17 |
DATA |
与DATACLK同步的串行数字输出端。 |
18,19 |
WR1,WR2 |
多路转换器写输入端。 |
20 |
CS |
片选输入端 |
21 |
BUSY |
忙状态信号输出端。 |
2. 工作原理
AD974的模数转换由R/C、CS两信号来控制。在R/C降为低电平时,若CS也为低电平,在至少经过50ns后,输入信号将被保留在内部的电容阵列上并准备开始转换。一旦转换开始,BUSY信号将变为低电平直到转换完毕。在内部,信号R/C和CS需进行或操作,但是对哪一个信号先变为低电平做为开始转换的标志并没有严格要求。唯一的要求是这两个信号变为低电平的时间延迟不得少于10ns。转换完毕后,BUSY信号返回高电平,另一方面,AD974准备下一次转换以确保能继续跟踪输入信号。在某些情况下,将CS引脚保持低电平,而将R/C用于决定是开始转换还是读取数据。需要指出的是,在AD974上电后进行首次转换时,其DATA输出将是不确定的,转换输出需要经过一定时间之后才能稳定下来。模数转换可以使用由AD974的内部时钟,也可以使用外部时钟,这并不影响转换结果的连续性。如果EXT/INT为低电平,则AD974被设置为内部数据移位时钟模式;相反,如果EXT /INT为高电平,则AD974被设置为外部数据移位时钟模式。
3. DSP McBSP
3.1 McBSP的工作原理
McBSP口进行串行通信时,使用的外部接口管脚有:DR,DX,CLKX,CLKR,FSX,FSR,CLKS。DR和DX分别用来进行数据的收发。 CLKX,CLKR,FSX,FSR,CLKS为数据传输提供可靠的时钟。CLKX,FSX为发送的数据时钟和帧同步时钟,CLKR,FSR为接收的数据时钟和帧同步时钟,CLKS提供系统时钟。在收发时钟的控制下,DSP进行数据的接收和发送。为使DSP按照一定的方式进行通信,要对McBSP的各个控制寄存器进行相应的配置。其中,SPCR0/SPCR1用于设置工作模式、检测工作状态、进行收发的复位和启动。RCR0 /RCR1,用于控制接收数据的帧格式、数据延迟。XCR0/XCR1用于控制发送数据的帧格式、数据延迟。SRGR 0/SRGR1用于控制收发数据时钟和帧同步时钟的模式,如大小、极性等。PCR用于控制相应管脚的工作模式。
4. AD974与TMS320C6711 McBSP的接口设计
AD974符合SPI(Series Protocol Interface)数据通讯协议。SPI是一个4根信号线的串行接口协议,包括主/从两种模式。四个接口信号是串行数据输入(MISO,主设备输入,从设备输出),串行数据输出(MOSI,主设备输出,从设备输入),移位时钟(SCK)和从设备使能(SS)。SPI接口的最大特点是由主设备时钟信号的出现与否界定主/从设备间的通讯。一旦检测到主设备时钟信号,就开始传输数据,时钟信号无效后,传输结束。在这期间,从设备必须被使能(SS信号保持有效)。
TMS320C6711芯片的McBSP的数据同步时钟具有停止控制选项,因此可以与SPI协议兼容。McBSP支持2种SPI传输格式,可以在SPCR寄存器的CLKSTP位中设置。
本设计中,我们采用了AD974的内部时钟模式,其时序图如图3。
图3 AD974内部时钟模式时序图
AD974与McBSP的数据传输采用SPI从模式进行连接,其接口设计如图4。
图4 AD974与McBSP的接口
设计中,我们将AD974的CS片选信号固接为低电平,使芯片一直处于选通状态。R/C读/转信号由地址译码器Decoder的/CS1信号(地址 0xB0000000)提供。忙状态信号端BUSY连接FSX0,串行数字时钟端口DATACLK连接CLKX0,数据输入端口DATA连接DR0。多路转换器写输入端WR1和WR2,通道选择端A0,A1分别与DSP的McBSP1端口的引脚FSX1,CLKR1,FSR1相连。该模块的具体工作时序如下:
(1) 数据采集开始前,/CS1没有选通,为高电平,AD974处于写输入状态,通过设置FSX1为低电平,CLKR1和FSR1为所需要的电平可以进行通道选择。
(2) 数据采集开始时,Decoder选通/CS1信号,设置为低电平。AD974首先锁存先前选择的通道号,然后开始进行数据采集和转换,此时忙状态信号BUSY由高电平变为低电平。
(3) 由于BUSY信号与FSX0相连,McBSP0作为从设备被使能,等待数据传输。
(4) 经过一定的时间,AD974串行数字时钟有效,并开始进行数据传输。McBSP0一旦检测到时钟信号,就开始接收AD974传输的数据,时钟信号无效后,传输结束。
(5) 数据传输完成后,AD974的BUSY信号由低电平变为高电平,从设备无效。[page]
5. 软件设计
本设计中,AD974一般的工作步骤包括:采集通道选择,芯片工作触发,数据读取。他们分别涉及到DSP的多组控制寄存器。
(1)通道选择:需要配置McBSP1通道为GPIO模式(设置PCR,SPCR寄存器相应的控制位),控制FSX1引脚输出低有效使能信号,然后控制FSR1,CLKR1引脚输出相应的通道选择代码。
(2)芯片工作触发:向0xB0000000写入一个数据,目的在于选通R/C(读/转信号),触发AD974芯片开始数据转换。
(3)数据读取:配置McBSP0通道的各个寄存器,使其满足SPI数据传输的从模式,然后McBSP0通道会按照程序要求接收数据并放置在DRR寄存器中。
下面给出部分程序设计:
/*** 配置McBSP0端口为SPI工作模式 ***/
*(unsigned volatile int *)McBSP0_SPCR = 0x0000;
*(unsigned volatile int *)McBSP0_SRGR= 0x20000000;
*(unsigned volatile int *)McBSP0_RCR = 0x40040; /* 16bit数据接收 */
*(unsigned volatile int *)McBSP0_XCR = 0x40040; /* 16bit 数据发送 */
*(unsigned volatile int *)McBSP0_SPCR = 0x400000;
*(unsigned volatile int *)McBSP0_SPCR = 0x401800;
*(unsigned volatile int *)McBSP0_PCR = 0x50C;
*(unsigned volatile int *)McBSP0_SPCR = 0x411801;
/*** 配置EMIF端口 ***/
*(unsigned volatile int *)EMIF_GCR = 0x3308;/* EMIF global control */
*(unsigned volatile int *)EMIF_CE3 = 0x105fff23; /* EMIF CE3 control */
/*** 选通AD974采样 ***/
*(unsigned volatile int *)0xB0000000 = 0x1;
/*** 读取采样数据 ***/
temp = *(unsigned volatile int *)McBSP0_SPCR & 0x2;
while ( temp == 0)
{
temp = *(unsigned volatile int *)McBSP0_SPCR & 0x2;
}
temp = *(unsigned volatile int *)McBSP0_DRR;
6. 结束语
本文详细介绍了ADI公司的高速,高精度A/D芯片AD974和TI公司的高性能浮点数字处理器TMS320C6711之间的串行接口设计及程序设计。该设计方案,电路简洁,程序采用C语言编程,可读性和移植性强。本设计的创新点在于:该方案通过采用SPI通讯协议,结合TMS320C6711芯片的EDMA数据传输中断,可以实现自主采样和数据传输而无需占用DSP的CPU资源,能够大大提高系统效率,经过验证系统能够稳定的工作在最大采样率(200kSPS)条件下。线SOC开发平台499元 S3C44B0 ARM7开发板378元 S3C2410 ARM9开发板780元 AT91SAM7S64 ARM7 单片机开发板之王——ELITE-I单片机学习开发系统1200元 S3C2410 ARM9开发板(II) 950元 EPM1270T144C CPLD开发板 480元
参 考 文 献
[1] TMS320C6000 Peripherals Refence Guide (Literature Number: SPRU190D). Texas Instruments Inc. February 2001.
[2] 4-Channel, 16-Bit, 200 kSPS Data Acquisition System(Ad974 Datasheet). Analog Devices Inc. 1999
[3] 李方慧,王飞等. TMS320C6000系列DSPs原理与应用. 北京:电子工业出版社,2002.
[4]李琛,张春熹. 《McBSP多通道串行口在光纤陀螺中的实现》. 微计算机信息,2005年第9-2期,89-91页
上一篇:单片机大容量FLASHRAM的扩展
下一篇:对利用打印口读写存储器24cxx的质疑
推荐阅读最新更新时间:2024-03-16 13:00