Cy7C68013,配置成,EP2,OUT,512双缓冲,EP4,OUT,512双缓冲,EP6,IN,512双缓冲,EP8,IN,512双缓冲,EP2、EP4使用AUTOOUT,EP6、EP8使用AUTOIN。FlagA=EP2EF,FlagB=EP4EF,FlagC=EP6FF。外部CPU总线接68013的slaveFIFO接口,通过判断FLAGA和FLAGC来读或写数据。
现在做如下测试:
外部CPU不停的判断FLAGA和FLAGC,如果发现FLAGA不为空,则从68013的FIFO2中读数据,如果判断FLAGC不满则向FIFO6中写数据。
用CyConsole测试,EP6 BulkIn可以不停的读取到外部CPU写入的数据。
用EP2 BulkOut,一次512字节,CyConsole可以BulkOut成功,FLAGA也成功变化为“非空”,但外部CPU从FIFO2中读数据却不正确,而且一直读取都不能将FLAGA读成“Empty”的状态。
下面是我的固件TD_init程序。
Rwuen = TRUE; // Enable remote-wakeup
CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;// set the CPU clock to 48MHz
IFCONFIG = 0xCB;// set the slave FIFO interface to 48MHz
SYNCDELAY;
REVCTL = 0x03;//0x03;
SYNCDELAY;
EP1OUTCFG = 0xA0;//EP1 OUT Bulk使能
SYNCDELAY;
EP1INCFG = 0xA0;//EP1 IN Bulk使能
SYNCDELAY;
EP2CFG = 0xA2;//EP2为Bulk OUT ,Double Buffer
SYNCDELAY;
EP4CFG = 0xA0;//EP4为Bulk OUT ,Double Buffer
SYNCDELAY;
EP6CFG = 0xE2;//EP6为Bulk IN,Double Buffer
SYNCDELAY;
EP8CFG = 0xE0;//EP8为Bulk IN,Double Buffer
SYNCDELAY;
EP2BCL = 0x80;
SYNCDELAY;
EP2BCL = 0x80;
SYNCDELAY;
EP4BCL = 0x80;
SYNCDELAY;
EP4BCL = 0x80;
SYNCDELAY;
FIFOPINPOLAR = 0x03;//EF高电平有效,FF高电平有效
SYNCDELAY;
//FLAGA=EP2 EF,高表示空,低表示不空(有数据需要DSP读)
//FLAGB=EP4 EF,高表示空,低表示不空(有数据需要DSP读)
//FLAGC=EP6 FF,高表示满,低表示不满(DSP可以写数据进来)
PINFLAGSAB = 0x98;
SYNCDELAY;
PINFLAGSCD = 0x0E;
SYNCDELAY;
PORTACFG &= ~0x80;//FLAGD做为nCS使用
SYNCDELAY;
PORTACFG |= 0x40;//FLAGD做为nCS使用
SYNCDELAY;
EP2FIFOCFG = 0x00;
SYNCDELAY;
EP2FIFOCFG = 0x10;//EP2 AUTOOUT=1,8bit数据总线模式
SYNCDELAY;
EP4FIFOCFG = 0x00;
SYNCDELAY;
EP4FIFOCFG = 0x10;//EP4 AUTOOUT=1,8bit数据总线模式
SYNCDELAY;
EP6FIFOCFG = 0x00;
SYNCDELAY;
EP6FIFOCFG = 0x0C;//EP6 AUTOIN=1,ZEROLENIN=1,8bit数据总线模式
SYNCDELAY;
EP8FIFOCFG = 0x00;
SYNCDELAY;
EP8FIFOCFG = 0x0C;//EP8 AUTOIN=1,ZEROLENIN=1,8bit数据总线模式
SYNCDELAY;
AUTOPTRSETUP |= 0x01;
SYNCDELAY;
// set PA0 for output
Enable_led();
ledOn();
// default to I2C bus freq = 100 KHz
I2CTL &= ~bm400KHZ; // 0: 100 KHz
请大家指教。谢谢 |