USB的插入检测机制

      自USB集线器的每个下游端口的D+和D-上,分别接了一个15KOm的下拉电阻到地。这样,当没有设备插入时,端口被拉低。而设备端的D+或D-会接一个15KOm上拉电阻,接到3.3V电源。其中全速和高速设备,在D+上接上拉电阻;而低速设备在D-上接上拉电阻;设备接入集线器后,接了上拉电阻的一端的电压经过上下拉电阻分压,降为3V左右。对集线器的接收端来说就是一个高电平。集线器检测到这个高电平信号,就通知USB控制器。集线器还可以通过判断这个高电平信号是D+还是D-,判断设备是什么速度的设备。USB高速设备首先被识别为全速设备,然后通过集线器和设备两者的确认,再切换到高速模式下。在高速模式下,使电流传输模式,这时要将D+的上拉电阻断开。

检测USB插入拔出

09-02

我写了段代码:rnrn// CheckUsb.cpp : Defines the entry point for the application.rn//rnrn#include "stdafx.h"rnrnHWND hwndMain;rnrnLRESULT CALLBACK WndProc(rn HWND hwnd, // handle to windowrn UINT uMsg, // message identifierrn WPARAM wParam, // first message parameterrn LPARAM lParam // second message parameterrn )rnrn rn switch(uMsg)rn rn case WM_CREATE:rn break;rn case WM_DESTROY:rn PostQuitMessage(0);rn break;rn case WM_COMMAND:rn break;rn case WM_DEVICECHANGE:rn MessageBox(NULL,"设备改变","提示",MB_OK);rn break;rn rn return DefWindowProc(hwnd,uMsg,wParam,lParam);rnrnrnint APIENTRY WinMain(HINSTANCE hInstance,rn HINSTANCE hPrevInstance,rn LPSTR lpCmdLine,rn int nCmdShow)rnrn // TODO: Place code here.rnrn WNDCLASSEX wclass;rn MSG msg;rn rn wclass.cbClsExtra = 0;rn wclass.cbSize = sizeof(WNDCLASSEX);rn wclass.cbWndExtra = 0;rn wclass.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);rn wclass.hCursor = NULL;rn wclass.hIcon = NULL;rn wclass.hIconSm = NULL;rn wclass.hInstance = hInstance;rn wclass.lpfnWndProc =(WNDPROC)WndProc;rn wclass.lpszClassName = "CheckUSB";rn wclass.lpszMenuName = NULL;rn wclass.style = CS_DBLCLKS;rn rn rn rn if(!RegisterClassEx(&wclass))rn rn MessageBox(NULL,"类创建失败","类创建失败",MB_OK);rn rn hwndMain = CreateWindow("CheckUSB","检测USB设备",rn WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 320, 300,NULL, NULL, hInstance, NULL);rn while(GetMessage(&msg,NULL,0,0))rn rn TranslateMessage(&msg); //translate the message into its char equivelentrn DispatchMessage(&msg);rn rn rn return msg.wParam;rnrnrnrnrn如何在WM_DEVICECHANGE消息处判断是不是USB插入或者拔出rn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试