CH558的USB問(wèn)題: 端點(diǎn)0的最大數(shù)據(jù)包長(zhǎng)度(bMaxPacketSize0) 為什么不能設(shè)置為64字節(jié)

有一份從CH554移植過(guò)來(lái)的程序,其USB功能用于模擬一個(gè)游戲手柄(Full speed設(shè)備),其設(shè)備描述符如下:

UINT8C DevDesc[18] =??? // -> usb_device_descriptor
{ 0x12, 0x01,
?? ?00, 02,? //0x10,0x01,???
?? ?0x00, 0x00, 0x00, // bDeviceClass, bDeviceClass, bDeviceProtocol
? 64,????// bMaxPacketSize0

??? 0x0d, 0x0f, 0xad, 0x00, 0x00, 0x01, //0x3d,0x41,0x07,0x21,0x34,0x12,?? ?// VID,PID,REV
?? ?01, 02, 00,??
?? ?0x01
};

這份代碼在554上工作是正常的. 移植到CH558(修改了相關(guān)的寄存器配置)之后報(bào)告"獲取設(shè)備描述符失敗".


我找了官方的例程, 模擬Full Speed設(shè)備的只有一份:

"1,CH559/CH558模擬U盤(pán),支持文件拷貝,刪除,新建,文件讀寫(xiě),格式化等操作,存儲(chǔ)介質(zhì)采用2M的SPI flash。"


在這個(gè)例程中,bMaxPacketSize0也是被設(shè)置為8. 查USB協(xié)議,Full Speed設(shè)備是可以設(shè)置為8,16,32,64的. 為何CH558無(wú)法正常運(yùn)行? 而CH554/CH552為何又可正常運(yùn)行. 求指點(diǎn).


長(zhǎng)度不只是一個(gè)宏定義,還有所有代碼中涉及到長(zhǎng)度處理的地方需要修改。242行l(wèi)en的賦值是直接與8做對(duì)比。

所有涉及到長(zhǎng)度的地方都需要檢查。image.png


是程序問(wèn)題.似乎是Keil的一個(gè)bug導(dǎo)致


Ch554 也是遇到端點(diǎn)0最大數(shù)據(jù)包只能是8字節(jié),設(shè)置64字節(jié) BUS Hound顯示MaxPacket=8

用軟件測(cè)試也確實(shí)只能傳8字節(jié),還有那個(gè)位置需要設(shè)置嗎?

1644973701253380.png

1644973701109104.png

1644973701413892.png


1644973701880922.png


? ? ??



注意設(shè)備是低速設(shè)備還是全速設(shè)備,低速設(shè)備EP0最大8字節(jié)


初始化還是有注意到的,設(shè)置如下是從例程修改的

微信截圖_20220217103525.png


問(wèn)題已經(jīng)解決!

?Bus Hound雖然顯示? Endpoint0 : Maxpacket=8

但端點(diǎn)0確實(shí)可以64位,先前是上位機(jī)程序的問(wèn)題.j_0064.gif

微信截圖_20220216091423.png

微信截圖_20220217154518.png


我也遇到

怎么解決的


@空中之鷹

注意USB工作在全速還是低速:http://www.findthetime.net/bbs/thread-87143-1.html

代碼中修改端點(diǎn)0長(zhǎng)度宏定義“

DEFAULT_ENDP0_SIZE



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

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