电力系统中多通道同步采样AD7606与浮点DSP通信的设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电力系统中多通道同步采样AD7606与浮点DSP通信的设计与实现

电力系统中多通道同步采样ADC(AD7606)与浮点DSP

(ADSP-21479)通信的设计与实现

内容

1. 简介3

1.1 AD7606简介3

1.2 ADSP-21479简介4

2. AD7606和ADSP-21479配置与连接5

3. 时序分析6

4. 测试结果和结论7

4.1测试结果7

4.2结论10

5. DSP参考代码10

6. 参考文献12

1简介

1.1AD7606简介

AD7606是16位,8通道同步采样模数数据采集系统。AD7606完全满足电力系统的要求,具有灵活的数字滤波器、2.5V基准电压源、基准电压缓冲以及高速串行和并行接口。它采用5V单电源供电,可以处理±10V和±5V真双极性输入信号、同时所有通道均能以高达200kSPS 的吞吐率采样。

图1 AD7606的内部原理框图。

图2 AD7606的管脚图。

• A Vcc 模拟电源,4.75V~5.25V

• Vdrive 逻辑部分电源

• Vdd 模拟输入部分正电压

• Vss 模拟输入部分负电压

• DGND 数字地

• AGND 模拟地

1.2ADSP-21479简介

ADSP-21479是SIMD (单指令多数据)SHARC家族中的一员,它基于65nm的最新工艺,具有低成本,低功耗的的特点,是一颗集成有大容量片上SRAM和ROM的32/40位浮点DSP。ADSP-21479是性能出色,266MHZ/1596MFLOP:

• 266 MH z/1596FLOPS SIMD SHARC内核,支持32-bit浮点、40-bit浮点以及16/32-bit 定点数据类型

• 支持多达5 Mb 片内SRAM

• 支持16位宽SDR、SDRAM存储器接口

• 数字应用接口DAI,支持多达8个的高速同步串口(SPORT)及SPI串口

• 2个精确时钟发生器

• 20线数字I/O端口

• 3个定时器、UART、I2C兼容接口

• ROM/JTAG安全模式

• 供应196引脚CSP_BGA封装与100引脚LQFP封装产品,适合于工业客户的要求• 供应商业级、工业级温度与汽车级温度等级产品

图3 ADSP-21479的内部原理框图。

2AD7606和ADSP-21479配置与连接

AD7606芯片的供电采用单5V供电,见图4所示:

图4。AD7606供电示意图。

AD7606采用硬件配置方式,具体配置如下:

1) 设置RANGE=0时,模拟输入范围是±5Vref。

2) 设置/PAR /SER/BYTE SEL为高电平,选择使用串行模式。

3) CONVSTA, CONVSTB ,使用同源激励。

4) 设置REF SELECT=0 ,使用外部参考电压

SHARC ADSP-21479 SRU设置:

SPORT0_SCLK ◊ DAIP 1

SPORT0_FS ◊ DAIP 4

SPORT0_DA ◊ DAIP 5

FLAG4 ◊ DPI_PIN1

FLAG5 ◊ DPI_PIN2

根据以上配置,ADSP-21479通过SPORT口与AD7606联系的系统示意图如图5所示:

图5 采用串行方式时,AD7606与ADSP-21479硬件连

接示意图

3时序分析

AD7606工作时序如图6,通过DSP的FLAG信号驱动CONVST A/B信号启动转换过程,BUSY标志着工作状态,连接到DSP的中断输入。BUSY为高时表示处于转换状态,转换完毕后高到低的下降沿引起DSP中断,DSP在响应中断通过SPORT0读取8通道ADC转换好的数据。

图6 AD7606串行读取数据时序

ADSP-21479 SPORT口的时序如图7所示,在FS信号启动后,数据随着时钟节拍被读取。我们选择SPORT数据宽度是32位,那么四次FS信号即可读取八个通道的数据。

图7 ADSP-21479 SPORT串行数据接收时序

4测试结果和结论

DSP软件设置50K的采样信号,对8个通道的数据进行同时采样。各模拟通道输入信号分别为:通道5连接1KHz正弦波,其余通道接地。

4.1测试结果

1) 利用VDSP5.0++ 的plot窗口(VDSP->View->Debug Windows->Plot)观察5通道数据,

* (volatile int *)SPCTL0 =( SPEN_A | SLEN32 | ICLK | IFS | LAFS | SDEN_A | FSR | DITFS| LFS );

#endif

#ifdef CORE

* (volatile int *) SPCTL0 =( SLEN16 | ICLK | IFS | FSR | LAFS | LFS | DITFS);

*(volatile int *) SPCTL0 |=SPEN_A ;

#endif

}

3. SPORT初始化程序

void init_sport(){

* (volatile int *) SPCTL0 = 0;

* (volatile int *) SPCTL1 = 0;

* (volatile int *) SPMCTL0 = 0;

* (volatile int *) SPMCTL1 = 0;

SPORT_DMA_setup:

* (volatile int *) IISP0A =(int)rx_buf0a ;

* (volatile int *) IMSP0A = 1;

* (volatile int *) CSP0A = CHNUM;

//configure the sport

/* */

/* CLKDIV0=[fCCLK(266 MHz)/4xFSCLK(17 MHz)]-1 = 0x0005 */

/* FSDIV0=[FSCLK(10 MHz)/TFS(2 MHz)]-1 = 31 = 0x001F */

//13m hz 1m 0x00080003;

/* Configure SPORT0 as a reciever (Rx) */

* (volatile int *) DIV0 = 0x001F0005;

}

4. SPORT 中断程序

相关文档
最新文档