目前有個項目是CH579 接收usb掃碼槍的數(shù)據(jù),我看了下EVT代碼包中USB HOST只有設(shè)備枚舉的例程,沒有數(shù)據(jù)收發(fā)的例程,有試著移植過CH55X系列的,但都失敗了,請問是否有相關(guān)平臺的例程。
查了下代碼,好像endp = ThisUsbDev.GpVar[0];,CH579中InitRootDevice根本沒有對GpVar進行賦值,不太理解這塊
能不能幫忙看下,比較急!
可以參考583EVT中的例程,枚舉后加入了鼠標/鍵盤的上傳數(shù)據(jù)打印。
各設(shè)備描述符不盡相同,我們這邊要都寫一遍也不好寫,沒有掃碼槍的例程。
可以排查一下枚舉是否成功,枚舉成功后用USBHostTransact函數(shù)可以下發(fā)令牌。IN方向通信成功可以在相應(yīng)的RAM中即pHOST_RX_RAM_Addr獲取到數(shù)據(jù)。OUT方向需要線存放數(shù)據(jù)在pHOST_TX_RAM_Addr中,再調(diào)用USBHostTransact。注意在R8_UEPn_CTRL中做好同步切換。
可以發(fā)送郵件至zhaiyw@wch.cn獲取579的最新枚舉例程,我這邊測試可以抓取到描述符。過幾天官網(wǎng)也會更新579的EVT。
你好,我這邊先試著用usb鍵盤插入ch579 host端,燒錄usb 枚舉的例程,發(fā)現(xiàn)以下問題:
1、usb的檢測中斷每隔5,6秒,會檢測到產(chǎn)生中斷一次,重新reset host 一次,期間鍵盤usb一直插著這個正常嗎?日志如下:
? ? ? ? ? ?USB dev in
? ? ? ? ? ? ? ? ? ? ?Reset host port
GetDevDescr: x12 x01 x10 x01 x00 x00 x00 x08 x2C x1A xE2 x40 x10 x01 x01 x02 x00 x01?
GetCfgDescr: x09 x02 x3B x00 x02 x01 x00 xA0 xFA x09 x04 x00 x00 x01 x03 x01 x01 x00 x09 x21 x10 x01 x00 x01 x22 x41 x00 x07 x05 x81 x03 x08 x00 x0A x09 x04 x01 x00 x01 x03 x01 x02 x00 x09 x21 x10 x01 x00 x01 x22 xA9 x00 x07 x05 x82 x03 x08 x00 x0A?
USB-Keyboard Ready
usb DeviceType = 0x23 ThisUsbDev.DeviceStatus =03
USB dev out
? ? ? ? ? ?USB dev in
? ? ? ? ? ? ? ? ? ? ?Reset host port
GetDevDescr: x12 x01 x10 x01 x00 x00 x00 x08 x2C x1A xE2 x40 x10 x01 x01 x02 x00 x01?
GetCfgDescr: x09 x02 x3B x00 x02 x01 x00 xA0 xFA x09 x04 x00 x00 x01 x03 x01 x01 x00 x09 x21 x10 x01 x00 x01 x22 x41 x00 x07 x05 x81 x03 x08 x00 x0A x09 x04 x01 x00 x01 x03 x01 x02 x00 x09 x21 x10 x01 x00 x01 x22 xA9 x00 x07 x05 x82 x03 x08 x00 x0A?
USB-Keyboard Ready
usb DeviceType = 0x23 ThisUsbDev.DeviceStatus =03
2、開發(fā)板供電電源由pc端供電可以檢測到設(shè)備,但是我用充電頭供電發(fā)現(xiàn)GetDevDescr會失敗,日志如下這個原因是什么?
USB dev out
? ? ? ? ? ?Start @ChipID=79
? ? ? ? ? ? ? ? ? ? ? ? ? ?Wait Device In
USB dev in
? ? ? ? ? Reset host port
GetDevDescr: InitRootDev Err = 20
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?EnumAllRootDev err = 20
USB dev out
? ? ? ? ? ?USB dev in
? ? ? ? ? ? ? ? ? ? ?Reset host port
GetDevDescr: InitRootDev Err = 20
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?EnumAllRootDev err = 20
3、如果有鍵鼠的例程也可以,usb協(xié)議剛接觸不是很熟悉,有試過移植ch55x平臺的鍵鼠例子但是失敗了,USBHostTransact 返回error。
1.每隔五六秒設(shè)備斷開一次不正常,有沒有其他USB設(shè)備接入看看是否會自動斷開。設(shè)備接入后枚舉過程中的reset是正常的。
2.USB線供電的話,也會接到PB10、11上,會影響USB數(shù)據(jù)交互,建議不要用USB線供電。
3.579枚舉例程代碼風格上接近583EVT中的例程,583中枚舉后添加了簡單的鍵鼠支持,可以在官網(wǎng)下載參考。
您好,我這邊更改供電方式后,1,2,問題應(yīng)該解決了。
然后我下了ch583的example,發(fā)現(xiàn)跟ch553的差不多,ch579? evt少了
SearchTypeDevice
SelectHubPort
endp = len ? DevOnHubPort[len - 1].GpVar[0] : ThisUsbDev.GpVar[0]; // 中斷端點的地址,位7用于同步標志位
應(yīng)該是CH579 這邊少了對endp的端點的賦值,導致USBHostTransact? 中傳參endp_pid 失效,導致USBHostTransact? ?error
我這邊把所有的接口都移植過去,現(xiàn)在可以了,感謝