usb接口

wince下USB总线驱动分析

家住魔仙堡 提交于 2020-03-07 03:50:45
关于USB网上有很多现成的资料,我这里对其中一些基本资料进行了下总结。 i.USB的优点 ( 1 )使用简单。 支持热插拔。 ( 2 )应用范围广。 USB 系统数据报文附加信息少,带宽利用率高,可同时支持同步传输和异步传输两种方式。 ( 3 )较强的纠错能力。 USB 系统可实时地管理设备插拔。在 USB 协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。 ( 4 )总线供电。 USB 总线可为连接在其上的设备提供 5V 电压、 100mA 电流的供电,最大可提供 500mA 的电流。 USB 设备也可采用自供电方式。 ( 5 )低成本。 USB 接口电路简单,易于实现,特别是低速设备。 USB 系统接口 / 电缆也比较简单,成本比串口 / 并口低。 2. USB硬件结构 USB 采用四线电缆,其中两根用来传送数据的串行通道,另两根为下行设备提供电源。 USB 是基于令牌的总线。类似于令牌环网络或 FDDI 基于令牌的总线。 USB 主控制器广播令牌,总线上设备检测令牌中的地址是否与自身相符,通过接收或发送数据给主机来响应。 USB 通过支持悬挂( suspend ) / 恢复( resume )操作来管理 USB 总线电源。 USB 系统采用级联星型拓扑,该拓扑由三个基本部分组成:主机( Host) ,集线器( Hub) 和功能设备。 3

Linux下的USB总线驱动(一)

独自空忆成欢 提交于 2020-03-07 03:50:21
版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127 一. USB 理论 1. USB 概念概述 USB1.0 版本速度 1.5Mbps (低速 USB ) USB1.1 版本速度 12Mbps (全速 USB ) USB2.0 版本速度 480Mbps (高速 USB ) USB 驱动由 USB 主机控制器驱动和 USB 设备驱动组成。 USB 主机控制器是用来控制 USB 设备和 CPU 之间通信的, USB 主机控制器驱动主要用来驱动芯片上的主机控制器硬件。 USB 设备驱动主要是指具体的例如 USB 鼠标, USB 键盘灯设备的驱动。 一般的通用的 Linux 设备,如 U 盘、 USB 鼠标、 USB 键盘,都不需要工程师再编写驱动,需要编写的是特定厂商、特定芯片的驱动,而且往往也可以参考内核中已经提供的驱动模板。 USB 只是一个总线,真正的 USB 设备驱动的主体工作仍然是 USB 设备本身所属类型的驱动,如字符设备、 tty 设备、块设备、输入设备等。 2. USB 主机控制器 USB 主机控制器属于南桥芯片的一部分,通过 PCI 总线和处理器通信。 USB 主机控制器分为 UHCI (英特尔提出)、 OHCI (康柏和微软提出)、 EHCI 。其中 OHCI 驱动程序用来为非 PC 系统上以及带有 SiS 和 ALi

USB鼠标按键驱动

◇◆丶佛笑我妖孽 提交于 2020-03-07 03:47:08
现象:把USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能知道是"android phone" 答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone" 提示你安装的是"设备驱动程序" USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序 问2. USB设备种类非常多,为什么一接入电脑,就能识别出来? 答2. PC和USB设备都得遵守一些规范。 比如:USB设备接入电脑后,PC机会发出"你是什么"? USB设备就必须回答"我是xxx", 并且回答的语言必须是中文 USB总线驱动程序会发出某些命令想获取设备信息(描述符), USB设备必须返回"描述符"给PC 问3. PC机上接有非常多的USB设备,怎么分辨它们? USB接口只有4条线: 5V,GND,D-,D+ 答3. 每一个USB设备接入PC时,USB总线驱动程序都会给它分配一个编号 接在USB总线上的每一个USB设备都有自己的编号(地址) PC机想访问某个USB设备时,发出的命令都含有对应的编号(地址) 问4. USB设备刚接入PC时,还没有编号;那么PC怎么把"分配的编号"告诉它? 答4. 新接入的USB设备的默认编号是0

嵌入式Linux驱动学习之路(二十)USB设备驱动

