USB设备判断接入和移除
以沁恒的CH582芯片为例,主机模式下,在R8_USB_INT_EN中可以使能RB_UIE_DETECT位,由中断来提醒检测USB设备的接入和移除;从机模式下,USB设备没有这样的中断功能(上述寄存器的同一位被用来判断USB总线复位事件)。如何在从机模式下检测有没有接入到USB总线呢?
方法一:走硬件检测。比如将USB接口的外壳接到GPIO上,内置上拉,启用一个GPIO中断,接入到主机时该引脚上产生了低电平则判断为设备接入。再比如USB电源线由电阻分压,接到ADC引脚上,检测到电压则判断为设备接入。
方法二:全速USB设备总线上,每ms都要产生一个帧起始信号SOF。设备开启中断后,可以在中断中判断是否收到SOF,能收到表示已连接上;设置一个定时器,距离上次SOF中断超时一定时间判断为断开。该方法需要添加些许代码,增加一层逻辑,如果懒得写可以参考方法三。

方法三:枚举进行到最后一步SET_CONFIG,可以判断为设备连接;断开连接时会进“挂起”,故也可以在解析setup包和判断挂起的位置判断连接和断开。注意枚举过程中USB总线上也会有两次reset,会进设备“挂起”case,建议以判断设备接入为准。


USB设备判断接入和移除的更多相关文章
- USB设备驱动程序学习笔记(一)
现象:把USB设备接到PC1. 右下角弹出"发现android phone"2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能知道 ...
- USB设备驱动总结
现象:把USB设备接到PC (韦老师总结) 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有" ...
- USB设备驱动之设备初始化(设备枚举)
USB设备从接入HUB到正常工作之前.都属于设备枚举阶段.所谓设备枚举.就是让host控制器认识USB设备,并为其准备资源.建立好主机与设备间的数据传递机制. 该阶段的工作,是USB通信协议规定的,所 ...
- 12、USB设备驱动程序
linux-3.4.2\driver\hid\usbhid\usbmouse.c 内核只带USB驱动程序 (hub和usb是两个不同的设备,hub在内核上电的过程中在usb_hub_init函数中调用 ...
- USB设备的插入和弹出的监听以及软弹出可移动媒体(如Windows的移除USB设备) .
一.监听USB设备的插入和弹出 当USB设备插入或者弹出时,Windows会产生一条全局消息:WM_DEVICECHANGE 我们需要做的是,获得这条消息的wParam参数,如果为DBT_DEVICE ...
- USB设备---URB请求块
1.urb 结构体 USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结 ...
- C# 上位机的USB设备拔插检测
我们做USB通信时,通信成功后,往往要检测USB设备的拔插状态,这里就USB拔插进行一下说明. 参考:https://www.imooc.com/article/17438 先说明一下,我这里只是用C ...
- USB设备(移动硬盘、鼠标)掉电掉驱动的两种解决方案
症状: 当你发现"移动硬盘图标"经常无故消失,又自己出现时. 你可以把这个现象称之为"掉电" or "掉驱动". 遇到这种情况,相当不爽. ...
- 嵌入式Linux驱动学习之路(二十)USB设备驱动
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID. 在主机端,D+和D-都是下拉接地的.而设备端的D-接上拉时,表明此设备为高速设备:12M/s. D+接上拉时则是全速设备 ...
- C#:USB设备枚举 --转自CSDN作者:Splash
(一)DeviceIoControl的PInvoke /* ---------------------------------------------------------- 文件名称:Device ...
随机推荐
- 使用ng-zorro图标库出现the icon redo-o does not exist or is not registered.
出现这种情况一般是因为没导入你要的图标 可以在项目目录找到这个文件 src\style-icons-auto.ts 然后打开,导入导出里加上你要导入的图标.... 就可以了 如果你不知道要怎么加 ...
- SSM进行Query
在查询之前,需要输入数据库字段的名称,s_id需要获取
- 使用 NineData 高效编写 SQL
SQL 是 Structured Query Language 的缩写,中文翻译为"结构化查询语言".它是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 M ...
- C#如何提高代码质量(一)
代码部分 1.正确操作字符串 尽量少装箱 String str1 = "str2"+9.ToString(); 避免分配额外的内存空间 StringBuilder 2.使用默认转型 ...
- 这是一篇乖巧的草稿——vscode上传代码到代码托管平台GitHub
一.在GitHub上创建一个远程仓库: 以上,就创建好了一个名为pythonStudy的仓库,现在先别把它关掉,先最小化 二.安装版本管理工具git:git属于无脑安装,可以更改安装路径 打开项目文件 ...
- Dao包 对数据库的操作
//添加 public static int add(Bean1 bean){ String sql = "insert into classtable(classname,teacher, ...
- 微信小程序数字转中文wxs
场景: 传入数字,转换成天数,比如:index = 1 转换后则为 一,在页面中的应用就是<view>第{{index}}天</view>,转为第几天. <view> ...
- CSP-S2022 总结
调整了下心态开考 顺序开题 看完 \(T1,T2\) 直接开打 \(T2\) 的线段树,还是比较好写的 然后思考先打 \(T1\) 呢还是拍 \(T2\),最后决定拍 \(T2\),稳一点 发现随机数 ...
- JZOJ 3252. 【GDOI三校联考】炸弹
思路 注:上图只是个例子,其实建图时 \(5\) 是不会连向 \(6\) 的 \(Code\) #include<cstdio> #include<cstring> #incl ...
- 【ACR2015】持续临床缓解的RA患者能停用TNF拮抗剂吗?
标签: 类风湿关节炎; 药物减停; 生物制剂; 减停后复发 荷兰一项随机对照试验显示, 已获持续6个月临床缓解或低疾病活动度的RA患者在停用TNFi的6个月内约三分之一病情复发 Moghadam HG ...