打印

请教68013的问题

[复制链接]
9376|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wanghoujin|  楼主 | 2010-12-20 12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CD, FIFO, TE, se, pi
大家好:

由于第一次用68013,很多地方不太懂,请教一下大家:

问题:使用68013的slave FIFO模式来传输数据,上位机发送数据,下位可以准确收到,但是下位机给上位机发送数据,则显示2次成功,然后一直失败,弄了好久,不知其原因。由于第一次用,我担心,是不是我的初始化配置有问题,我把初始化的代码贴上来给大家看看。请大家指点指点。

void TD_Init( void )     
{
  CPUCS = 0x12;
  IFCONFIG = 0x43;

  PORTACFG = 0x40;
  SYNCDELAY;
  FIFOPINPOLAR = 0x00;  // set all slave FIFO interface pins as active low PKTEND OR SLOE SLWR LOW AVTIVE
  SYNCDELAY;
  REVCTL = 0x03;        // enable the external master   

  SYNCDELAY;            //reset the fifos
  FIFORESET = 0x80;
  SYNCDELAY;
  FIFORESET = 0x02;
  SYNCDELAY;
  FIFORESET = 0x04;
  SYNCDELAY;
  FIFORESET = 0x06;
  SYNCDELAY;
  FIFORESET = 0x08;
  SYNCDELAY;
  FIFORESET = 0x00;

  SYNCDELAY;
  PINFLAGSAB = 0x00;         // PINFLAGSAB = 0xE0; FLAGA - indexed, FLAGB - EP6 FF ;
  SYNCDELAY;
  PINFLAGSCD = 0x00;        // PINFLAGSCD = 0x08; FLAGC - EP2 EF, FLAGD - indexed;  

  SYNCDELAY;                    // config the endpoints direction
  EP1OUTCFG = 0xA0;        //enable and bulk type
  EP1INCFG =  0xA0;

  SYNCDELAY;                    // see TRM section 15.14
  EP2CFG = 0xA0;
  SYNCDELAY;     
  EP8CFG = 0xE0;
  SYNCDELAY;
  EP4CFG = 0x00;
  SYNCDELAY;                    
  EP6CFG = 0x00;
  SYNCDELAY;                    
  OUTPKTEND = 0X82;             //arming endpoint 2, perform OUTPKTEND 4 times since EP2 is 4x buffered
  SYNCDELAY;  
  OUTPKTEND = 0X82;
  SYNCDELAY;  
  OUTPKTEND = 0X82;
  SYNCDELAY;  
  OUTPKTEND = 0X82;
  SYNCDELAY;                 
  EP2FIFOCFG = 0x10;        //EP IS AUTOOUT=0 AUTOIN =1 ZEROLEN=1 WORDIDE=0
  SYNCDELAY;
  EP8FIFOCFG = 0x08;        //EP IS AUTOOUT=0 AUTOIN =1 ZEROLEN=1 WORDIDE=0
  SYNCDELAY;
  INPKTEND = 0x08;
  SYNCDELAY;
  INPKTEND = 0x08;
  SYNCDELAY;
  EP8AUTOINLENH = 0x02;   //set the packet size 512
  SYNCDELAY;
  EP8AUTOINLENL = 0x00;
  SYNCDELAY;
               
  EP2BCL = 0x80;                // arm EP2OUT by writing byte count w/skip.
  SYNCDELAY;                    
  EP2BCL = 0x80;
  SYNCDELAY;   
}
沙发
soap21| | 2010-12-22 15:51 | 只看该作者
LZ 给你顶顶:)

使用特权

评论回复
板凳
小工程师| | 2010-12-23 15:04 | 只看该作者
下位机传到PC,属于IN传输,首先要确认IN Endpoint配置是否有问题。
你可以设置成AUTOIN模式,EPxAUTOINLENH:L来设置要传输的数据大小。
FIFO端点在Auto-In模式可以如下,数据手册也有说道:
1. Configure bits IFCONFIG[7:4] to define the behavior of
the interface clock.
2. Set bits IFCFG1:0=11.
3. Set REVCTL.0 and REVCTL.1 to ‘1’.
4. Configure EPxCFG.
5. Reset the FIFOs.
6. Set bit EPxFIFOCFG.3=1.
7. Set the size through the EPxAUTOINLENH:L registers.

使用特权

评论回复
地板
云中不似君| | 2011-1-16 17:04 | 只看该作者
哥们,你是不是还在搞usb啊?这个好像是fifo满了吧,后面不能发送了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

0

粉丝