完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
内 容 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.1 AD7606简介 AD7606是16位,8通道同步采样模数数据采集系统。AD7606完全满足电力系统的要求,具有灵活的数字滤波器、2.5V基准电压源、基准电压缓冲以及高速串行和并行接口。它采用5V单电源供电,可以处理±10V和±5V真双极性输入信号、同时所有通道均能以高达200kSPS的吞吐率采样。 图1 AD7606的内部原理框图。 图2 AD7606的管脚图。 • AVcc 模拟电源,4.75V~5.25V • Vdrive 逻辑部分电源 • Vdd 模拟输入部分正电压 • Vss 模拟输入部分负电压 • DGND 数字地 • AGND 模拟地 1.2 ADSP-21479简介 ADSP-21479是SIMD (单指令多数据)SHARC家族中的一员,它基于65nm的最新工艺,具有低成本,低功耗的的特点,是一颗集成有大容量片上SRAM和ROM的32/40位浮点DSP。ADSP-21479是性能出色,266MHZ/1596MFLOP: • 266 MHz/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的内部原理框图。 2. AD7606和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通道数据, 1. 通道5提取到1KHz正弦波; 4.2 结论 这种连接方式只使用DSP的一个串行SPORT口即可同时读取8路ADC的数据。但由于8路数据都通过一路数据输出给DSP,而AD7606支持的最高串行时钟频率有限,模数转换还要占用一部分采样周期,因此串行输出的连接下,AD7606不能工作在最高200KSPS采样率下。 根据AD7606数据手册,AD7606的SCLK上限为23.5MHz。FLAG信号驱动CONVST A/B信号,单路串行输出八通道数据。不考虑转换时间最高采样率可达23500000/(16×8)=183.5kHz,由于每个周期数据转换将消耗一定时间,所以实际无法达到此速度。假设采样周期用Tconvst表示,根据AD7606数据手册,模数转换时间为3.45us,所以 Tconvst-3.45us代表采样周期中传输数据的时间。八通道总数据量为128个时钟周期,所以(Tconvst-3)/128近似为每bit数据的时钟周期。由于SCLK最大为23.5MHz,据此可以推算出此模式下最高采样频率: (Tconvst(max)-3.45)/128 = 1/23.5 Tconvst(max)≈8.89us 即最高采样率为1/ Tconvst(max) = 112KSPS 同理可知,若采用两口同时输出转换数据,即启动2个SPORT分别读取8个通道的数据,实际最高采样率能达到161K SPS。 当AD7606采用并行方式输出到DSP时,即可得到最高200KSPS采样率。 5. DSP参考代码 1. 配置SRU // This function will setup the SRU Registers void InitSRU(void) { //Generating Code for connecting : SPORT0_CLK to DAI_PIN1 SRU (HIGH, PBEN01_I); SRU (SPORT0_CLK_O, DAI_PB01_I); //Generating Code for connecting : SPORT0_FS to DAI_PIN4 SRU (HIGH, PBEN04_I); SRU (SPORT0_FS_O, DAI_PB04_I); //Generating Code for connecting : DAI_PIN5 to SPORT0_DA SRU (LOW, PBEN05_I); SRU (DAI_PB05_O, SPORT0_DA_I); //Generating Code for connecting : FLAG4 to DPI_PIN1 SRU (HIGH, DPI_PBEN01_I); SRU (FLAG4_O, DPI_PB01_I); //Generating Code for connecting : FLAG5 to DPI_PIN2 SRU (HIGH, DPI_PBEN02_I); SRU (FLAG5_O, DPI_PB02_I); } 2. IRQ1 BUSY中断服务程序 void AD7606_BUSY_IRQs(int sig_int) { busy++; interrupt(SIG_SP0,Count_SPORT0_RX_IRQs); #ifdef DMA * (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 中断程序 void Count_SPORT0_RX_IRQs(int sig_int) { SP0I_counter++; #ifdef CORE rx_buf0a[(SP0I_counter-1)*CHNUM]=(short)(*pRXSP0A); #endif * (volatile int *) SPCTL0 =0; finished=1; #ifdef DMA if(SP0I_counter==1024){ * (volatile int *) IISP0A =(int)rx_buf0a ; SP0I_counter=0; } else * (volatile int *) IISP0A =(int)(rx_buf0a+ (SP0I_counter)*CHNUM); * (volatile int *) IMSP0A = 1; * (volatile int *) CSP0A = CHNUM; #endif interrupt(SIG_SP0,SIG_IGN); } |
|
相关推荐
|
|
本帖最后由 mr.pengyongche 于 2013-4-30 03:08 编辑
dddddddddd [url=www.329.cc] |
|
|
|
|
|
tms320f28335和ad7606的方案,我做过。哈哈。谁用到,可以讨论。
|
|
|
|
|
|
作者您好,我用AD7606采集电压,采集不到负值,我看您用时就能采集到负值,方便加下微信聊一下么,谢谢您了!我微信号:li15810892729。
|
|
|
|
|
|
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2328 浏览 0 评论
680 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2765 浏览 0 评论
3525 浏览 1 评论
1192 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 22:54 , Processed in 0.750433 second(s), Total 91, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号