ch374T操作usb鼠標(biāo)碰到的問題

我現(xiàn)在用的是ch374T的主機(jī)模式來操作USB鼠標(biāo),通過和arm9單片機(jī)spi接口和374進(jìn)行通信來和鼠標(biāo)通信。程序用的是貴司提供的ch374_hid.c

現(xiàn)在MCU和ch374之間可以進(jìn)行正常的通信。上電之后,24MHz的晶體能夠正常其振,spi讀取ch374內(nèi)部寄存器0~64的內(nèi)容和datasheet中規(guī)定默認(rèn)值想吻合。設(shè)備描述,配制等到hid描述符都可以正常枚舉,但是沒有到了獲得鼠標(biāo)數(shù)據(jù) next_operate2: // 下面開始讀取數(shù)據(jù) ( 實(shí)際在讀取數(shù)據(jù)的時(shí)候,要先發(fā)送中斷端點(diǎn)的令牌來讀取數(shù)據(jù),接著才能獲取到數(shù)據(jù) ) tog1=0; //開始取DATA0 while(1) { s=Interrupt_Data_Trans(buf); if(s==USB_INT_SUCCESS) { for(i=0;i!=8;i++) printf("%02x ",(unsigned short)buf[i]); printf("\n"); } else if(s==USB_INT_DISCONNECT) // 這個(gè)是為了知道設(shè)備拔出產(chǎn)生的中斷狀態(tài) { close_bit_flag=1; break; } } 時(shí)候就不能獲得鼠標(biāo)的數(shù)據(jù).程序一直在上面的while(1)中循環(huán),接收不到鼠標(biāo)的任何數(shù)據(jù),即使換了幾個(gè)鼠標(biāo)也是如此(鼠標(biāo)有移動(dòng)). //串口輸出的信息如下: Wait Device In Reset Device Start Low-Speed Device GetDeviceDescr: 12 01 10 01 00 00 00 08 d9 15 37 0a 00 01 00 01 00 01 address_status=14 09 02 22 00 09 02 22 00 01 01 00 a0 32 09 04 00 00 01 03 01 02 00 09 21 10 01 00 01 22 34 00 07 05 81 03 04 00 0a hid_des_leng=34 endp_in_addr=08 endp_out_addr=00 config_status=14 SetUsbConfig_success Set_Idle Set_idle success Get_Hid_Des HID_Desc: 05 01 09 02 a1 01 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 01 05 01 09 30 09 31 09 38 15 80 25 7f 75 08 95 03 81 06 c0 c0

后來我為了驗(yàn)證PID_IN令牌,endp_in_addr端點(diǎn)地址等是否發(fā)送成功,就在HostTransact374中加了兩個(gè)語句: ..... s = Read374Byte( REG_INTER_FLAG ); // 獲取中斷狀態(tài) printf("sa=%02x \n",(T_U16)s);//自己添加的 ...... Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_TRANSFER );//清中斷標(biāo)志 s = Read374Byte( REG_USB_STATUS ); // USB狀態(tài) r = s & BIT_STAT_DEV_RESP; // USB設(shè)備應(yīng)答狀態(tài) printf("sb=%02x \n",(T_U16)s);//自己添加的

我主要在上述兩處加了兩個(gè)printf調(diào)試信息,其他的地方都沒有改動(dòng).打印REG_INTER_FLAG和REG_USB_STATUS的寄存器的值.

//串口信息如下 HID_Desc: 05 01 09 02 a1 01 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 01 05 01 09 30 09 31 09 38 15 80 25 7f 75 08 95 03 81 06 c0 c0 sa=f5 sb=80 sa=f5 sb=80 sa=f5 在枚舉成功后HID_Desc,就無法收到鼠標(biāo)的數(shù)據(jù),REG_USB_STATUS=0x80,低四位為0.

后來出現(xiàn)了一個(gè)更奇怪的現(xiàn)象,我將鼠標(biāo)拔出去,然后再插上,居然出現(xiàn)了下面的數(shù)據(jù), sa=f5 sb=88 sa=f5 sb=93 d9 15 37 0a 05 01 09 02 sa=f5 sb=80 sa=f5 sb=9b a1 01 09 01 a1 00 05 09 sa=f5 sb=88 sa=f5 sb=93 19 01 29 03 15 00 25 01 sa=f5 sb=80 sa=f5 sb=9b 95 03 75 01 81 02 95 01 sa=f5 sb=88 sa=f5 sb=93 75 05 81 01 05 01 09 30 sa=f5 sb=80 sa=f5 sb=9b 09 31 09 38 15 80 25 7f sa=f5 sb=88 sa=f5 sb=93 75 08 95 03 81 06 c0 c0 sa=f5 sb=80 sa=f5 sb=9b 12 01 10 01 00 00 00 08 sa=f5 sb=88 sa=f5 sb=93 d9 15 37 0a 05 01 09 02 sa=f5 sb=80 sa=f5 sb=9b

仔細(xì)分析這些數(shù)據(jù),他們是HID_Desc的內(nèi)容,現(xiàn)在非常疑惑不知道哪里出了問題,請貴司的技術(shù)人員幫我分析一下,萬分感激.