早过忘川 提交于 2020-03-07 03:45:35
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID。 在主机端,D+和D-都是下拉接地的。而设备端的D-接上拉时,表明此设备为高速设备:12M/s。 D+接上拉时则是全速设备:480M/S。 PC的USB口中的D+D-有15K的下拉电阻,未接USB设备时,皆为低电平。 而设备中的D+D-则是1.5K的上拉电阻。一旦接入PC中,电脑就会知道有设备接入。 USB是主从结构。所有的传输都是由主机发起的,即USB设备没有主动通知USB主机的能力。 USB的传输类型:      控制传输 。 可靠,时间有保证。 例如:USB设备的识别。      批量传输 。 可靠,但时间没有保证。 例如:U盘。      中断传输 。 可靠,实时传输。 例如:USB鼠标。      实时传输 。 不可靠。实时传输。 例如:USB摄像头。 USB传输的对象为端点。比如读U盘和写U盘,可以形容为从端点1读数据,从端点2写数据。     除了端点0以外,每个端点只支持一个方向的数据传输。     端点0用于控制传输,既能输出也能输入。 每一个端点都有传输类型和方向。 程序和术语中说的输入输出 都是基于USB主机的立场说的。   比如鼠标是数据从鼠标传输到PC机的,鼠标对应的端点称为输入端点。 USB总线驱动程序的作用: 1.识别设备 2. 查找并安装对应的设备驱动程序 3

Ubuntu下解决adb devices:???????????? no permissions的方法

五迷三道 提交于 2020-03-05 23:10:53
之前一直都是在windows下进行开发的,但是这次由于一个小模块用的东西只能在linux下运行,所以就发生了这么一系列的问题 环境:虚拟机Vmware下的Ubuntu12.10 事件:连接android手机后,使用adb devices,出现了?????,nopermissions没有权限的问题,如图: 原因:经过百度得,原因是ubuntu这样的系统都是默认以非root身份在运行的,要使用usb调试,需要sudo支持。 解决方法: 1.输入命令 lsusb ,查看usb的使用情况,其中绿色方框里面的是我当前连接的android设备,记录下ID中的18d1:9025.后面会用到 2.输入命令 sudo vim /etc/udev/rules.d/70-android.rules ,在里面输入以下内容并且保存,需要注意的是,下面内容中的ATTRS{idVendor}为上图中的ID中的冒号左边部分,ATTRS{idProduct}为上图中的ID中的冒号的右边部分。 如果有多个设备的话,可以直接在这个文件下,换行,继续按照下面的格式添加内容。 单个的情况下: SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",ATTRS{idProduct}=="9025",MODE="0666" 多个的情况下: SUBSYSTEM=="usb", ATTRS

java设计模式-适配器模式

夙愿已清 提交于 2020-03-05 22:10:41
模式导读: 每个人都有自己不同的需要,每个人都有自己能够接受的不同方式,就像是为满足现在快速度发展的社会,几乎人人离不开手机的时代,我们也许会碰到在外出行手机电量不足的情况,这个时候如果你在车站,你就会发现一个专门用来手机充电的地方,而手机种类复杂多样,充电的接口也是各有千秋,所以为了适应这种情况,就有了各种各样的接头的出现,而这便是适配器模式的一种使用现实使用场景。 将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 参考类图: 类适配器 实现代码: 1.定义一个抽象USB接口 1 package com.etc; 2 //定义抽象的USB接口 3 public interface USB { 4 void use(); 5 } 2.具体的USB接口 1 package com.etc; 2 //电脑的USB接口 3 public class ComputerUSB implements USB { 4 @Override 5 public void use() { 6 System.out.println("-->电脑成功通过该USB接口进行充电!"); 7 } 8 } 1 package com.etc; 2 3 public class PhoneUSB implements USB { 4 5

USB两种挂载方式MTP与UMS

