牛卧堂MCU技术交流

标题: NUC126LE4AE usb 进入suspend [打印本页]

作者: 匿名    时间: 2024-5-22 13:53
标题: NUC126LE4AE usb 进入suspend
usb设备定义了两种功能,EP2和EP3,用来收Host发送的关于屏幕的尺寸。EP4用来发送触摸屏的触摸点位

目前收到尺寸后,改写了触摸屏相关的报告描述符,然后USBD_SET_SE0(); delay_ms(10);USBD_CLR_SE0();重新枚举设备。到目前一切正常

但是在重启之后,过了十几秒,usb会进入suspend,之后USBD_IRQHandler()就无法触发了,请教一下,有人知道原因吗?

这个是进入supend抓取的usb状态:0x2表示usb状态为supend
u32IntSts = 0x11 ,u32State = 0x2

触摸正常状态:0x100012表示触发EP4,0x0表示usb bus reset
Seu32IntSts = 0x100012 ,u32State = 0x0


作者: 匿名    时间: 2024-5-22 15:14
USB通讯的例程用的是官方例程:/SampleCode/StdDriver/USBD_HID_Transfer   我这边将USB通讯和USB触摸屏所用到的报告描述符分成两个工程测试,USB通讯的工程会自动进入supend.想请教一下,在usb初始化的时候由参数可以禁止supend状态吗?

作者: chrishu    时间: 2024-5-23 09:45
EP2和EP3,用来收Host发送的关于屏幕的尺寸。EP4用来发送触摸屏的触摸点位
想问一下为什么要重新枚举呢?
一次枚举就可以把这3个端点一起设置
作者: 匿名    时间: 2024-5-23 10:00
chrishu 发表于 2024-5-23 09:45
EP2和EP3,用来收Host发送的关于屏幕的尺寸。EP4用来发送触摸屏的触摸点位
想问一下为什么要重新枚举呢?
一 ...

是我表述的问题,不是想单独枚举。
1.第一次枚举,初始化屏幕尺寸80x80,但是触摸屏接的100x100
2.通过EP2和EP3的收发通道,Host告知device,屏幕尺寸为100X100
3.device修改描述符钟关于PHYSICAL_MAXIMUM和LOGICAL_MAXIMUM的参数,然后重新枚举一次
不然触摸点位映射到主机上会出现偏差。实际屏幕是100x100,但是程序初始化的时候是80x80,那就不太对了。
至于EP2和EP3我接收一次屏幕尺寸的参数以后,设置和不设置都可以。

目前是枚举完后,会进入suspend,想请教一下有没有设备主动唤醒usb的方法
作者: chrishu    时间: 2024-5-23 13:29
suspend是主机设置的,从机没有办法控制它不进入suspend,但是从设备可以通过远程唤醒功能唤醒主机。
1、需要描述符里使能远程唤醒功能
     #define  USBD_REMOTE_WAKEUP 1  //找一下有没有这个宏定义
2、修改寄存器产生远程唤醒序列  USBD_ATTR【RWAKEUP】     [attach]5192[/attach]
     



作者: 匿名    时间: 2024-5-23 14:29
chrishu 发表于 2024-5-23 13:29
suspend是主机设置的,从机没有办法控制它不进入suspend,但是从设备可以通过远程唤醒功能唤醒主机。
1、需 ...

多谢。我的问题解决了




欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2