我下載的推薦的鍵、鼠例程,修改(我的CPU為aduc847)后,可以正確連接USB鼠標(biāo),且讀取數(shù)據(jù)正常;連接USB鍵盤:鍵盤燈可點(diǎn)亮。不按任何鍵,鍵盤燈一直亮;按下任何鍵,有一定時(shí)間的延時(shí)后,鍵盤燈熄滅,單片機(jī)串口輸出數(shù)據(jù):c4 12 0d 21 77 09 12 1d 后,程序、鍵盤均不再有任何反應(yīng)。僅單片機(jī)復(fù)位后,鍵盤任無反應(yīng)。拔出鍵盤,單片機(jī)復(fù)位,接入鍵盤,可重復(fù)上訴過程。望高人指點(diǎn)12,謝謝!
把鍵盤的配置描述符 貼出來看看。。
我讀取的配置描述符: Data Phase Description ------------------------------------------------------------------ ----- ---------------- 80 06 00 01 00 00 12 00 CTL GET DESCRIPTOR 12 00 00 00 LEN 18 12 01 10 01 00 00 00 08 4f 1c 02 00 10 01 01 02 00 01 DO ........O....... 80 06 00 02 00 00 09 00 CTL GET DESCRIPTOR 09 00 00 00 LEN 9 09 02 22 00 01 01 00 a0 31 DO ..".....1 80 06 00 02 00 00 22 00 CTL GET DESCRIPTOR 22 00 00 00 LEN 34 09 02 22 00 01 01 00 a0 31 09 04 00 00 01 03 01 01 00 09 21 DO ..".....1....... 10 01 00 01 22 36 00 07 05 81 03 08 00 09 01 00 00 00 00 00 CTL SET CONFIG 21 0a 00 00 00 00 00 00 CTL SET IDLE 81 06 00 22 00 00 76 00 CTL GET DESCRIPTOR 36 00 00 00 LEN 54 05 01 09 06 a1 01 05 08 19 01 29 03 15 00 25 01 75 01 95 03 DI ..........)...%. 91 02 95 05 91 01 05 07 19 e0 29 e7 21 09 00 02 00 00 01 00 CTL SET REPORT 01 00 00 00 LEN 1 01 DO . 08 00 00 00 LEN 8 00 00 00 00 00 00 00 00 DI ........
從配置描述符來看,就是一個(gè)普通的鍵盤,確認(rèn)枚舉的各個(gè)過程是不是都成功了?也可以換個(gè)鍵盤試一下 參考例程:http://wch.cn/bbs/View.asp?S=101&I=19463
按給定例程修改后,可正常完成鍵盤枚舉(串口監(jiān)視為成功),但操作鍵盤,則鍵盤等一段時(shí)間后,指示燈熄滅,輸出一組隨機(jī)數(shù)據(jù)。在操作鍵盤,鍵盤無反應(yīng)。間隔一定時(shí)間后,串口可輸出一組相同的數(shù)據(jù)。
你看下你程序里面獲取鍵盤數(shù)據(jù)的程序里面的端點(diǎn)號(hào)是多少?你的這個(gè)鍵盤的端點(diǎn)號(hào)是0X01,還有就是對(duì)于鍵盤的話,SET-REPORT這個(gè)命令是必須要發(fā)下去的。
"SET-REPORT"命令我已發(fā)送;鍵盤的端點(diǎn)號(hào),從那里可以看到。謝謝!
你把獲取鍵盤數(shù)據(jù)的程序貼出來看下,在獲取數(shù)據(jù)的地方就有數(shù)據(jù)。
是那個(gè)"0x81"或"0x82"嗎?但按手冊(cè),端口應(yīng)該是"0x01"或"0x02"呀?
最高位表示端點(diǎn)的方向,為1表示上傳,為0表示下傳,用的時(shí)候不需要考慮這個(gè)位
哈哈!我將鍵盤的端點(diǎn)號(hào)指向哪個(gè)"0x81",一切都OK了。謝謝樓上的幫助。 另外,鍵盤、鼠標(biāo)連接斷開檢測(cè),如何做?我用過CH375的連接測(cè)試命令,但檢測(cè)好像有問題:不是太慢、就是檢測(cè)不可靠。
斷開或連接,CH375都會(huì)產(chǎn)生中斷,另外,就是用TEST_CONNECT,這個(gè)命令一般2us就能完成了,不會(huì)很慢,更不會(huì)不可靠,單獨(dú)做個(gè)測(cè)試程序驗(yàn)證一下
那肯定是我的程序問題了。我在試試。只是我的程序,是在主程序循環(huán)(1ms一次)中使用TEST_CONNECT命令(關(guān)中斷使用),要等也許10秒以上,才能檢測(cè)到,不知何故?我在學(xué)習(xí)學(xué)習(xí)。謝謝!
鼠標(biāo)可以讀到數(shù)據(jù) 鍵盤讀不到數(shù)據(jù) 并且返回的代碼也不對(duì) 這是怎么回事