|
68013固件用slavefifo模式进行数据发送,通过控制传输将设置参数,命令等少量数据让68013的串口1发送,现在用两块板子测试固件,一块只有68013的开发板,一块是带FPGA和68013板子。前者已经实现与pc通讯,后者出现了奇怪的现象:上电Cypress EZ_USB FX2(68013)-EEPROM missing,正确,烧68013固件出现sample usb,正确,再烧FPGA程序,又出现Cypress EZ_USB FX2(68013)-EEPROM missing,这是为什么?然后又做了另外个测试,不烧FPGA程序直接和PC通信,发现也通信不了,上位机点了发送之后就挂了,还有我不添加串口初始化及收发,固件和FPGA正常通信,找不到原因了。贴固件代码:
//串口,时钟初始化
void TD_Init( void )
{
//时钟设置
CPUCS = 0x12; //48MHZ CLKOUT ENALBE
IFCONFIG =0x43;//使用外部时钟,IFCLK输入不反向
SYNCDELAY;
EP2CFG=0xA2; //需要设定为四缓冲,每个缓冲区大小为512字节
SYNCDELAY;
EP4CFG=0x00;
SYNCDELAY;
EP6CFG=0xE2;
SYNCDELAY;
EP8CFG=0x00;
SYNCDELAY;
FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions
SYNCDELAY; // see TRM section 15.14
FIFORESET = 0x02; // reset, FIFO 2
SYNCDELAY; //
FIFORESET = 0x06; // reset, FIFO 6
SYNCDELAY; //
FIFORESET = 0x00; // deactivate NAK-ALL
SYNCDELAY;
PINFLAGSAB = 0xE6; // FLAGA - fixed EP6PF, FLAGB - fixed EP6FF
SYNCDELAY;
PINFLAGSCD = 0xf8; // FLAGC - fixed EP2EF, FLAGD - reserved
SYNCDELAY;
PORTACFG |= 0x00; //0x40; // SLCS, set alt. func. of PA7 pin
SYNCDELAY;
FIFOPINPOLAR = 0x00; // all signals active low,
SYNCDELAY;
OEA |= 0xFF;
// handle the case where we were already in AUTO mode...
EP2FIFOCFG = 0x01; // AUTOOUT=0, WORDWIDE=1
SYNCDELAY;
EP2FIFOCFG = 0x11; // AUTOOUT=1, WORDWIDE=1
SYNCDELAY;
EP6FIFOCFG = 0x09; // AUTOIN=1, ZEROLENIN=0, WORDWIDE=1
SYNCDELAY;
//IO设置
PORTCCFG=0x00;
PORTCCFG=0x00;
PORTECFG=0x00;
OEA=0xff;
OEC=0x00;
OEE=0xff;
//串口初始化
EA=1;
SCON1 = 0x50;
SMOD1 = 0;
UART230 = 0x02; //115200和时钟无关
enum_high_speed=FALSE;
}
//控制传输的厂商请求
case VEND_info:
{
EP0BCH = 0;
EP0BCL = 0;
while(EP0CS & bmEPBUSY);
bc = EP0BCL;
for(i=0;i<bc;i++)
{
TI1 = 0;
SBUF1 = EP0BUF[ i ];
while( !TI1 );
TI1 = 0;
}
EP0CS |= bmHSNAK;
break;
}
另外 感谢amobss的大哥们,给了我很多帮助,在这里非常感谢大家 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|