蓝咒 提交于 2020-03-05 21:47:48
MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议。 UMS(USB Mass Storage:大容量存储)是一个计算通信协议的设置 由USB实现者论坛定义,运行于串行总线。标准提供了各种存储设备的界面。 UMS和MTP不同 UMS模式下,PC操作存储设备的粒度是设备块(FAT block),而非文件系统。什么意思?此处举一个简单例子。当Android手机通过UMS将sdcard挂载到PC后,PC就拥有对sdcard的绝对控制权。这样,手机就无法同时访问sdcard了。这种做法带来的后果就是Camera或Music程序将因没有外部存储空间而提示无法进行操作(注意,有些厂商的手机对此进行过修改,使得Camera能短时间录制一部分视频到内部存储空间)。这也是Android早期版本中一个很明显的特点。另外,由于PC在操作sdcard时可能弄坏其文件系统,这将导致sdcard重新挂载到手机后不能被识别。 如果Android手机的sdcard以MTP模式挂载到PC机上,sdcard的控制权其实还是属于手机。只不过智能手机通过MTP协议向PC机构建了一个虚拟文件系统。PC机操作其中的文件时,都会通过标准MTP协议向智能手机发起请求。另外,Android把MTP功能集成在MediaProvider[1]中,其好处是PC机操作

usbmanger android 底下USB的工作模式

夙愿已清 提交于 2020-03-03 08:43:47
Android USB开发麻烦还是比较多的。 第一种:host模式 这种模式比较不错,由Android设备提供电源,然后与外部设备通信。举个例子来说:电脑连接USB设备,都是这个模式,非常常见的模式。 但是有一个万恶的问题,android接外部USB设备的时候,驱动怎么办?又有那款芯片敢说Android系统支持他们家的芯片,又有哪个厂家说不动android系统装上他们家的驱动,他们家的设备就可以在Android上使用,或许这点上Android很难超越windows。 造成想现状:想加外部设备,都要:重新自己做底层驱动程序--->编译系统--->刷机--->编写android程序--->接入硬件实现功能。 整个一套下来饭都吃好几顿了。还是希望以后android发展发展能向window一样支持多设备驱动吧。 第二种:Accessory模式 这个模式比较揪心,外部设备要供给电源,数据间通信:电脑---手机就是这种模式,手机作为Accessory设备,电脑供给它电源,同时进行数据通信。 恰巧我也是用了这种模式: 程序需要做的: (1)添加Action BoardCast private static final String ACTION_USB_PERMISSION ="com.ukey.USB_PERMISSION"; [java] /**********************

Android USB Host与HID通讯

我只是一个虾纸丫 提交于 2020-03-03 08:20:05
前端时间捣鼓一个HID的硬件, 需要和android通信, 网上搜索了一圈,收获不小. 比较好的文章是: Android USB Host与HID通讯 Android Service创建USB HOST通信 其中代码之处有些地方需要注意的, 特此注明一下: /** * USB HOST 连接 HID * @author IVAN * */ public class MainActivity extends Activity { private static final String TAG = "USB_HOST"; private UsbManager myUsbManager; private UsbDevice myUsbDevice; private UsbInterface myInterface; private UsbDeviceConnection myDeviceConnection; private final int VendorID = 8457; //这里要改成自己的硬件ID private final int ProductID = 30264; private TextView info; private UsbEndpoint epOut; private UsbEndpoint epIn; @Override public void

上海哪里可以开清洁服务费发票-中国-新闻网

落花浮王杯 提交于 2020-03-03 07:29:06
上海哪里可以开清洁服务费发票【152 * 9б 28 * 21 б9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用了该种连接方式。有很多用户插上USB后无法连接,这又是什么原因导致的。下面我们来依依排查。 1、 首先要保证车机能够识别手机。 这个大家应该可以理解,如果车机都无法识别手机,就无法通过USB线来传输数据,这就像一根电线,两个端之间如果有个地方接触不好就无法通电是一样的道理。为了保证车机能够识别手机,手机首先需要打开USB调试模式,及打开ADB端口。 在设置->开发者选项(如图一先打开“开发者选项“)->USb调试(打开“USB调试”)。 2、如何检测车机是否识别了手机。 很多用户已经做了上面的操作,但是还是无法连接。这个时候我们就需要确认车机是否识别成功。怎么判断呢? 将手机通过USB插到车机上,然后拉下手机的下拉菜单,如下图三所示,查看是否有”已连接USB调试”的提示。如果没有请插到电脑上尝试。有此提示是连接上百度CarLife的前提条件,如果没有该提示,可能是以下原因导致的: 1、 USB连接线的问题。可能接触不好或者供电不足。这种情况只能更换一跟好的数据线。 2、 车机对该手机不兼容。这个可以使用PC来测试