电源设计技术实用资料点击免费获取>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于pdiusbd12

共1条 1/1 1 跳转至

关于pdiusbd12

菜鸟
2009-11-15 23:26:39    评分

write(0x00,1);  //select
   write(0xf1,1);   //f1:Ack c in

   write(0x01,1);   //01:Select End1
   write(0xf1,1);   //ack c out
   

   USART_Transmit(0xA1);
   write(0x80,1);//80:Read Endpoint Status

   tmp = read();
   USART_Transmit(tmp);
   
   USART_Transmit(0xA2);
   write(0x40,1);   //read last transaction status
   tmp = read();
   USART_Transmit(tmp);
   
   write(0x00,1);  //select
   read();
   write(0xf0,1);
   read();
   tmp = read();
   lastsetup[0] = read();//first bit
   lastsetup[1] = read();
   lastsetup[2] = read();
   lastsetup[3] = read();
   lastsetup[4] = read();
   lastsetup[5] = read();
   lastsetup[6] = read();
   lastsetup[7] = read();
   
   USART_Transmit(tmp);
   for(i=0;i<8;i++)
    USART_Transmit(lastsetup[i]);
   //if(lastsetup[1]==6)PORTB++;
   write(0xf2,1);  //F2:Clear buffer

   USART_Transmit(0xA3);
   write(0x80,1);//80:Read Endpoint Status
   tmp = read();
   USART_Transmit(tmp);
   USART_Transmit(0xA4);
   write(0x81,1);//80:Read Endpoint Status
   tmp = read();
   USART_Transmit(tmp);

   write(0x01,1);  //select c in
   read();
   write(0xf0,1);  //write buffer
   write(0x00,0);  //reserved
   write(0x10,0);  //size
   //Data start
   for (i=0;i<16;i++)
   {
    write(descriptor[i],0);
   }
   write(0xFA,1);  //validate buffer


接到Control Out的Setup(Get_Descriptor)后如上处理,但貌似事实上没有ACK,由串口看出这段程序完了之后主机又重发Bus Reset和Setup(Get_Descriptor),怎么回事?




关键词: 关于     pdiusbd12     write     USART         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]