我用2812外扩了一片AD,ths1230.采样率设为12.5MHZ,使用的是XINTF ZONE6,。但是经过检测发现,2812读数据的速度太慢了,前一段时间发帖问过TI的工程师,大家给了我一些建议,但现在读写速度还是很慢,大概6.25MHZ左右。
(1)我的程序如下:
头文件里对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;
}
}
(2)XINTF.c中,对外设时钟的设置如下:
XintfRegs.XINTCNF2.bit.XTIMCLK = 0;
XintfRegs.XINTCNF2.bit.WRBUFF = 0;
XintfRegs.XINTCNF2.bit.CLKOFF = 1;
XintfRegs.XINTCNF2.bit.CLKMODE = 0;
// Zone 6------------------------------------
XintfRegs.XTIMING6.bit.XWRLEAD = 1;
XintfRegs.XTIMING6.bit.XWRACTIVE = 1;
XintfRegs.XTIMING6.bit.XWRTRAIL = 0;
XintfRegs.XTIMING6.bit.XRDLEAD = 1;
XintfRegs.XTIMING6.bit.XRDACTIVE = 0;
XintfRegs.XTIMING6.bit.XRDTRAIL = 1;
XintfRegs.XTIMING6.bit.X2TIMING = 0;
XintfRegs.XTIMING6.bit.USEREADY = 0;
XintfRegs.XTIMING6.bit.READYMODE = 1;
XintfRegs.XTIMING6.bit.XSIZE = 3;
XINTF的时钟已经设置到最高。
(3)我是通过检测xintf zone6的片选信号XZCS6的脉冲来判断时钟频率的,因为读XINTF相应区域数据时,会有低电平。
我的问题有:
(1)我的程序设置是不是有问题?
(2)是不是2812访问外扩接口的速度都很慢?最高能达到多少?我的2812开发板上有个外扩SRAM,但是我测了一下访问外扩RAM的时钟频率,貌似也只有6.5MHZ左右。
各种方法都尝试过了,TI的xintf手册也看了,但是还是没有达到要求,只要读写速度能达到12.5MHZ就可以了,可是现在貌似没有办法。麻烦大家给我多提些建议吧。谢谢了!