endp_in_addr=08這個(gè)變量不正確,正確分析到的數(shù)據(jù)的話那上面這個(gè)鼠標(biāo)來說,數(shù)據(jù)應(yīng)該是0X81


但是我是用你們提供的ch374_hid程序,除了改了spi接口問題,程序其他的地方都沒有做改動(dòng).為什么會(huì)出現(xiàn)這種情況呢?謝謝!


請問一下hcn你是知道我的endp_in_addr一定為0X81,如何得出來的,難道GetConfigDescr那個(gè)函數(shù)有誤嗎?


07 05 81 03 04 00 0a 81就是端點(diǎn)號(hào).


我的也和上面樓主說的差不多。我也什么也沒有改,已經(jīng)改了下接口。但我的是在設(shè)置USB設(shè)備配置時(shí)出現(xiàn)錯(cuò)誤顯示的是2A。查了好久不知道那里出了問題。。。請貴司的技術(shù)人員幫我分析一下,萬分感激.


0 0 80 0 d1 40 c0 3 0 40 ea fe 0 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 4d 95 39 5b 42 8f 15 11 80 32 1a 83 d3 32 40 20 48 21 af 50 1 6b 2c 70 6e 2d 48 cd 3a 2 42 Start CH374 Host Wait USB device inset... Reset Device Start Full-Speed Device GetDeviceDescr: device_status=2e Wait Device Out Wait USB device inset... Reset Device Start Full-Speed Device GetDeviceDescr: device_status=14 12 1 0 2 0 0 0 8 CF 1B DA 8 11 26 0 2 0 1 address_status=14 9 2 3b 0 9 2 3B 0 2 1 0 A0 32 9 4 0 0 1 3 1 1 0 9 21 0 1 0 1 22 41 0 7 5 81 3 8 0 2 9 4 1 0 1 3 1 2 0 9 21 0 1 0 1 22 74 0 7 5 82 3 8 0 1 hid_des_leng=74 HID MOSE/KEY endp_in_addr=1 endp_out_addr=0 config_status=14 ERROR = 2A Wait Device Out

這是我讀鼠標(biāo)串口反回的信息??!查了好久不知道那里出了問題。。。請貴司的技術(shù)人員幫我分析一下,萬分感激.


0 0 80 0 d1 40 c0 3 0 40 ea fe 0 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 4d 95 39 5b 42 8f 15 11 80 32 1a 83 d3 32 40 20 48 21 af 50 1 6b 2c 70 6e 2d 48 cd 3a 2 42 Start CH374 Host Wait USB device inset... Reset Device Start Full-Speed Device GetDeviceDescr: device_status=2e Wait Device Out Wait USB device inset... Reset Device Start Full-Speed Device GetDeviceDescr: device_status=14 12 1 0 2 0 0 0 8 CF 1B DA 8 11 26 0 2 0 1 address_status=14 9 2 3b 0 9 2 3B 0 2 1 0 A0 32 9 4 0 0 1 3 1 1 0 9 21 0 1 0 1 22 41 0 7 5 81 3 8 0 2 9 4 1 0 1 3 1 2 0 9 21 0 1 0 1 22 74 0 7 5 82 3 8 0 1 hid_des_leng=74 HID MOSE/KEY endp_in_addr=1 endp_out_addr=0 config_status=14 ERROR = 2A Wait Device Out

這是我讀鼠標(biāo)串口反回的信息??!查了好久不知道那里出了問題。。。請貴司的技術(shù)人員幫我分析一下,萬分感激.


這個(gè)鼠標(biāo)是一個(gè)復(fù)合設(shè)備,操作和普通的鼠標(biāo)有點(diǎn)區(qū)別 ,參考下面的程序修改 UploadImages/20101258385968.rar


你這個(gè)鼠標(biāo)是一個(gè)復(fù)合設(shè)備,你可以去看下你需要取數(shù)據(jù)的是哪個(gè)端點(diǎn),也就是說你取數(shù)據(jù)的端點(diǎn)可能是端點(diǎn)0X81也可能是端點(diǎn)0X82.


謝謝_study_提供的程序,現(xiàn)在行了可以拿來給小車定位了,呵呵。。。。。。非常感謝貴司的技術(shù)人員。。。


請問樓上是怎么解決的,謝謝


HUB 0 device out Wait Device In Wait Device In HUB 0 device in Reset Device Start Low-Speed Device 0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x08 0x8F 0x0E 0x22 0x00 0x10 0x02 0x01 0x02 0x00 0x01 GetConfigDescr: 0x09 0x02 0x3B 0x00 0x02 0x01 0x00 0xA0 0x32 0x09 0x04 0x00 0x00 0x01 0x03 0x01 0x01 0x00 0x09 0x21 0x10 0x01 0x00 0x01 0x22 0x3E 0x00 0x07 0x05 0x81 0x03 0x08 0x00 0x0A 0x09 0x04 0x01 0x00 0x01 0x03 0x00 0x00 0x01 0x09 0x21 0x10 0x01 0x00 0x01 0x22 0x47 0x00 0x07 0x05 0x82 0x03 0x03 0x00 0x0A USB-Print Ready Not HID Device , So Not Support Not HID Device , So Not Support


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频