目前有个项目是CH579 接收usb扫码枪的数据,我看了下EVT代码包中USB HOST只有设备枚举的例程,没有数据收发的例程,有试着移植过CH55X系列的,但都失败了,请问是否有相关平台的例程。
查了下代码,好像endp = ThisUsbDev.GpVar[0];,CH579中InitRootDevice根本没有对GpVar进行赋值,不太理解这块
能不能帮忙看下,比较急!
可以参考583EVT中的例程,枚举后加入了鼠标/键盘的上传数据打印。
各设备描述符不尽相同,我们这边要都写一遍也不好写,没有扫码枪的例程。
可以排查一下枚举是否成功,枚举成功后用USBHostTransact函数可以下发令牌。IN方向通信成功可以在相应的RAM中即pHOST_RX_RAM_Addr获取到数据。OUT方向需要线存放数据在pHOST_TX_RAM_Addr中,再调用USBHostTransact。注意在R8_UEPn_CTRL中做好同步切换。
可以发送邮件至zhaiyw@wch.cn获取579的最新枚举例程,我这边测试可以抓取到描述符。过几天官网也会更新579的EVT。
你好,我这边先试着用usb键盘插入ch579 host端,烧录usb 枚举的例程,发现以下问题:
1、usb的检测中断每隔5,6秒,会检测到产生中断一次,重新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、开发板供电电源由pc端供电可以检测到设备,但是我用充电头供电发现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协议刚接触不是很熟悉,有试过移植ch55x平台的键鼠例子但是失败了,USBHostTransact 返回error。
1.每隔五六秒设备断开一次不正常,有没有其他USB设备接入看看是否会自动断开。设备接入后枚举过程中的reset是正常的。
2.USB线供电的话,也会接到PB10、11上,会影响USB数据交互,建议不要用USB线供电。
3.579枚举例程代码风格上接近583EVT中的例程,583中枚举后添加了简单的键鼠支持,可以在官网下载参考。
您好,我这边更改供电方式后,1,2,问题应该解决了。
然后我下了ch583的example,发现跟ch553的差不多,ch579 evt少了
SearchTypeDevice
SelectHubPort
endp = len ? DevOnHubPort[len - 1].GpVar[0] : ThisUsbDev.GpVar[0]; // 中断端点的地址,位7用于同步标志位
应该是CH579 这边少了对endp的端点的赋值,导致USBHostTransact 中传参endp_pid 失效,导致USBHostTransact error
我这边把所有的接口都移植过去,现在可以了,感谢