STM32串口?->?CH375B(5V)?->?USB鍵盤(pán)
下面是監(jiān)控到的數(shù)據(jù),并且自己翻譯了一下:
?CMD:發(fā)送命令,DAT:發(fā)送數(shù)據(jù),RTN:返回的數(shù)據(jù);
[CMD?22][RTN?15]?//中斷,設(shè)備連接
[CMD?15][DAT?07][RTN?51]?//設(shè)置模式7
[CMD?15][DAT?06][RTN?51]?//設(shè)置模式6
[CMD?22][RTN?15]?//中斷,設(shè)備連接
[CMD?0B][DAT?17][DAT?D8]???//慢速
[CMD?1D][DAT?80]????//端點(diǎn)發(fā)送器?DATA0包(DATA0包,DATA1包交替使用)
[CMD?2B][DAT?08][DAT?80][DAT?06][DAT?00][DAT?01][DAT?00][DAT?00][DAT?12][DAT?00]?//寫(xiě)入80?06?00?01?00?00?00?12?00數(shù)據(jù)到主機(jī)端點(diǎn)(讀設(shè)備描述符,長(zhǎng)度12)
[CMD?4F][DAT?0D]????//執(zhí)行SETUP事務(wù),發(fā)送建立數(shù)據(jù)(375芯片?-->??USB設(shè)備)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?1C][DAT?C0]????//端點(diǎn)接收器,讀入DATA1包??
[CMD?4F][DAT?09]????//執(zhí)行IN事務(wù),接受數(shù)據(jù)???
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?28][RTN?08][RTN?12][RTN?01][RTN?10][RTN?01][RTN?00][RTN?00][RTN?00][RTN?08]??//從緩沖區(qū)讀入數(shù)據(jù)
[CMD?1C][DAT?80]????//端點(diǎn)接收器,讀入DATA0包
[CMD?4F][DAT?09]????//執(zhí)行IN事務(wù),接受數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?28][RTN?08][RTN?D9][RTN?04][RTN?03][RTN?15][RTN?10][RTN?03][RTN?01][RTN?02]
[CMD?1C][DAT?C0]????//端點(diǎn)接收器,讀入DATA1包
[CMD?4F][DAT?09]????//執(zhí)行IN事務(wù),接受數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?28][RTN?02][RTN?00][RTN?01]?//共收到設(shè)備描述符:12?01?10?01?00?00?00?08?D9?04?03?15?10?03?01?02?00?01?
[CMD?1D][DAT?C0]????//端點(diǎn)發(fā)送器,?DATA1包
[CMD?2B][DAT?00]????//寫(xiě)入0數(shù)據(jù)到主機(jī)端點(diǎn)
[CMD?4F][DAT?01]????//執(zhí)行out事務(wù),發(fā)送數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
?
[CMD?45][DAT?05]????//設(shè)置USB設(shè)備地址為5
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?13][DAT?05]config???//設(shè)置主機(jī)USB地址為5
?
[CMD?1D][DAT?80]????//端點(diǎn)發(fā)送器,?DATA0包
[CMD?2B][DAT?08][DAT?80][DAT?06][DAT?00][DAT?02][DAT?00][DAT?00][DAT?09][DAT?00]?//寫(xiě)入80?06?00?02?00?00?00?09?00數(shù)據(jù)到主機(jī)端點(diǎn)(讀配置描述符,長(zhǎng)度9)
[CMD?4F][DAT?0D]????//執(zhí)行SETUP事務(wù),發(fā)送建立數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?1C][DAT?C0]????//端點(diǎn)接收器,讀入DATA1包
[CMD?4F][DAT?09]????//執(zhí)行IN事務(wù),接受數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?28][RTN?08][RTN?09][RTN?02][RTN?3B][RTN?00][RTN?02][RTN?01][RTN?00][RTN?A0]??
[CMD?1C][DAT?80]????//端點(diǎn)接收器,讀入DATA0包
[CMD?4F][DAT?09]????//執(zhí)行IN事務(wù),接受數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?28][RTN?01][RTN?32]???//接受到配置描述符:09?02?3B?00?02?01?00?A0?32
[CMD?1D][DAT?C0]????//端點(diǎn)發(fā)送器,DATA1包
[CMD?2B][DAT?00]????//寫(xiě)入0數(shù)據(jù)到主機(jī)端點(diǎn)
[CMD?4F][DAT?01]????//執(zhí)行out事務(wù),發(fā)送數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
config?2
?
[CMD?1D][DAT?80]????//端點(diǎn)發(fā)送器,?DATA0包
[CMD?2B][DAT?08][DAT?80][DAT?06][DAT?00][DAT?02][DAT?00][DAT?00][DAT?3B][DAT?00]
[CMD?4F][DAT?0D]????//執(zhí)行SETUP事務(wù),發(fā)送建立數(shù)據(jù)
[CMD?22][RTN?14]
[CMD?1C][DAT?C0]????//端點(diǎn)接收器,讀入DATA1包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?09][RTN?02][RTN?3B][RTN?00][RTN?02][RTN?01][RTN?00][RTN?A0]
[CMD?1C][DAT?80]????//端點(diǎn)接收器,讀入DATA0包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?32][RTN?09][RTN?04][RTN?00][RTN?00][RTN?01][RTN?03][RTN?01]
[CMD?1C][DAT?C0]????//端點(diǎn)接收器,讀入DATA1包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?01][RTN?00][RTN?09][RTN?21][RTN?10][RTN?01][RTN?00][RTN?01]
[CMD?1C][DAT?80]????//端點(diǎn)接收器,讀入DATA0包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?22][RTN?3E][RTN?00][RTN?07][RTN?05][RTN?81][RTN?03][RTN?08]
[CMD?1C][DAT?C0]????//端點(diǎn)接收器,讀入DATA1包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?00][RTN?0A][RTN?09][RTN?04][RTN?01][RTN?00][RTN?01][RTN?03]
[CMD?1C][DAT?80]????//端點(diǎn)接收器,讀入DATA0包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?00][RTN?00][RTN?00][RTN?09][RTN?21][RTN?10][RTN?01][RTN?00]
[CMD?1C][DAT?C0]????//端點(diǎn)接收器,讀入DATA1包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?01][RTN?22][RTN?65][RTN?00][RTN?07][RTN?05][RTN?82][RTN?03]
[CMD?1C][DAT?80]????//端點(diǎn)接收器,讀入DATA0包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?03][RTN?08][RTN?00][RTN?0A]??//收到完整配置描述符:09?02?3B?00?02?01?00?A0?32?09?04?00?00?01?03?01?01?00?09?21?10?01?00?01?22?3E?00?07?05?81?03?08?00?????????????0A?09?04?01?00?01?03?00?00?00?09?21?10?01?00?01?22?65?00?07?05?82?03?08?00?0A
[CMD?1D][DAT?C0]????//端點(diǎn)發(fā)送器,DATA1包
[CMD?2B][DAT?00]????//寫(xiě)入0數(shù)據(jù)到主機(jī)端點(diǎn)
[CMD?4F][DAT?01]????//執(zhí)行out事務(wù),發(fā)送數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
?
[CMD?49][DAT?01]????//設(shè)置配置值為01
[CMD?22][RTN?14]????//中斷,操作成功
?
set?idle
[CMD?1D][DAT?80]????//端點(diǎn)發(fā)送器,讀入DATA0包
[CMD?2B][DAT?08][DAT?21][DAT?0A][DAT?00][DAT?00][DAT?00][DAT?00][DAT?00][DAT?00]??//設(shè)置空閑模式命令
[CMD?4F][DAT?0D]????//執(zhí)行SETUP事務(wù),發(fā)送建立數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?1C][DAT?C0]????//端點(diǎn)接受器,?讀入DATA1包
[CMD?4F][DAT?09]????//執(zhí)行IN事務(wù),接受數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?28][RTN?00]????//讀入數(shù)據(jù)
?
report
[CMD?1D][DAT?80]????//端點(diǎn)發(fā)送器,DATA0包
?
[CMD?2B][DAT?08][DAT?81][DAT?06][DAT?00][DAT?22][DAT?00][DAT?00][DAT?A5][DAT?00]??//發(fā)送獲取HID報(bào)告描述符
[CMD?4F][DAT?0D]????//執(zhí)行SETUP事務(wù),發(fā)送建立數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?1C][DAT?C0]????//端點(diǎn)接受器,?DATA1包
[CMD?4F][DAT?09]????//執(zhí)行IN事務(wù),接受數(shù)據(jù)
[CMD?22][RTN?14]????//中斷,操作成功
[CMD?28][RTN?08][RTN?05][RTN?01][RTN?09][RTN?06][RTN?A1][RTN?01][RTN?05][RTN?07]
[CMD?1C][DAT?80]????//端點(diǎn)接受器,?讀入DATA0包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?19][RTN?E0][RTN?29][RTN?E7][RTN?15][RTN?00][RTN?25][RTN?01]
[CMD?1C][DAT?C0]????//端點(diǎn)接受器,?讀入DATA1包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?75][RTN?01][RTN?95][RTN?08][RTN?81][RTN?02][RTN?95][RTN?01]
[CMD?1C][DAT?80]????//端點(diǎn)接受器,?讀入DATA0包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?75][RTN?08][RTN?81][RTN?01][RTN?95][RTN?03][RTN?75][RTN?01]
[CMD?1C][DAT?C0]????//端點(diǎn)接受器,?讀入DATA1包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?05][RTN?08][RTN?19][RTN?01][RTN?29][RTN?03][RTN?91][RTN?02]
[CMD?1C][DAT?80]????//端點(diǎn)接受器,?讀入DATA0包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?95][RTN?05][RTN?75][RTN?01][RTN?91][RTN?01][RTN?95][RTN?06]
[CMD?1C][DAT?C0]????//端點(diǎn)接受器,?讀入DATA1包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?75][RTN?08][RTN?26][RTN?FF][RTN?00][RTN?05][RTN?07][RTN?19]
[CMD?1C][DAT?80]????//端點(diǎn)接受器,?讀入DATA0包
[CMD?4F][DAT?09]
[CMD?22][RTN?14]
[CMD?28][RTN?06][RTN?00][RTN?29][RTN?91][RTN?81][RTN?00][RTN?C0]
[CMD?1D][DAT?C0]????//端點(diǎn)發(fā)送器,?DATA1包
[CMD?2B][DAT?00]????//往端點(diǎn)發(fā)送器寫(xiě)入數(shù)據(jù)0
[CMD?4F][DAT?01]????//執(zhí)行out事務(wù),發(fā)送數(shù)據(jù)
[CMD?22][RTN?14]
05?01?09?06?A1?01?05?07?19?E0?29?E7?15?00?25?01?75?01?95?08?81?02?95?01?75?08?81?01?95?03?75?01?05?08?19?01?29?03?91?02?95?05?75?01?91?01?95?06?75?08?26?FF?00?05?07?19?00?29?91?81?00?C0?
set?report
[CMD?1D][DAT?80]????//端點(diǎn)發(fā)送器,?DATA0包
[CMD?2B][DAT?08][DAT?21][DAT?09][DAT?00][DAT?02][DAT?00][DAT?00][DAT?01][DAT?00]
[CMD?4F][DAT?0D]????//執(zhí)行SETUP事務(wù),發(fā)送建立數(shù)據(jù)
[CMD?22][RTN?14]
[CMD?1D][DAT?C0]????//端點(diǎn)發(fā)送器,?DATA1包
[CMD?2B][DAT?01][DAT?01]???//點(diǎn)亮鍵盤(pán)燈
[CMD?4F][DAT?01]????//執(zhí)行out事務(wù),發(fā)送數(shù)據(jù)
[CMD?22][RTN?14]????
[CMD?1C][DAT?C0]????//端點(diǎn)接受器,?讀入DATA1包
[CMD?4F][DAT?09]????//執(zhí)行IN事務(wù),接受數(shù)據(jù)
[CMD?22][RTN?14]????
[CMD?28][RTN?00]set?report?OK!??//接受數(shù)據(jù)
?
[CMD?1C][DAT?80]????//端點(diǎn)接受器,?讀入DATA0包
[CMD?4F][DAT?29]wait?INT???//執(zhí)行IN事務(wù),接受數(shù)據(jù)
?
//緩慢按鍵盤(pán)?獲得如下數(shù)據(jù),
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?00][RTN?00][RTN?1E][RTN?00][RTN?00][RTN?00][RTN?00][RTN?00]??//鍵碼00?00?1E?00?00?00?00?00?(按下1鍵)
[CMD?1C][DAT?C0]
[CMD?4F][DAT?19]
//此處鍵盤(pán)松開(kāi),檢測(cè)到INT,但是讀串口錯(cuò)誤
[CMD?16][RTN?FF]????????//檢測(cè)到INT腳變低,但是串口20mS超時(shí),沒(méi)收到數(shù)據(jù),我就給了一個(gè)FF返回值
[CMD?1C][DAT?80]
[CMD?4F][DAT?19]wait?INT
//?此處再次按鍵盤(pán),但沒(méi)有INT
[CMD?22][RTN?14]
[CMD?28][RTN?08][RTN?00][RTN?00][RTN?00][RTN?00][RTN?00][RTN?00][RTN?00][RTN?00]??//鍵碼00?00?00?00?00?00?00?00?(松開(kāi))
[CMD?1C][DAT?C0]
[CMD?4F][DAT?19]
//?此處再次按鍵盤(pán),檢測(cè)到INT,但是讀串口錯(cuò)誤
[CMD?16][RTN?FF]????????//檢測(cè)到INT腳變低,但是串口20mS超時(shí),沒(méi)收到數(shù)據(jù),我就給了一個(gè)FF返回值
[CMD?1C][DAT?80]
[CMD?4F][DAT?19]wait?INT
?
//快速按鍵盤(pán),根本就沒(méi)有反應(yīng)。INT腳不變低??!INT腳是在線程中每5mS檢測(cè)一次。
?
這可能是軟件問(wèn)題,還是硬件問(wèn)題??
?