阅读:2181回复:3
请使用68013的slave fifo方式的大侠帮个忙
CPUCS = 0x12; // CLKSPD[1:0]=10, for 48MHz operation
// 01 for 30MHz,00 for 12MHz,11 reserved // CLKOE=0, don't drive CLKOUT IFCONFIG = 0x03; //IFCFG[1:0]=11 for Slave FIFO SYNCDELAY; // see TRM section 15.14 REVCTL = 0x03; // use enhanced packet // EP2 512 BULK OUT 4x SYNCDELAY; // EP2CFG = 0xA0; // BUF[1:0]=00 for 4x buffering; // EP6 512 BULK IN 4x SYNCDELAY; // EP6CFG = 0xE0; // BUF[1:0]=00 for 4x buffering; // EP4 and EP8 are not used in this implementation... SYNCDELAY; // EP4CFG = 0x20; // clear valid bit SYNCDELAY; // EP8CFG = 0x60; // clear valid bit SYNCDELAY; // FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions SYNCDELAY; // FIFORESET = 0x02; // reset, FIFO 2 SYNCDELAY; // FIFORESET = 0x04; // reset, FIFO 4 SYNCDELAY; // FIFORESET = 0x06; // reset, FIFO 6 SYNCDELAY; // FIFORESET = 0x08; // reset, FIFO 8 SYNCDELAY; // FIFORESET = 0x00; // deactivate NAK-ALL // 8-bit bus (WORDWIDE=0)... // use manual out mode... SYNCDELAY; // EP2FIFOCFG = 0x00; // OEP1=0,AUTOOUT=0, WORDWIDE=0 SYNCDELAY; // OUTPKTEND = 0x82; // arm first buffer SYNCDELAY; // OUTPKTEND = 0x82; // arm second buffer SYNCDELAY; // OUTPKTEND = 0x82; // arm third buffer SYNCDELAY; // OUTPKTEND = 0x82; // arm fourth buffer // use auto in mode SYNCDELAY; // EP6FIFOCFG = 0x4C; // INFM1=1,AUTOIN=0, ZEROLENIN=0, WORDWIDE=0 //set program flag PINFLAGSAB = 0x8C; // see p341 of TRM,FLAGB is EP2EF,FLAGA is EP2FF SYNCDELAY; PINFLAGSCD = 0xAE; // see p341 of TRM,FLAGD is EP6EF,FLAGC is EP6FF SYNCDELAY; PORTACFG = 0x80; // use PA7/FLAGD as a fifo flag AUTOPTRSETUP |= 0x07; EPIRQ = 0xFF; //clear all interrupt bit 这是我的程序,当EP2FIFOCFG的autoout=1时,为什么不能向68013写数据。如果还有其它的问题,也请指教。EP2FF标志1是full,0是not full是吗?请帮忙指出。谢谢! |
|
沙发#
发布于:2004-09-28 14:23
这是我的程序,当EP2FIFOCFG的autoout=1时,为什么不能向68013写数据。如果还有其它的问题,也请指教。EP2FF标志1是full,0是not full是吗?请帮忙指出。谢谢!
我没看你的程序,因为那些寄存器定义已经忘记了,只是说说我的建议 1,当autoout=1时,主机和外部设备直接连接,68013的8051失效,此时外部设备是master,也就是说读写时序要有外部设备产生,你不能向68013写数据是不可能的,原则上说你至少可以写两个512的数据进去,然后就写不下去了,你可以验证一下是不是这样 如果是这样,并且你的68013工作正常,那么只有一个可能,你的外部设备没有读走数据,可能的原因是时序不匹配或者读信号或者片选信号没有! 2,如果你没有专门的设定相关寄存器,所有的标志默认的都是低有效的,所以应该是0是full,1是not full! 个人见解,欢迎批评指正 |
|
板凳#
发布于:2004-10-08 17:31
谢谢!我上周就已经解决了,忘记来论坛灌水了,谢谢大侠呀。
|
|
地板#
发布于:2007-07-19 18:18
需要根据Cypress提供的流程来处理,否则会出现问题的。
// (2)...when REVCTL.1=1, core blocks auto arming of OUT endp's // ...see above EPxBCL/OUTPKTEND sequence(s) // ...sequence is as follows: // ...(a) REVCTL.1=1 // ...(b) FIFORESET (as above) // ...(c) EPxBCL/OUTPKTEND (as above) // ...(d) AUTOOUT=1 |
|