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

如何提高访问XINTF区域时的读写速度?

我用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就可以了,可是现在貌似没有办法。麻烦大家给我多提些建议吧。谢谢了!

Jones Chen:

给您一个我用过的配置程序,仅供参考,另外不同的SRAM的参数不一定相同,我用的是ISSI的。

void Sram_init( void)

{

XintfRegs.XTIMING6.bit.X2TIMING = 0;

XintfRegs.XTIMING6.bit.XRDLEAD = 1;

XintfRegs.XTIMING6.bit.XRDACTIVE = 1;

XintfRegs.XTIMING6.bit.XRDTRAIL = 0;

XintfRegs.XTIMING6.bit.XWRLEAD = 1;

XintfRegs.XTIMING6.bit.XWRACTIVE = 1;

XintfRegs.XTIMING6.bit.XWRTRAIL = 0;

XintfRegs.XINTCNF2.bit.CLKMODE = 0;

}

我用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就可以了,可是现在貌似没有办法。麻烦大家给我多提些建议吧。谢谢了!

qin longhui:

Thank you ,Jones Chen !

你的方案我试过了,对于读写速度没有提高的。你当时有的也是2812吗?

我想问一下,这个是由于2812的主频不够还是什么原因?系统时钟我已经配置到150MHZ了,照理说,对XINTF区域的访问速度不会低到只有几MHZ吧?我看到网上有人说可以配置到33MHZ的。所以,我想确认一下:

现在的访问速度这么低,是由于我程序的问题还是2812从理论上来说就达不到那样的频率?

请各位工程师帮帮忙,现在这是我外扩的AD最关键也最急迫的问题了。

麻烦了!

赞(0)
未经允许不得转载:TI中文支持网 » 如何提高访问XINTF区域时的读写速度?
分享到: 更多 (0)