又有问题得麻烦热心的坛友们了,我写了个2812的外部ram测试代码。
xintf.c内配置如下:
void InitXintf(void)
{
// #if F2812
// Example of chaning the timing of XINTF Zones.
// Note acutal values should be based on the hardware
// attached to the zone - timings presented here are
// for example purposes.
// All Zones---------------------------------
// Timing for all zones based on XTIMCLK = SYSCLKOUT
XintfRegs.XINTCNF2.bit.XTIMCLK = 0;
// No write buffering
XintfRegs.XINTCNF2.bit.WRBUFF = 0;
// XCLKOUT is enabled
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// XCLKOUT = XTIMCLK/2
XintfRegs.XINTCNF2.bit.CLKMODE = 1; //XCLK=75MHz
// Zone 6:
// Change write access lead active trail timing
// When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater
// Use timings based on SYSCLKOUT = XTIMCLK
XintfRegs.XTIMING6.bit.USEREADY=0;
XintfRegs.XTIMING6.bit.XSIZE=3;
XintfRegs.XTIMING6.bit.XWRTRAIL = 1;
XintfRegs.XTIMING6.bit.XWRACTIVE = 2;
XintfRegs.XTIMING6.bit.XWRLEAD = 1;
XintfRegs.XTIMING6.bit.XRDLEAD = 1;
XintfRegs.XTIMING6.bit.XRDACTIVE = 2;
XintfRegs.XTIMING6.bit.XRDTRAIL = 1;
//Not double lead/active/trail for Zone 6
XintfRegs.XTIMING6.bit.X2TIMING = 0; //时钟不翻倍
// Zone 6 is slow, so add additional BCYC cycles when ever switching
// from Zone 6 to another Zone. This will help avoid
// bus contention.
XintfRegs.XBANK.bit.BCYC = 2;
XintfRegs.XBANK.bit.BANK = 6;
// #endif
}
main函数中每次往外部RAM写16K数据,写完后将一个GPIO翻转。现在得到的结果是按上述void InitXintf(void)配置GPIO口的方波只有163Hz左右,换算过来外部RAM写入速度只有2.8MHz左右。但是按上述配置理论上应该是(150MHz/2)/(1+2+1)=18.75MHz才对吧。而且我把XWRTRAIL、XWRACTIVE、XWRLEAD这三个时间分别设为1,1,1时,GPIO输出方波频率也只增加到176Hz,而如果改为3、7、3则方波为127Hz。这和手册上说的不符合啊,有哪位坛友知道问题出在哪里吗?谢谢赐教