void TD_Init(void) // Called once at startup
{
CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ; // set the CPU clock to 48MHz
// set the slave FIFO interface to 48MHz
REVCTL = 0x03;
SYNCDELAY;
FIFORESET = 0x80;// activate NAK-ALL to avoid race conditions
SYNCDELAY; //
FIFORESET = 0x02; // reset, FIFO 2
SYNCDELAY;
FIFORESET = 0x04;
SYNCDELAY;
FIFORESET = 0x06; // reset, FIFO 2
SYNCDELAY; // //
FIFORESET = 0x08;
SYNCDELAY;
FIFORESET = 0x00; // deactivate NAK-ALL
SYNCDELAY;
IFCONFIG = 0xCB;
EP2CFG = 0xA2; //OUT端点,双缓冲
EP2FIFOCFG = 0x35; // 自动输出,16位数据
OUTPKTEND=0x82; //强制OUT包结束
SYNCDELAY;
OUTPKTEND=0x82; //强制OUT包结束
SYNCDELAY;
EP4CFG = 0xA0; //OUT端点,双缓冲
EP4FIFOCFG = 0x35; // 自动输出,16位数据
OUTPKTEND=0x82; //强制OUT包结束
SYNCDELAY;
OUTPKTEND=0x82; //强制OUT包结束
SYNCDELAY;
EP6CFG = 0xE2; //in端点,双缓冲
EP6FIFOCFG = 0x0D; // 自动输入,16位数据
EP6AUTOINLENH=0x02;
SYNCDELAY;
EP6AUTOINLENL=0X00; //set the packet size 512字节
SYNCDELAY;
EP6FIFOPFH = 0x82; // you can define the programmable flag (FLAGA)
SYNCDELAY; // to be active at the level you wish
EP6FIFOPFL = 0x00;
SYNCDELAY;
// INPKTEND = 0x06; //发送短数据包给上位机
// SYNCDELAY;
EP8CFG = 0xA0; //out端点,双缓冲
EP8FIFOCFG = 0x35; // 自动输出,16位数据
OUTPKTEND=0x82; //强制OUT包结束
SYNCDELAY;
OUTPKTEND=0x82; //强制OUT包结束
SYNCDELAY;
PINFLAGSAB = 0x98;
SYNCDELAY;
PINFLAGSCD = 0xBB;
PORTACFG=0x40;
FIFOPINPOLAR = 0x00;//设置slavefifo 接口为低电平有效
SYNCDELAY;
//OUT端点计数器需要预先加载来启动传输,因为默认是双缓冲,所以加载两次
EP2BCL=0x80;
SYNCDELAY;
EP2BCL=0x80;
SYNCDELAY;
EP4BCL=0x80;
SYNCDELAY;
EP4BCL=0x80;
SYNCDELAY;
EP8BCL=0x80;
SYNCDELAY;
EP8BCL=0x80;
SYNCDELAY;
}
|