无法接收USB数据包

时间:2014-03-06 11:37:00

标签: embedded

我正在尝试通过与PIC32接口的打印机接收数据包。

我可以发送设置字节并正确接收8位数据,但是当通过IN数据包接收的数据大于8个字节时,我在前8个字节后无法正确接收它们。

其他信息被错误地发布为“答案”并移到此处:

我有点困惑,当在令牌中启动读取后...前两个字节到达341,因为我试图读取打印机类的DEVICE_ID,他们建议打印机发送的字符串的长度。

这是我在准备第一个令牌时正在做的事情。

BDT_ENTRY *pointbdt;  // pointe to BDT 

pointbdt = BDT_IN; (even BDT)  // 

free(pEP0Data);
pEP0Data=NULL;
   if(!((pointbdt=(BDT_ENTRY*) malloc(sizeof(BDT_ENTRY)))==NULL))  
     {


      pointbdt=BDT_IN;

      pEP0Data=(BYTE *) malloc(sizeof(8));  // pointer to buffer

    pointbdt->STAT.Val=0;         
      pointbdt->ADR=ConvertToPhysicalAddress(pEP0Data);        
    pointbdt->CNT=8;
    pointbdt->STAT.BSTALL=0;
    pointbdt->STAT.DTSEN=1;
    pointbdt->STAT.DTS=1;
    pointbdt->STAT.UOWN=1;
      U1EP0 = 0x4D;
      U1ADDR = 0x00;
      U1TOK =10010000; //in  


  }

然后在猜测发生另一个SOF中断后,我必须切换DTSEN,并且pointbdt也应该指向BDT_IN_ODD(奇数BDT)。我在8字节后得到的字节已损坏。

我正在尝试通过pc上的超级终端打印值。


我有点困惑,当在令牌中启动读取后...前两个字节到达341,因为我试图读取打印机类的DEVICE_ID,他们建议打印机发送的字符串的长度。

这是我在准备第一个令牌时正在做的事情。

BDT_ENTRY *pointbdt;  // pointe to BDT 

pointbdt = BDT_IN; (even BDT)  // 

free(pEP0Data);
pEP0Data=NULL;
   if(!((pointbdt=(BDT_ENTRY*) malloc(sizeof(BDT_ENTRY)))==NULL))  
     {


      pointbdt=BDT_IN;

      pEP0Data=(BYTE *) malloc(sizeof(8));  // pointer to buffer

    pointbdt->STAT.Val=0;         
      pointbdt->ADR=ConvertToPhysicalAddress(pEP0Data);        
    pointbdt->CNT=8;
    pointbdt->STAT.BSTALL=0;
    pointbdt->STAT.DTSEN=1;
    pointbdt->STAT.DTS=1;
    pointbdt->STAT.UOWN=1;
      U1EP0 = 0x4D;
      U1ADDR = 0x00;
      U1TOK =10010000; //in  


  }

然后在猜测发生另一个SOF中断后,我必须切换DTSEN,并且pointbdt也应该指向BDT_IN_ODD(奇数BDT)。 我在8字节后得到的字节已损坏。

我正在尝试通过pc上的超级终端打印值。

0 个答案:

没有答案