最近再弄daplink 描述符配置從現(xiàn)成的例程上移植的 也正常枚舉過 是沒有問題的
但是修改完endpoint的配置 修改中斷中重置端口 和置端口stall那塊代碼后 燒錄就無法正常枚舉了
然后奇怪的事情就來了 按p0.36和復位引腳 大概率又能正常枚舉
最近再弄daplink 描述符配置從現(xiàn)成的例程上移植的 也正常枚舉過 是沒有問題的
但是修改完endpoint的配置 修改中斷中重置端口 和置端口stall那塊代碼后 燒錄就無法正常枚舉了
然后奇怪的事情就來了 按p0.36和復位引腳 大概率又能正常枚舉
您好,如果可以的話可以將您修改的代碼貼出來看看,同時枚舉過程可以用抓包工具抓取,看看枚舉流程發(fā)送了什么錯誤。
Device? Phase? Data? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Description? ? ? ? ? ? ? ? ? ? ? ?Cmd.Phase.Ofs(rep)
------? -----? ------------------------------------------------------------------------------------------------------? --------------------------------? ------------------
? 43.0? CTL? ? 80 06 00 02? 00 00 09 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? ?1.1.0? ? ? ??
? 43.0? IN? ? ?09 02 20 00? 01 01 00 80? 32? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .. .....2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.2.0? ? ? ??
? 43.0? CTL? ? 80 06 00 02? 00 00 20 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? ?2.1.0? ? ? ??
? 43.0? IN? ? ?09 02 20 00? 01 01 00 80? 32 09 04 00? 00 02 ff 80? 55 00 07 05? 82 02 40 00? 00 07 05 02? 02 40 00 00? .. .....2.......U.....@......@..? ? ? ? ?2.2.0? ? ? ??
? 43.0? CTL? ? 00 09 01 00? 00 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SET CONFIG? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.1.0? ? ? ??
? 44.0? CTL? ? 80 06 00 01? 00 00 12 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? ?4.1.0? ? ? ??
? 44.0? IN? ? ?12 01 10 02? ef 02 01 40? 28 0d 04 02? 00 01 01 02? 03 01? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......@(.........? ? ? ? ? ? ? ? ? ? ? ?4.2.0? ? ? ??
? 44.0? CTL? ? 80 06 00 02? 00 00 09 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? ?5.1.0? ? ? ??
? 44.0? IN? ? ?09 02 62 00? 03 01 00 80? fa? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ..b......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5.2.0? ? ? ??
? 44.0? CTL? ? 80 06 00 02? 00 00 62 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? ?6.1.0? ? ? ??
? 44.0? IN? ? ?09 02 62 00? 03 01 00 80? fa 09 04 00? 00 02 ff 00? 00 04 07 05? 01 02 40 00? 00 07 05 81? 02 40 00 00? ..b...................@......@..? ? ? ? ?6.2.0? ? ? ??
? ? ? ? ? ? ? ?08 0b 01 02? 02 02 01 05? 09 04 01 00? 01 02 02 01? 00 05 24 00? 10 01 05 24? 01 00 01 04? 24 02 02 05? ..................$....$....$...? ? ? ? ?6.2.32? ? ? ?
? ? ? ? ? ? ? ?24 06 00 01? 07 05 84 03? 0c 00 01 09? 04 02 00 02? 0a 00 00 00? 07 05 82 02? 40 00 01 07? 05 02 02 40? $.......................@......@? ? ? ? ?6.2.64? ? ? ?
? ? ? ? ? ? ? ?00 01? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6.2.96? ? ? ?
? 44.0? CTL? ? 00 09 01 00? 00 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SET CONFIG? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7.1.0? ? ? ??
? 44.0? CTL? ? 80 06 04 03? 09 04 04 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? ?8.1.0? ? ? ??
? 44.0? IN? ? ?1a 03 43 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..C.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?8.2.0? ? ? ??
? 44.0? CTL? ? 80 06 04 03? 09 04 1a 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? ?9.1.0? ? ? ??
? 44.0? IN? ? ?1a 03 43 00? 4d 00 53 00? 49 00 53 00? 2d 00 44 00? 41 00 50 00? 20 00 76 00? 32 00? ? ? ? ? ? ? ? ? ? ?..C.M.S.I.S.-.D.A.P. .v.2.? ? ? ? ? ? ? ?9.2.0? ? ? ??
? 44.0? CTL? ? 80 06 05 03? 09 04 04 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 10.1.0? ? ? ??
? 44.0? IN? ? ?1e 03 44 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..D.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 10.2.0? ? ? ??
? 44.0? CTL? ? 80 06 05 03? 09 04 1e 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 11.1.0? ? ? ??
? 44.0? IN? ? ?1e 03 44 00? 41 00 50 00? 4c 00 69 00? 6e 00 6b 00? 2d 00 43 00? 44 00 43 00? 45 00 78 00? 74 00? ? ? ? ..D.A.P.L.i.n.k.-.C.D.C.E.x.t.? ? ? ? ? 11.2.0
??
? 45.0? CTL? ? 80 06 00 01? 00 00 12 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 12.1.0? ? ? ??
? 45.0? IN? ? ?12 01 10 02? ef 02 01 40? 28 0d 04 02? 00 01 01 04? 03 01? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......@(.........? ? ? ? ? ? ? ? ? ? ? 12.2.0? ? ? ??
? 45.0? CTL? ? 80 06 00 02? 00 00 09 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 13.1.0? ? ? ??
? 45.0? IN? ? ?09 02 20 00? 01 01 00 80? fa? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .. ......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?13.2.0? ? ? ??
? 45.0? CTL? ? 80 06 00 02? 00 00 20 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 14.1.0? ? ? ??
? 45.0? IN? ? ?09 02 20 00? 01 01 00 80? fa 09 04 00? 00 02 ff 00? 00 04 07 05? 01 02 40 00? 00 07 05 81? 02 40 00 00? .. ...................@......@..? ? ? ? 14.2.0? ? ? ??
? 45.0? CTL? ? 80 00 00 00? 00 00 02 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET STATUS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 15.1.0? ? ? ??
? 45.0? IN? ? ?00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 15.2.0? ? ? ??
? 45.0? CTL? ? 00 09 01 00? 00 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SET CONFIG? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 16.1.0
??
? 44.0? CTL? ? 80 00 00 00? 00 00 02 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET STATUS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 17.1.0? ? ? ??
? 44.0? NTSTS? c00000bb? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? not supported? ? ? ? ? ? ? ? ? ? ? ? ? ?17.2.0? ? ? ??
? 44.0? CTL? ? 01 0b 00 00? 02 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SET INTERFACE? ? ? ? ? ? ? ? ? ? ? ? ? ?18.1.0? ? ? ??
? 44.0? CTL? ? a1 21 00 00? 01 00 07 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLASS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?19.1.0? ? ? ??
? 44.0? IN? ? ?00 e1 00 00? 00 00 08? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?19.2.0? ? ? ??
? 44.0? CTL? ? 21 22 00 00? 01 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLASS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?20.1.0? ? ? ??
? 44.0? CTL? ? 21 20 00 00? 01 00 07 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLASS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?21.1.0? ? ? ??
? 44.0? OUT? ? 00 e1 00 00? 00 00 08? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?21.2.0? ? ? ??
? 44.0? CTL? ? a1 21 00 00? 01 00 07 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLASS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?22.1.0? ? ? ??
? 44.0? IN? ? ?00 e1 00 00? 00 00 08? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?22.2.0? ? ? ??
? 44.0? CTL? ? 80 06 00 01? 00 00 12 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 23.1.0? ? ? ??
? 44.0? IN? ? ?12 01 10 02? ef 02 01 40? 28 0d 04 02? 00 01 01 02? 03 01? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......@(.........? ? ? ? ? ? ? ? ? ? ? 23.2.0? ? ? ??
? 44.0? CTL? ? 80 06 00 02? 00 00 09 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 24.1.0? ? ? ??
? 44.0? IN? ? ?09 02 62 00? 03 01 00 80? fa? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ..b......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?24.2.0? ? ? ??
? 44.0? CTL? ? 80 06 00 02? 00 00 62 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 25.1.0? ? ? ??
? 44.0? IN? ? ?09 02 62 00? 03 01 00 80? fa 09 04 00? 00 02 ff 00? 00 04 07 05? 01 02 40 00? 00 07 05 81? 02 40 00 00? ..b...................@......@..? ? ? ? 25.2.0? ? ? ??
? ? ? ? ? ? ? ?08 0b 01 02? 02 02 01 05? 09 04 01 00? 01 02 02 01? 00 05 24 00? 10 01 05 24? 01 00 01 04? 24 02 02 05? ..................$....$....$...? ? ? ? 25.2.32? ? ? ?
? ? ? ? ? ? ? ?24 06 00 01? 07 05 84 03? 0c 00 01 09? 04 02 00 02? 0a 00 00 00? 07 05 82 02? 40 00 01 07? 05 02 02 40? $.......................@......@? ? ? ? 25.2.64? ? ? ?
? ? ? ? ? ? ? ?00 01? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 25.2.96? ? ? ?
? 44.0? CTL? ? 00 09 01 00? 00 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SET CONFIG? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 26.1.0? ? ? ??
? 44.0? CTL? ? 80 06 04 03? 09 04 04 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 27.1.0? ? ? ??
? 44.0? IN? ? ?1a 03 43 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..C.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 27.2.0? ? ? ??
? 44.0? CTL? ? 80 06 04 03? 09 04 1a 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 28.1.0? ? ? ??
? 44.0? IN? ? ?1a 03 43 00? 4d 00 53 00? 49 00 53 00? 2d 00 44 00? 41 00 50 00? 20 00 76 00? 32 00? ? ? ? ? ? ? ? ? ? ?..C.M.S.I.S.-.D.A.P. .v.2.? ? ? ? ? ? ? 28.2.0? ? ? ??
? 44.0? CTL? ? 80 06 05 03? 09 04 04 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 29.1.0? ? ? ??
? 44.0? IN? ? ?1e 03 44 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..D.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 29.2.0? ? ? ??
? 44.0? CTL? ? 80 06 05 03? 09 04 1e 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 30.1.0? ? ? ??
? 44.0? IN? ? ?1e 03 44 00? 41 00 50 00? 4c 00 69 00? 6e 00 6b 00? 2d 00 43 00? 44 00 43 00? 45 00 78 00? 74 00? ? ? ? ..D.A.P.L.i.n.k.-.C.D.C.E.x.t.? ? ? ? ? 30.2.0
??
? 45.0? CTL? ? 80 06 00 01? 00 00 12 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 31.1.0? ? ? ??
? 45.0? IN? ? ?12 01 10 02? ef 02 01 40? 28 0d 04 02? 00 01 01 04? 03 01? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......@(.........? ? ? ? ? ? ? ? ? ? ? 31.2.0? ? ? ??
? 45.0? CTL? ? 80 06 00 02? 00 00 09 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 32.1.0? ? ? ??
? 45.0? IN? ? ?09 02 20 00? 01 01 00 80? fa? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .. ......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?32.2.0? ? ? ??
? 45.0? CTL? ? 80 06 00 02? 00 00 20 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 33.1.0? ? ? ??
? 45.0? IN? ? ?09 02 20 00? 01 01 00 80? fa 09 04 00? 00 02 ff 00? 00 04 07 05? 01 02 40 00? 00 07 05 81? 02 40 00 00? .. ...................@......@..? ? ? ? 33.2.0? ? ? ??
? 45.0? CTL? ? 80 00 00 00? 00 00 02 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET STATUS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 34.1.0? ? ? ??
? 45.0? IN? ? ?00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 34.2.0? ? ? ??
? 45.0? CTL? ? 00 09 01 00? 00 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SET CONFIG? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 35.1.0? ? ? ??
? 44.0? CTL? ? 80 00 00 00? 00 00 02 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET STATUS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 36.1.0? ? ? ??
? 44.0? NTSTS? c00000bb? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? not supported? ? ? ? ? ? ? ? ? ? ? ? ? ?36.2.0? ? ? ??
? 44.0? CTL? ? 01 0b 00 00? 02 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SET INTERFACE? ? ? ? ? ? ? ? ? ? ? ? ? ?37.1.0? ? ? ??
? 44.0? CTL? ? a1 21 00 00? 01 00 07 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLASS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?38.1.0? ? ? ??
? 44.0? IN? ? ?00 e1 00 00? 00 00 08? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?38.2.0? ? ? ??
? 44.0? CTL? ? 21 22 00 00? 01 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLASS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?39.1.0? ? ? ??
? 44.0? CTL? ? 21 20 00 00? 01 00 07 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLASS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?40.1.0? ? ? ??
? 44.0? OUT? ? 00 e1 00 00? 00 00 08? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?40.2.0? ? ? ??
? 44.0? CTL? ? a1 21 00 00? 01 00 07 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLASS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?41.1.0? ? ? ??
? 44.0? IN? ? ?00 e1 00 00? 00 00 08? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?41.2.0? ? ? ??
? 44.0? CTL? ? 80 06 00 01? 00 00 12 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 42.1.0? ? ? ??
? 44.0? IN? ? ?12 01 10 02? ef 02 01 40? 28 0d 04 02? 00 01 01 02? 03 01? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.......@(.........? ? ? ? ? ? ? ? ? ? ? 42.2.0? ? ? ??
? 44.0? CTL? ? 80 06 00 02? 00 00 09 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 43.1.0? ? ? ??
? 44.0? IN? ? ?09 02 62 00? 03 01 00 80? fa? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ..b......? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?43.2.0? ? ? ??
? 44.0? CTL? ? 80 06 00 02? 00 00 62 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 44.1.0? ? ? ??
? 44.0? IN? ? ?09 02 62 00? 03 01 00 80? fa 09 04 00? 00 02 ff 00? 00 04 07 05? 01 02 40 00? 00 07 05 81? 02 40 00 00? ..b...................@......@..? ? ? ? 44.2.0? ? ? ??
? ? ? ? ? ? ? ?08 0b 01 02? 02 02 01 05? 09 04 01 00? 01 02 02 01? 00 05 24 00? 10 01 05 24? 01 00 01 04? 24 02 02 05? ..................$....$....$...? ? ? ? 44.2.32? ? ? ?
? ? ? ? ? ? ? ?24 06 00 01? 07 05 84 03? 0c 00 01 09? 04 02 00 02? 0a 00 00 00? 07 05 82 02? 40 00 01 07? 05 02 02 40? $.......................@......@? ? ? ? 44.2.64? ? ? ?
? ? ? ? ? ? ? ?00 01? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 44.2.96? ? ? ?
? 44.0? CTL? ? 00 09 01 00? 00 00 00 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SET CONFIG? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 45.1.0? ? ? ??
? 44.0? CTL? ? 80 06 04 03? 09 04 04 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 46.1.0? ? ? ??
? 44.0? IN? ? ?1a 03 43 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..C.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 46.2.0? ? ? ??
? 44.0? CTL? ? 80 06 04 03? 09 04 1a 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 47.1.0? ? ? ??
? 44.0? IN? ? ?1a 03 43 00? 4d 00 53 00? 49 00 53 00? 2d 00 44 00? 41 00 50 00? 20 00 76 00? 32 00? ? ? ? ? ? ? ? ? ? ?..C.M.S.I.S.-.D.A.P. .v.2.? ? ? ? ? ? ? 47.2.0? ? ? ??
? 44.0? CTL? ? 80 06 05 03? 09 04 04 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 48.1.0? ? ? ??
? 44.0? IN? ? ?1e 03 44 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?..D.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 48.2.0? ? ? ??
? 44.0? CTL? ? 80 06 05 03? 09 04 1e 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET DESCRIPTOR? ? ? ? ? ? ? ? ? ? ? ? ? 49.1.0? ? ? ??
? 44.0? IN? ? ?1e 03 44 00? 41 00 50 00? 4c 00 69 00? 6e 00 6b 00? 2d 00 43 00? 44 00 43 00? 45 00 78 00? 74 00? ? ? ? ..D.A.P.L.i.n.k.-.C.D.C.E.x.t.? ? ? ? ? 49.2.0
用bushound抓取的相關log 顯示是獲取一個描述符后面就會重置
/*******************************************************************************
?* Function Name? : DeviceInterrupt()
?* Description? ? : CH552USB中斷處理函數(shù)
?*******************************************************************************/
void DeviceInterrupt(void) interrupt INT_NO_USB using 1 //USB中斷服務程序,使用寄存器組1
{
? ? UINT8 len;
? ? if (UIF_TRANSFER) // USB傳輸完成標志
? ? {
? ? ? ? switch (USB_INT_ST & (MASK_UIS_TOKEN | MASK_UIS_ENDP))
? ? ? ? {
? ? ? ? case UIS_TOKEN_OUT_EP1: // endpoint 1# 端點批量下傳 DAP-CMD
? ? ? ? ? ? if (U_TOG_OK)? ? ? ?// 不同步的數(shù)據(jù)包將丟棄
? ? ? ? ? ? {
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? UEP1_CTRL = UEP1_CTRL & ~ MASK_UEP_R_RES | UEP_R_RES_NAK;? ? ? ?//收到一包數(shù)據(jù)就NAK,主函數(shù)處理完,由主函數(shù)修改響應方式
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case UIS_TOKEN_IN_EP1: // endpoint 1# 端點批量上傳 DAP_ASK
? ? ? ? ? ? UEP1_T_LEN = 0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //預使用發(fā)送長度一定要清空
? ? ? ? ? ? UEP1_CTRL &= ~MASK_UEP_T_RES | UEP_T_RES_NAK; //默認應答NAK
? ? ? ? ? ? break;
? ? ? ? case UIS_TOKEN_OUT_EP2: // endpoint 2# 端點批量下傳 CDC
? ? ? ? ? ? if (U_TOG_OK)? ? ? ?// 不同步的數(shù)據(jù)包將丟棄
? ? ? ? ? ? {
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? UEP2_CTRL = UEP2_CTRL & ~ MASK_UEP_R_RES | UEP_R_RES_NAK;? ? ? ?//收到一包數(shù)據(jù)就NAK,主函數(shù)處理完,由主函數(shù)修改響應方式
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? ? ??
? ? ? ? case UIS_TOKEN_IN_EP2: // endpoint 2# 端點批量上傳 CDC
? ? ? ? ? ? UEP2_T_LEN = 0;? ? //預使用發(fā)送長度一定要清空
? ? ? ? ? ? UEP2_CTRL &= ~MASK_UEP_T_RES | UEP_T_RES_NAK; //默認應答NAK
? ? ? ? ? ? break;
? ? ? ? case UIS_TOKEN_IN_EP4: // endpoint4 IN
? ? ? ? ? ? UEP4_T_LEN = 0;? ? //預使用發(fā)送長度一定要清空
? ? ? ? ? ? UEP4_CTRL &= ~MASK_UEP_T_RES | UEP_T_RES_NAK; //默認應答NAK
? ? ? ? ? ? break;
? ? ? ??
? ? ? ? case UIS_TOKEN_IN_EP0: // endpoint0 IN
? ? ? ? ? ? switch (SetupReq)
? ? ? ? ? ? {
? ? ? ? ? ? case USB_GET_DESCRIPTOR:
? ? ? ? ? ? case 0x20:
? ? ? ? ? ? ? ? len = SetupLen >= THIS_ENDP0_SIZE ? THIS_ENDP0_SIZE : SetupLen; //本次傳輸長度
? ? ? ? ? ? ? ? memcpy(Ep0Buffer, pDescr, len);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//加載上傳數(shù)據(jù)
? ? ? ? ? ? ? ? SetupLen -= len;
? ? ? ? ? ? ? ? pDescr += len;
? ? ? ? ? ? ? ? UEP0_T_LEN = len;
? ? ? ? ? ? ? ? UEP0_CTRL ^= bUEP_T_TOG; //同步標志位翻轉(zhuǎn)
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case USB_SET_ADDRESS:
? ? ? ? ? ? ? ? USB_DEV_AD = USB_DEV_AD & bUDA_GP_BIT | SetupLen;
? ? ? ? ? ? ? ? UEP0_CTRL = UEP_R_RES_ACK | UEP_T_RES_NAK;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? UEP0_T_LEN = 0; //狀態(tài)階段完成中斷或者是強制上傳0長度數(shù)據(jù)包結束控制傳輸
? ? ? ? ? ? ? ? UEP0_CTRL = UEP_R_RES_ACK | UEP_T_RES_NAK;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case UIS_TOKEN_OUT_EP0: // endpoint0 OUT
? ? ? ? ? ? len = USB_RX_LEN;
? ? ? ? ? ? if (SetupReq == 0x20) //設置串口屬性
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (U_TOG_OK)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? memcpy(LineCoding, UsbSetupBuf, USB_RX_LEN);
//? ? ? ? ? ? ? ? ? ? Config_Uart0(LineCoding);
? ? ? ? ? ? ? ? ? ? UEP0_T_LEN = 0;
? ? ? ? ? ? ? ? ? ? UEP0_CTRL |= UEP_R_RES_ACK | UEP_T_RES_ACK; // 準備上傳0包
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? UEP0_T_LEN = 0;
? ? ? ? ? ? ? ? UEP0_CTRL |= UEP_R_RES_ACK | UEP_T_RES_NAK;? //狀態(tài)階段,對IN響應NAK
? ? ? ? ? ? }
? ? ? ? ? ? UEP0_CTRL ^= bUEP_R_TOG; //同步標志位翻轉(zhuǎn)
? ? ? ? ? ? break;
? ? ? ? case UIS_TOKEN_SETUP_EP0: // SETUP事務
? ? ? ? ? ? len = USB_RX_LEN;
? ? ? ? ? ? if (len == (sizeof(USB_SETUP_REQ)))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? SetupLen = UsbSetupBuf->wLengthL;
? ? ? ? ? ? ? ? if (UsbSetupBuf->wLengthH)
? ? ? ? ? ? ? ? ? ? SetupLen = 0xFF; // 限制總長度
? ? ? ? ? ? ? ? len = 0;? ? ? ? ? ? ?// 默認為成功并且上傳0長度
? ? ? ? ? ? ? ? SetupReq = UsbSetupBuf->bRequest;
? ? ? ? ? ? ? ? switch (UsbSetupBuf->bRequestType & USB_REQ_TYP_MASK)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? case USB_REQ_TYP_STANDARD:
? ? ? ? ? ? ? ? ? ? switch (SetupReq) //請求碼
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case USB_GET_DESCRIPTOR:
? ? ? ? ? ? ? ? ? ? ? ? switch (UsbSetupBuf->wValueH)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? case USB_DESCR_TYP_DEVICE:? ? ? ? ? ? ? ?//設備描述符
? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = DevDesc; //把設備描述符送到要發(fā)送的緩沖區(qū)
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(DevDesc);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case USB_DESCR_TYP_CONFIG:? ? ? ? ? ? ? ?//配置描述符
? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = CfgDesc; //把設備描述符送到要發(fā)送的緩沖區(qū)
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(CfgDesc);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case USB_DESCR_TYP_STRING: // 字符串描述符
? ? ? ? ? ? ? ? ? ? ? ? ? ? switch (UsbSetupBuf->wValueL)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = (PUINT8)(&LangDescr[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(LangDescr);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = (PUINT8)(&ManuInfo[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(ManuInfo);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = (PUINT8)(&ProdInfo[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(ProdInfo);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = (PUINT8)(&SerNumber[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(SerNumber);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = (PUINT8)(&DAPInfo[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(DAPInfo);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 5:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = (PUINT8)(&CDCInfo[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(CDCInfo);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; // 不支持的字符串描述符
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case USB_DESCR_TYP_BOS:
? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = (PUINT8)(&BOSDesc[0]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(BOSDesc);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xff; //不支持的命令或者出錯
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case USB_SET_ADDRESS:
? ? ? ? ? ? ? ? ? ? ? ? SetupLen = UsbSetupBuf->wValueL; //暫存USB設備地址
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case USB_GET_CONFIGURATION:
? ? ? ? ? ? ? ? ? ? ? ? Ep0Buffer[0] = UsbConfig;
? ? ? ? ? ? ? ? ? ? ? ? if (SetupLen >= 1)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 1;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case USB_SET_CONFIGURATION:
? ? ? ? ? ? ? ? ? ? ? ? UsbConfig = UsbSetupBuf->wValueL;
? ? ? ? ? ? ? ? ? ? ? ? if (UsbConfig)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Ready = 1; // set config命令一般代表usb枚舉完成的標志
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 0x0A:
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case USB_CLEAR_FEATURE:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// Clear Feature
? ? ? ? ? ? ? ? ? ? ? ? if ((UsbSetupBuf->bRequestType & USB_REQ_RECIP_MASK) == USB_REQ_RECIP_ENDP) // 端點
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? switch (UsbSetupBuf->wIndexL)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x81:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP1_CTRL = UEP1_CTRL & ~(bUEP_T_TOG | MASK_UEP_T_RES) | UEP_T_RES_NAK;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x01:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP1_CTRL = UEP1_CTRL & ~(bUEP_R_TOG | MASK_UEP_R_RES) | UEP_R_RES_ACK;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x82:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP2_CTRL = UEP2_CTRL & ~(bUEP_T_TOG | MASK_UEP_T_RES) | UEP_T_RES_NAK;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x02:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP2_CTRL = UEP2_CTRL & ~(bUEP_R_TOG | MASK_UEP_R_RES) | UEP_R_RES_ACK;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x84:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP4_CTRL = UEP4_CTRL & ~(bUEP_R_TOG | MASK_UEP_T_RES) | UEP_T_RES_NAK;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; // 不支持的端點
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; // 不是端點不支持
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case USB_SET_FEATURE:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* Set Feature */
? ? ? ? ? ? ? ? ? ? ? ? if ((UsbSetupBuf->bRequestType & 0x1F) == 0x00) /* 設置設備 */
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if ((((UINT16)UsbSetupBuf->wValueH << 8) | UsbSetupBuf->wValueL) == 0x01)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (CfgDesc[7] & 0x20)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 設置喚醒使能標志 */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; /* 操作失敗 */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; /* 操作失敗 */
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else if ((UsbSetupBuf->bRequestType & 0x1F) == 0x02) /* 設置端點 */
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if ((((UINT16)UsbSetupBuf->wValueH << 8) | UsbSetupBuf->wValueL) == 0x00)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? switch (((UINT16)UsbSetupBuf->wIndexH << 8) | UsbSetupBuf->wIndexL)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x81:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP1_CTRL = UEP1_CTRL & (~bUEP_T_TOG) | UEP_T_RES_STALL; /* 設置端點1 IN STALL */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x01:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP1_CTRL = UEP1_CTRL & (~bUEP_R_TOG) | UEP_R_RES_STALL; /* 設置端點1 OUT STALL */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x82:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP2_CTRL = UEP2_CTRL & (~bUEP_T_TOG) | UEP_T_RES_STALL; /* 設置端點2 IN STALL */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x02:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP2_CTRL = UEP2_CTRL & (~bUEP_R_TOG) | UEP_R_RES_STALL; /* 設置端點2 OUT STALL */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 0x84:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UEP4_CTRL = UEP4_CTRL & (~bUEP_T_TOG) | UEP_T_RES_STALL; /* 設置端點3 IN STALL */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; /* 操作失敗 */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; /* 操作失敗 */
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; /* 操作失敗 */
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case USB_GET_STATUS:
? ? ? ? ? ? ? ? ? ? ? ? pDescr = (PUINT8)&USB_STATUS;
? ? ? ? ? ? ? ? ? ? ? ? if (SetupLen >= 2)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 2;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = SetupLen;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? len = 0xff; //操作失敗
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case USB_REQ_TYP_CLASS: /*HID類命令*/
? ? ? ? ? ? ? ? ? ? if ((UsbSetupBuf->bRequestType & USB_REQ_RECIP_MASK) == USB_REQ_RECIP_INTERF)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? switch (SetupReq)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? case 0x01://GetReport
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case GET_LINE_CODING:? ?//0x21? currently configured
? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = LineCoding;
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(LineCoding);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case SET_CONTROL_LINE_STATE:? //0x22? generates RS-232/V.24 style control signals
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case SET_LINE_CODING:? ? ? //0x20? Configure
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; /*命令不支持*/
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case USB_REQ_TYP_VENDOR:
? ? ? ? ? ? ? ? ? ? if ((UsbSetupBuf->bRequestType & USB_REQ_RECIP_MASK) == USB_REQ_RECIP_DEVICE)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? switch (SetupReq)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? case 0x20: // GetReport
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (UsbSetupBuf->wIndexL == 0x07)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pDescr = WINDesc; //把設備描述符送到要發(fā)送的緩沖區(qū)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? len = sizeof(WINDesc);
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? len = 0xFF; /*命令不支持*/
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? len = 0xFF;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (len != 0 && len != 0xFF)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if (SetupLen > len)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? SetupLen = len; //限制總長度
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? len = SetupLen >= THIS_ENDP0_SIZE ? THIS_ENDP0_SIZE : SetupLen; //本次傳輸長度
? ? ? ? ? ? ? ? ? ? memcpy(Ep0Buffer, pDescr, len);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//加載上傳數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? SetupLen -= len;
? ? ? ? ? ? ? ? ? ? pDescr += len;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? len = 0xff; //包長度錯誤
? ? ? ? ? ? }
? ? ? ? ? ? if (len == 0xff)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? SetupReq = 0xFF;
? ? ? ? ? ? ? ? UEP0_CTRL = bUEP_R_TOG | bUEP_T_TOG | UEP_R_RES_STALL | UEP_T_RES_STALL; // STALL
? ? ? ? ? ? }
? ? ? ? ? ? else if (len <= THIS_ENDP0_SIZE) //上傳數(shù)據(jù)或者狀態(tài)階段返回0長度包
? ? ? ? ? ? {
? ? ? ? ? ? ? ? UEP0_T_LEN = len;
? ? ? ? ? ? ? ? UEP0_CTRL = bUEP_R_TOG | bUEP_T_TOG | UEP_R_RES_ACK | UEP_T_RES_ACK; //默認數(shù)據(jù)包是DATA1,返回應答ACK
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? UEP0_T_LEN = 0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //雖然尚未到狀態(tài)階段,但是提前預置上傳0長度數(shù)據(jù)包以防主機提前進入狀態(tài)階段
? ? ? ? ? ? ? ? UEP0_CTRL = bUEP_R_TOG | bUEP_T_TOG | UEP_R_RES_ACK | UEP_T_RES_ACK; //默認數(shù)據(jù)包是DATA1,返回應答ACK
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? ? ??
? ? ? ? default:
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? UIF_TRANSFER = 0; //寫0清空中斷
? ? }
? ? if (UIF_BUS_RST) //設備模式USB總線復位中斷
? ? {
? ? ? ? UEP0_CTRL = UEP_R_RES_ACK | UEP_T_RES_NAK;
? ? ? ? UEP1_CTRL = bUEP_AUTO_TOG | UEP_R_RES_ACK | UEP_T_RES_NAK;
? ? ? ? UEP2_CTRL = bUEP_AUTO_TOG | UEP_R_RES_ACK | UEP_T_RES_NAK;
? ? ? ? UEP4_CTRL = bUEP_AUTO_TOG | UEP_R_RES_ACK | UEP_T_RES_NAK;
? ? ? ? USB_DEV_AD = 0x00;
? ? ? ? UIF_SUSPEND = 0;
? ? ? ? UIF_TRANSFER = 0;
? ? ? ? UIF_BUS_RST = 0; //清中斷標志
? ? }
? ? if (UIF_SUSPEND) // USB總線掛起/喚醒完成
? ? {
? ? ? ? UIF_SUSPEND = 0;
? ? ? ? if (USB_MIS_ST & bUMS_SUSPEND) //掛起
? ? ? ? {
? ? ? ? }
? ? }
? ? else
? ? {
? ? ? ? //意外的中斷,不可能發(fā)生的情況
? ? ? ? USB_INT_FG = 0xFF; //清中斷標志
? ? }
}
您好。
貼上來的代碼看起來不太方便,可以直接給出C文件,大致看到有幾點需要注意一下:
1,此處的發(fā)送總長度現(xiàn)在應該是不需要的,可以去除
?if (UsbSetupBuf->wLengthH)
? ? ? ? ? ? ? ? ? ? SetupLen = 0xFF; // 限制總長度
2,此處從軟件抓包看好像沒有回正確的數(shù)據(jù),檢查代碼是否對這個請求做處理
44.0? CTL? ? 80 00 00 00? 00 00 02 00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GET STATUS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 36.1.0? ? ? ??
? 44.0? NTSTS? c00000bb? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? not supported? ? ? ? ? ? ? ? ? ? ? ? ? ?36.2.0? ? ? ??
3,軟件抓包好像抓到了很多設備。確定一下問題設備是哪個,只抓這個設備的包
4,您的描述中,燒錄完成不能正常枚舉(此處盡量抓不能正常枚舉時候的包),手動外部復位后正常,從這個描述大概方向是燒錄完成的枚舉包和手動復位的枚舉流程不一樣,燒錄完成后的枚舉流程或許多了一些命令,程序中沒有處理導致程序異常等,但復位后流程上的包都回了。
應該是定位到原因了 我原先配置的是供電5v的情況下 使用外部24mhz晶振 且主頻配置到24mhz 片子是vdd接usb5v 使用內(nèi)部晶振到16mhz一切正常,使用外部晶振或者使用內(nèi)部24mhz就會出現(xiàn)枚舉失敗
您好,CH552在5V供電下使用24M主頻是可以使用的。需要確保的是供電穩(wěn)且大于4.4V,使用外部晶振可以用示波器查看晶振是否起振,如果還是沒有找到問題,可以將問題發(fā)送至郵箱:dxy@wch.cn