TI中文支持网
TI专业的中文技术问题搜集分享网站

AD与DSP之间的通讯

你好。我选用的是TI的ths1230与DSP2812之间直接并口连接,进行数据采集,时钟频率为12.5MHZ,也即采样率为12.5MHZ,XINTF选用的是ZONE6。但DSP读AD的数据时,发现读信号的最高频率小于2MHZ(通过观察XZCS6引脚的输出脉冲的频率得知)。

读数据的指令为:

for(i=0;i<512,i++)

{

Voltage[i]=ADCDATA;  //ADCDATA为定义好的ZONE6区内的一个地址;

}

即使将XINTF的时钟频率设为最高,读信号的频率也不到2MHZ,所以,我想问一下,一般的高速AD与DSP之间通讯,是之间要连接数据缓存芯片吗?还是我的程序有问题?

谢谢。

Dale Li:

你的读取并不合适,下面是一个读取的例子,供你参考:

volatile Uint16 *ADCDest;

volatile Uint16 *ADCSource;

ADCSource = &ADS_Buf;

ADCDest= &ADS_Result[ i ];

*ADCDest++ = *ADCSource++;

另外:

1. ADS_Buf is external ZONE6 address.

2. 请确保DSP能够在330ns(1/30M)内能够读出数据,否则的话,你要想办法提高DSP的内外设的clock.

qin longhui:

回复 Dale Li:

谢谢你啊!

我用你的方法试了一下,是有作用。原来只有一点几MHZ,现在有3.1MHZ了,差不多翻了一倍。但是读数据的频率还是太低,比10MHZ还是小好多。我想问一下,还有别的什么方法吗?

P.S.1.ZONE6的外设始终频率我已经设到最高了,不能再高了。

2.你回复的东西里面另外里面的第2点意思是不是说小于33ns内是正常的啊?应该是打错了,打成330ns了吧。要是能达到33ns,那我的这个问题肯定就解决了。

谢谢你了,麻烦了!

Dale Li:

不好意思,笔误,是33ns,这是ADC的要求。建议你到DSP的子论坛去咨询我们DSP team的同事,怎么能再提高外设读取速度,如果不行,可以考虑更高速度的CPU。

qin longhui:

谢谢你。我在2812DSP的论坛里也发帖问过了,还是没有解决。我发现程序改了以后,读写的频率提高挺快的,现在已经能达到5MHZ了,但是速度还是有点低。

我的程序如下,能帮我看看吗?

头文件里对AD地址的定义:

#define ADCDATA        *(volatile unsigned int * )(0x110000)

程序开头的定义:

volatile uint  *ADCDest;

volatile uint  *ADCSource;

主函数里面的部分程序:

while(1)

{

ADCSource=&ADCDATA;

ADCDest=Voltage;                     //Voltage[512]为存放转换后数据的数组;

for(i=0;i<512;i++)

{

*ADCDest++=*ADCSoutce++;

}

for(i=0;i<512;i++)

{

Voltage[i]=(Voltage[i]&0x0fff);       //采集到的数据是12位的,所以将数据的高位置0;

}

}

麻烦你了,可不可以帮我看看,是不是我的程序还有问题?发现程序改一下,读信号的频率可以提高好多。

谢谢了!

赞(0)
未经允许不得转载:TI中文支持网 » AD与DSP之间的通讯
分享到: 更多 (0)