精华内容
下载资源
问答
  • usb插入检测
    千次阅读
    2020-09-23 16:27:02

     

    1.USB的插入检测机制:USB端口的D+和D-均用一个15k的电阻接地,当无设备接入时,均处于低电平;在设备端在D+(表示高速设备或者全速设备)或者D-(表示低速设备)接了一个1.5k的上拉电阻到+3.3v,一旦将设备接入,USB端口的D+或者D-其中一个被拉高为3v,系统识别到外部设备接入。

    注意:高速设备首先会被识别为全速设备,然后再通过集线器和设备二者的确认最后切换到高速模式下。

    在高速模式下,采用的是电流传输模式,这个时候上拉电阻需要从D+上断开。

    2.当设备没有枚举成功时(可以通过一个10K的电阻将USB的电源端和D+或者D-连接起来,电脑会发现一个无法识别的设备,这个设备的PID和VID都是0,根据每个特性可以简单的判定设备的枚举是否成功。

    3.一个具体的USB实现什么功能,USB主机并不知道。USB主机通过读取USB的设备描述符来获取设备的类型、厂商的ID和产品的ID(通常依靠它们来加载对应的驱动程序)、端点情况、版本号等众多信息。

    4.USB1.1协议定义的标准描述符有设备描述符(Device Descriptor)、配置描述符(Configuration Descriptor)、接口描述符(Interface Descriptor)、端点描述符(Endpoint Descriptor)和字符串描述符(String Descriptor)。

    USB2.0相比于USB1.1新增加的两个描述符:限定符描述符(Qualifier Descriptor)和其他速度配置描述符(Other Speed Configuration Descriptor)。

    5.一个USB设备只有一个设备描述符。

    设备描述符里面决定了该设备有多少种配置,每种配置都有一个配置描述符;

    而在每个配置描述符中又定义了该配置有多少个接口,每个接口都有一个接口描述符;

    在接口描述符里面又定义了该接口有多少个端点,每个端点都有一个端点描述符,端点描述符定了端点的大小、类型等。

    如果有类特殊描述符,它跟在相应的接口描述符之后。

    注意:USB主机获取描述符时,从上到下逐层获取。对于字符串描述符,USB主机是单独获取的,主机通过发送获取字符串中描述符的请求以及描述符的索引号、语言ID来获取对应的字符串描述符。

    6.设备描述符:设备所使用的USB协议版本号、设备类型、端点0的最大包大小、厂商ID(VID)和产品ID(PID)、设备版本号、厂商字符串索引、产品字符串索引、设备序列号索引、可能的配置数等。

    配置描述符:记录配置所包含的接口数、配置的编号、供电方式、是否支持远程唤醒、电流需求量等。

    接口描述符:记录接口的编号、接口的端点数、接口所使用的类、子类、协议等。

    端点描述符:端点号及方向、端点的传输类型、最大包长度、查询时间间隔等。

    字符串描述符:提供一些方便人们阅读的信息,它不是必需的。

    7.与USB设备进行通信时需要的地址:设备的地址和端点的地址。配置和接口是为了更加方便的管理端点抽象出来的概念。一个设备可以有多个配置,但是一个时刻只能有一个配置有效;每个配置下又可以有多个接口,一个接口下面可以有多个端点。

    8.具有多个接口,并由接口来实现功能的设备叫做USB复合设备。例如一个USB音频设备,它具有一个音频控制接口,另外还有一个到多个音频流或者MIDI流接口。在主机端会把USB复合设备的每个接口当做一个功能设备来看待,常见的USB鼠标,U盘等通常是单一的设备,即一个设备下只有一个配置描述符、一个接口描述符。

     

    转自:https://blog.csdn.net/laoniu_c/article/details/17801027

     

    更多相关内容
  • 便携式设备经常会存在USB供电和锂电池供电并存的情况,那么当USB插入供电的时候如何实现系统自动识别并切断电池供电的呢?带着这个问题我们来看下今天的分享内容。如下电路主要是实现USB插入自...

    便携式设备经常会存在USB供电和锂电池供电并存的情况,那么当USB插入供电的时候如何实现系统自动识别并切断电池供电的呢?带着这个问题我们来看下今天的分享内容。

    如下电路主要是实现USB插入自动检测的功能。

    当USB未插入的情况下,系统的+5V由BUCK芯片(图中未画出)提供,此时由于D1的防反接作用,系统+5V被截止在右侧,左侧的Q1基极被电阻R3拉低到地,此时三极管Q1满足导通条件,Q1导通,单片机检测(Check_Vusb)到低电平,此时为USB未插入的状态。

    当USB插入时,三极管的Q1的基极分压大概在3.3V左右,此时三极管不满足导通条件,Check_Vusb被拉高至+3.3V,单片机检测到高电平,为USB插入状态。检测到USB插入后,系统可以将电池供电自动切断以节省不必要的电量消耗。

    ------------ END ------------

    推荐阅读

    牛人总结的开关电源电路图,赶紧收藏!

    不可不知的28条EMC术语

    干货|人人都想知道的晶振知识

    场效应管和双极型晶体管的工作原理动画演示

    肖特基二极管和稳压二极管

    LDO基础特性-压降

    MOS管开关时的米勒效应

    关注公众号【南山扫地僧】回复【资料】获取更多精彩资料

    请戳右下角,给我一点在看!

    展开全文
  • 一个简单USB插入检测电路

    千次阅读 2021-01-23 17:52:46
    如下电路主要是实现USB插入自动检测的功能。 当USB未插入的情况下,系统的+5V由BUCK芯片(图中未画出)提供,此时由于D1的防反接作用,系统+5V被截止在右侧,左侧的Q1基极被电阻R3拉低到地,此时三极管Q1满足导通条件...

    便携式设备经常会存在USB供电和锂电池供电并存的情况,那么当USB插入供电的时候如何实现系统自动识别并切断电池供电的呢?带着这个问题我们来看下今天的分享内容。

    如下电路主要是实现USB插入自动检测的功能。

    当USB未插入的情况下,系统的+5V由BUCK芯片(图中未画出)提供,此时由于D1的防反接作用,系统+5V被截止在右侧,左侧的Q1基极被电阻R3拉低到地,此时三极管Q1满足导通条件,Q1导通,单片机检测(Check_Vusb)到低电平,此时为USB未插入的状态。

    当USB插入时,三极管的Q1的基极分压大概在3.3V左右,此时三极管不满足导通条件,Check_Vusb被拉高至+3.3V,单片机检测到高电平,为USB插入状态。检测到USB插入后,系统可以将电池供电自动切断以节省不必要的电量消耗。

    展开全文
  • C# 检测USB是否插入

    2021-09-29 09:10:52
    做工控的,经常要用C#写上位机,这时,USB的驱动是一个无法避免的问题,其中,如果要做得好,必须得处理检测USB是否插入的问题。 目前是用一个 DispatcherTimer定时器 也定时检测是否插入,至于为什么要用这个...

    做工控的,经常要用C#写上位机,这时,USB的驱动是一个无法避免的问题,其中,如果要做得好,必须得处理检测USB是否插入的问题。

    目前是用一个 DispatcherTimer定时器 也定时检测是否插入,至于为什么要用这个定时器,是因为WPF中,这和UI处于同一个线程,无需处理跨线程的问题。

    定时检测的代码是从USB的驱动代码里抠出来的,因为USB驱动的第一步就是搜索USB设备。后面才是打开USB等一系列操作。所以,把这个搜索的代码复制出来,单独成一个函数,就是检测USB是否插上的代码了。

    这次的是HID USB,搜索HID USB,检测USB是否插入的代码如下:

            public bool IsPlusUsb()
            {
                USBHID usbHID_plus = new USBHID();
                string DstDev = "";
                System.Diagnostics.Debug.Print("搜索到的USB HID 设备如下; ");
                foreach (string device in usbHID_plus.GetDeviceList())
                {
                    System.Diagnostics.Debug.Print(device);
                    if (device.IndexOf("1111") >= 0 && device.IndexOf("2222") >= 0)
                    {
                        DstDev = device;
                    }
                }
                System.Diagnostics.Debug.Print("");
    
                if (DstDev.Length > 0)
                {
                    System.Diagnostics.Debug.Print("目标USB-HID设备为:");
                    System.Diagnostics.Debug.Print(DstDev);
                }
                else
                {
                    System.Diagnostics.Debug.Print("错误:找不到目标USB-HID设备");
                    //while (true) { }
                    return false;
                }
    
                return true;
            }
    

    最终效果如下:

    展开全文
  • USB设备的插入检测机制

    千次阅读 2017-11-09 20:03:55
    USB主机是如何检测到设备的插入的呢?首先,在USB集线器的每个下游端口的D+和D-上, 分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻 拉到了低电平。而在USB设备端,在D+...
  • USB接口如何检测到设备的插入

    千次阅读 2019-09-10 06:59:39
    当插座上没有接设备时,D+和D-被15K的电阻下拉到低电平,当有设备接入时,例如一个U盘设备插入usb接口,vbus如果是3.3V,那么对于D+的点平则是一个高电平,hub检测到这个高电平状态后就报告给主机控制器,有设备插入...
  • USB设备的插入检测
  • 之前想做个类似U盾的,就想监听USB这些设备的插入和移除,由此去研究了一下C#实时检测USB设备的插拔并响应各个事件,成功在系统插入U盘等类USB设备时可以被程序检测到,并做出判断,响应各个事件。
  • USB设备插入检测程序

    2014-09-15 15:46:44
    USB设备插入主机后系统检测到的检测程序 delphi7 XP通过带源码
  • C# 检测USB设备插入

    2014-11-18 21:52:58
    C# 检测USB设备插入 程序十分简单 注意:程序中用到了一个USB设备的控件,该控件有6个方法,除了识别USB插入 还有检测USB拔出,接收USB消息等方法。
  • C#检测USB插入和拔出,绝对有用 代码绝对正确,不正确你骂我。
  • usb设备检测 包括mac window linux
  • 原文链接 #include <stdio.h> #include <string.h> #include <...static int Init_USB_Monitor( void ) { // 本函数返回值 int iResult = 0; // 接收内核发来的消息缓冲区大小 const un
  • C#实现USB插入检测,移除

    万次阅读 2012-11-06 22:24:44
    尽管使用Windows shell(传说中的“命令行”)移除一个USB是非常容易的,但是想通过编程实现却非常恼火。你必须去了解很多内核驱动开发的底层概念,才能完成一个简单的任务。当我着手做这件事的时候,我真的不知道...
  • USB主机是如何检测到设备的插入的呢?首先,在USB集线器的每个下游端口的D+和D-上,分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D+或者D-上...
  • 检测USBkey未插入如何处理,经常有小伙伴遇到这个问题,下面由数豆子为大家整理相关内容,一起来看看吧。检测USBkey未插入如何处理?1首先你必须确认你的所有的驱动都是安装成功的,也就是说排除这些软件的问题2那么...
  • 我需要检测何时在我的嵌入式系统上插入或拔出USB串行设备,并知道与之相关的tty是什么.我的系统运行在2.6 Linux内核上.由于我没有对udev规则的写访问权限,现在我正在尝试从文件系统获取此信息,在/ sys / bus / usb / ...
  • 高通平台usb充电检测

    千次阅读 2017-09-14 08:38:22
    基于Qualcom 8960/8921平台 一,软件分析 1. USB charger types & Power supply types USB_INVALID_CHARGER Invalid USB charger. USB_SDP_CHARGER Standard downstream port
  • USB检测程序

    2019-05-04 16:07:16
    由于工作需要,前段时间一直在找关于在C#中如何检测USB设备的资料,其实C#中使用的函数也是引用的操作系统提供的API函数,还不如在C++中写方便,于是自己简单的写了一个检测USB设备插入和拔出的程序。
  • 监视USB口,易语言监视USB插入拔出源码。@易语言入门教程。
  • 检测USB设备(如果已从计算机中插入或卸下)
  • 1.USB插入检测机制:USB端口的D+和D-均用一个15k的电阻接地,当无设备接入时,均处于低电平;在设备端在D+(表示高速设备或者全速设备)或者D-(表示低速设备)接了一个1.5k的上拉电阻到+3.3v,一旦将设备接入,...
  • USB设备插拔检测

    2016-10-20 18:53:02
    可靠的USB插拔检测
  • 在开发文件浏览相关应用时,会涉及到动态检测优盘插入或拔出的状态,这样可以实时的刷新界面显示。这里通过调用windows的接口来实现该检测,代码很简单。我是在Qt工程中使用的,其核心代码是一样的。
  • 如果HAL守护进程正在...下面是一个如何检测USB鼠标是否已插入的示例(我手头没有USB键盘):import gobjectimport dbusfrom dbus.mainloop.glib import DBusGMainLoopDBusGMainLoop(set_as_default=True)bus = dbus....
  • 检测开始时,一般要先检测是否存在/proc/bus/usb目录,若不存在则尝试插入USB桥接模块。现在一般的USB桥接器模块有两种类型,UHCI和OHCI。在决定插入那一个桥接器模块时,可以察看/proc/pc...
  • 易语言监视USB

    2020-08-22 05:53:34
    监视USB口系统结构:MsgProc,检测,SetWindowLong,CallWindowProc,复制结构体, ======窗口程序集1 || ||------__启动窗口_创建完毕 || ||------MsgProc || ||------__启动窗口_将被销毁 || ||------检测 || || ======...
  • 利用QDBus在linux下检测USB存储设备的插入和拔出
  • QT5 下 usb 设备插拔检测

    热门讨论 2015-12-09 18:20:13
    基于QT 5做的usb插拔检测,我主用是用于检测usbkey的(通过 VID,PID),其他设备应该也是可以的,测试过u盘,usb转串口线,usb key都能识别,
  • android USB拔插检测

    2021-06-05 09:09:03
    最近改bug,需要检测USB插入和拔出的状态。查了一堆网上的东西,花里胡哨,还没有作用,要么就是不满足我的需求。后面在源码中看到了谷歌的方法,记录一下。// 添加广播filter = new IntentFilter();filter....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,880
精华内容 8,352
关键字:

usb插入检测