找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[NUC] NUC126LE4AE usb 进入suspend

[复制链接]
跳转到指定楼层
楼主
匿名  发表于 2024-5-22 13:53:50 |只看大图 回帖奖励 |正序浏览 |阅读模式
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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具

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

多谢。我的问题解决了
回复 支持 反对

使用道具

5#
chrishu 发表于 2024-5-23 13:29:42 | 只看该作者
suspend是主机设置的,从机没有办法控制它不进入suspend,但是从设备可以通过远程唤醒功能唤醒主机。
1、需要描述符里使能远程唤醒功能
     #define  USBD_REMOTE_WAKEUP 1  //找一下有没有这个宏定义
2、修改寄存器产生远程唤醒序列  USBD_ATTR【RWAKEUP】     
     


回复 支持 反对

使用道具 举报

地板
匿名  发表于 2024-5-23 10:00:13
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 09:45:34 | 只看该作者
EP2和EP3,用来收Host发送的关于屏幕的尺寸。EP4用来发送触摸屏的触摸点位
想问一下为什么要重新枚举呢?
一次枚举就可以把这3个端点一起设置
回复 支持 反对

使用道具 举报

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

使用道具

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU