dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1202回复:3

这两句有问题吗?

楼主#
更多 发布于:2005-01-05 10:53
void get_descriptor(void)
{

unsigned char bDescriptor = MSB(ControlData.DeviceRequest.wValue);
if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE) //01|01
{
code_transmit((unsigned char *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR)); /*现在主要是怀疑这句的问题,sizeof(USB_DEVICE_DESCRIPTOR)值是12,哦还有我的CPU是ARM7的,不需要CODE */
}
else

stall_ep0();
}
还有
*********************************
void code_transmit(unsigned char * pRomData, unsigned short len) //len返回是12
{
ControlData.wCount = 0;
if(ControlData.wLength > len) //ControlData.wLength 是40
{
ControlData.wLength = len;//发送数据长度限制
}

ControlData.pData = pRomData;

if( ControlData.wLength >= EP0_PACKET_SIZE)
{ // 如果发送代码大于包长度
D12_WriteBuffer(1, ControlData.pData, EP0_PACKET_SIZE);
ControlData.wCount += EP0_PACKET_SIZE;
为什么抓到的数据是这样?80 06 00 02  00 00 ff 00     GET DESCRIPTOR            
   7.0  DI     0a 02 33 00  01 01 00 60  32 00 00 f0  ff ff 80 f0  ff ff 00 00  01 02 01 00  00 00 98 1f  00 02 00 00  至少第一第二个数据是12,01为什么???????大佬门看看哦

[编辑 -  1/5/05 by  dxyldl]

[编辑 -  1/5/05 by  dxyldl]
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-05 13:25
void get_descriptor(void)
{

unsigned char bDescriptor = MSB(ControlData.DeviceRequest.wValue);
if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE) //01|01
{
code_transmit((unsigned char *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR)); /*现在主要是怀疑这句的问题,sizeof(USB_DEVICE_DESCRIPTOR)值是12,哦还有我的CPU是ARM7的,不需要CODE */
}
else

stall_ep0();
}
还有
*********************************
void code_transmit(unsigned char * pRomData, unsigned short len) //len返回是12
{
ControlData.wCount = 0;
if(ControlData.wLength > len) //ControlData.wLength 是40
{
ControlData.wLength = len;//发送数据长度限制
}

ControlData.pData = pRomData;

if( ControlData.wLength >= EP0_PACKET_SIZE)
{ // 如果发送代码大于包长度
D12_WriteBuffer(1, ControlData.pData, EP0_PACKET_SIZE);
ControlData.wCount += EP0_PACKET_SIZE;
为什么抓到的数据是这样?80 06 00 02  00 00 ff 00     GET DESCRIPTOR            
   7.0  DI     0a 02 33 00  01 01 00 60  32 00 00 f0  ff ff 80 f0  ff ff 00 00  01 02 01 00  00 00 98 1f  00 02 00 00  至少第一第二个数据是12,01为什么???????大佬门看看哦

[编辑 -  1/5/05 by  dxyldl]

[编辑 -  1/5/05 by  dxyldl]

从数据可以肯定是你的指针问题,DeviceDescr是怎样定义的?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-06 08:13
typedef
 struct _USB_DEVICE_DESCRIPTOR {
    UCHAR bLength;        
    UCHAR bDescriptorType;
    USHORT bcdUSB;        
    UCHAR bDeviceClass;  
    UCHAR bDeviceSubClass;  
    UCHAR bDeviceProtocol;  
    UCHAR bMaxPacketSize0;  
    USHORT idVendor;      
    USHORT idProduct;      
    USHORT bcdDevice;      
    UCHAR iManufacturer;  
    UCHAR iProduct;        
    UCHAR iSerialNumber;    
    UCHAR bNumConfigurations;  
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;



****************************************
USB_DEVICE_DESCRIPTOR  DeviceDescr=
{
sizeof(USB_DEVICE_DESCRIPTOR),   //bLength   =12H
    USB_DEVICE_DESCRIPTOR_TYPE,          //bDescriptorType  =01H
    0x0110,                        //bcdUSB  =1.10
    USB_CLASS_CODE_TEST_CLASS_DEVICE,    //bDeviceClass  =0dch
    0,                                   //bDeviceSubClass 设备子类 设备协议
    0,                                   //bDeviceProtocol
   EP0_PACKET_SIZE,                      //bMaxPacketSize0  =10H 端点0的最大数据包
0x0471,                 //idvendor    厂商,设备ID
0x0666,                 //idproduct      
0x0100,                    //bcddevice  设备系列号,
    0,                 //iManufactory  索引
    0,                 //iProduct
    0,                 //iSerialNumber
    1                          //bNumConfigurations,可能配置数
    //25                        
};我的是小端输出,不需要SWAP语句,还有CPU是ARM7的
dxyldl
驱动老牛
驱动老牛
  • 注册日期2004-11-17
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-06 13:12
老大帮我看看啊,可能是硬件的问题吗?
我的  VOUT33是悬空的,VDD接5V电源A0是接CPU的
是 ADS的问题,,SIZEOF的问题

[编辑 -  1/6/05 by  dxyldl]

[编辑 -  2/22/05 by  dxyldl]
游客

返回顶部