阅读:2999回复:8
关于68013的slave fifo读写数据不成功的问题(内有详细讨论)
我用68013的slave fifo模式,老是写不成功,
发现以下几个问题 1。发现了信号full从低变高,但从fpga(控制器端)都读不出数据,不知道为什么? 2.主机向下面写的时候只能写128×4大小的数据,再也写不下去了,是否写满而没有取走导致的? 我的设置条件是: ep2端点 自动输出 同步 ifclk使能输出 sloe=0; fifoaddr=2'b00; slrd=0,1,0,1,......... 我的固件程序如下: SYNCDELAY; FIFORESET = 0x08; SYNCDELAY; FIFORESET = 0x00; SYNCDELAY; // this defines the external interface to be the following: IFCONFIG = 0xe3; // use IFCLK pin driven by external logic (5MHz to 48MHz) SYNCDELAY; EP2CFG = 0xA2; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=2x // and defines the endpoint for 512 byte packets, 2x buffered EP2FIFOCFG=0x10; OUTPKTEND = 0x82; // Arm both EP2 buffers to “prime the pump” SYNCDELAY; OUTPKTEND = 0x82; SYNCDELAY; PINFLAGSAB = 0x00; // defines FLAGA as prog-level flag, pointed to by FIFOADR[1:0] SYNCDELAY; // FLAGB as full flag, as pointed to by FIFOADR[1:0] PINFLAGSCD = 0x00; // FLAGC as empty flag, as pointed to by FIFOADR[1:0] // won't generally need FLAGD PORTACFG = 0x00; // used PA7/FLAGD as /SLCS FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low SYNCDELAY; EP2BCL = 0x80; // since the defaults are double buffered we must SYNCDELAY; // write dummy byte counts twice EP2BCL = 0x80; // arm EP2OUT & EP4OUT by writing to the byte count w/skip. SYNCDELAY; EP4BCL = 0x80;//当作为输出时EPxBCL赋值 SYNCDELAY; EP4BCL = 0x80; 大侠们帮我看看,谢谢 |
|
沙发#
发布于:2007-03-22 12:33
为什么呢?
大侠们请帮忙,谢谢 |
|
板凳#
发布于:2007-03-22 12:54
是不是autooutlength没设?(建议)
|
|
|
地板#
发布于:2007-03-22 23:27
没有这个寄存器吧,我怎么没有找到
|
|
地下室#
发布于:2007-03-23 08:39
错了,呵呵。。。autoout没有length,我想你的情况是设备没有把数据读走,导致写不进
|
|
|
5楼#
发布于:2007-03-24 10:09
对啊,我感觉也是,我感觉我的时序没有错啊
怎么会没有读走呢 暴郁闷中 |
|
6楼#
发布于:2007-03-25 22:37
顶上去
|
|
7楼#
发布于:2007-03-26 09:37
你在unauto下读前先outpktend一下试试?
|
|
|
8楼#
发布于:2007-03-27 20:48
楼上的,OUTPKTEND 到底是起什么作用的?
跳过是跳过什么? 提交又是提交什么? 我的固件没有写这句,也可以用啊 |
|
|