
搜索不到蓝牙的一般原因及处理方法:一,一般都会认为打开蓝牙之后,手机就能搜索到蓝牙,并且成功与 之连接,其实这是错误的。若要手 机搜索到蓝牙,蓝牙就 必须进入一个特殊的状态:配对状态。二,具体 *** 作步骤:1、确认蓝牙处于关机状态:长按多功能键2-3秒,蓝牙指示红灯快速闪烁3次左右,即关闭蓝牙。2、蓝牙进入配对状态:长按多 功能键7-8秒,蓝牙进入配对状 态,表现为 指示灯红蓝两种 颜色交替快速闪 烁或者 是指示灯常亮。三,蓝牙成功 进入配对状态后,接下来进入手机的 *** 作:1、打开手机的蓝牙功能,搜索蓝牙的 型号。2、手机与蓝牙连接,如果提示输入pin码,一般为0000或1234。3、配对成功。这 时就可以 用蓝牙接听、打电话了,如果蓝牙支持A2DP协议,还可以用来听音乐。
USB设备的识别
在USB外设向外送出数据时,其中就包括设备自身的设备名及型号等相关参数,主机就是根据这些信息在显示器上显示出所发现的新硬件的名称型号的。
数据传输原理
USB外设的控制芯片会通过两只10K的电阻来检查USB设备是否接入了主机的USB端口,如果这两个引脚一个为高电平,一个为低电平时就表示USB外设已经正常确连入USB接口,这时外设的控制芯片开始工作,并通过DATA+,DATA-向外送出数据。
扩展资料:
基本特性
USB采用四线电缆,其中两根是用来传送数据的串行通道,另两根为下游(Downstream)设备提供电源,对于高速且需要高带宽的外设,USB以全速12Mbps的传输数据;对于低速外设,USB则以15Mbps的传输速率来传输数据。
USB总线会根据外设情况在两种传输模式中自动地动态转换。USB是基于令牌的总线,类似于令牌环网络或FDDI基于令牌的总线。
USB主控制器广播令牌,总线上设备检测令牌中的地址是否与自身相符,通过接收或发送数据给主机来响应。USB通过支持悬挂/恢复 *** 作来管理USB总线电源。USB系统采用级联星型拓扑,该拓扑由三个基本部分组成:主机(Host),集线器(Hub)和功能设备。
参考资料来源:百度百科-usb
1 USB的结构与工作原理
1.1物理结构
USB的物理拓扑结构如图1所示。在USB2.0中,高速方式下Hub使全速和低速方式的信令环境独立出来,图2中显示了高速方式下Hub的作用。
通过使用集线器(Hub)扩展可外接多达127个外设。USB的电缆有四根线,两根传送的是5V的电源,另外的两根是数据线。功率不大的外围设备可以直接通过USB总线供电,而不必外接电源。USB总线最大可以提供5V 500mA电流,并支持节约能源的挂机和唤醒模式。
1.2 USB设备逻辑结构
USB的设备可以分成多个不同类型,同类型的设备可以拥有一些共同的行为特征和工作协议,这样可以使设备驱动程序的编写变得简单一些。USB Forum在USB类规范�2�中定义了USB的设备类型,比如音频、通信、HID、HUB等设备类。
每一个USB设备会有一个或者多个的逻辑连接点在里面�每个连接点叫端点。在USB的规范中用4位地址标识端点地址,每个设备最多有16个端点。端点0都被用来传送配置和控制信息。在NS公司的USB接口芯片USBN9602�4�中有7个端点。
管道实现了在主机的一个内存缓冲区和设备的端点之间的数据传输,连接端点0的叫做缺省管道。管道是具有多个特征的信道,如带宽分配,包大小,管道类别以及数据流向。管道有两种类型分别是流管道(stream pipe)和消息管道(messagepipe)。流管道传输的数据包的内容不具有USB要求的结构,它是单向传输的;流管道支持批量、等时和中断传输方式。而消息管道与流管道具有不同的行为。首先,由主机发请求给USB设备,然后在适当的方向上传输数据,最后是到达一个状态阶段。为了保证三个阶段的数据传输,消息管道定义了一个数据结构使命令可靠地被识别和传输。消息管道是双向的,它只支持控制传输方式。
对于同样性质的一组端点的组合叫做接口,如果一个设备包含不止一个接口就可以称之为复合设备(见图1)。
对于同样类型接口的组合可以称之为配置。但是每次只能有一个配置是可用的,而一旦该配置被激活,里面的接口和端点就都同时可以使用。主机从设备发过来的描述字中来判断用的是哪个配置�哪个接口等等�而这些描述字通常是在端点0中传送的。
1.3 USB通信分层模型
一台主机到设备的连接需要许多层与实体之间的相互作用。USB总线接口层提供了主机和设备之间的物理/信令/包的连接。在系统软件看来,USB设备层执行的是一般的USB *** 作。功能接口层提供和应用软件层相对应的附加功能。分层模型如图3所示,虽然逻辑上USB设备层和功能层各自与主机上的相应层通信,但物理上都是通过USB总线接口层实现数据传输的。
1.4 四种传输方式
USB提供了四种传输方式,以适应各种设备的需要。这四种传输方式分别是:
控制传输方式:控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给USB设备发送通用的命令。控制传输主要用在主计算机和USB外设中端点0之间。
等时传输方式:等时传输提供了确定的带宽和间隔时间。它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传送率的即时应用中。例如进行语音业务传输时,使用等时传输方式是很好的选择。
中断传输方式:中断方式传送是单向的并且对于主机来说只有输入的方式。中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量的、分散的、不可预测的数据传输。键盘、游戏杆和鼠标就属于这一类型。
大量传输方式:主要应用在没有带宽和间隔时间要求的大量数据的传送和接收,它要求保证传输。打印机和扫描仪属于这种类型。
在开发USB设备时通过设置接口芯片中相应的寄存器使端点处于不同的工作方式。
1.5 USB通信协议
USB的物理协议规定了在总线上传输的数据格式,一个全速的数据帧有1500字节,而对于低速的帧有187字节。帧的作用是分配带宽给不同的数据传送方式。
一个最小的USB的数据块叫做包,包通常有同步信号,包标识,地址、传送的数据和CRC。包的ID由八位组成,其中后四位是纠错位。根据包功能的不同,在USB1.1中定义了以下四类十种:
token OUT IN SOF SETUP
data DATA0 DATA1
handshake ACK NAK STALL
special PRE
在USB2.0中又增加了几种类型的包以满足高速传输的需要。其中data类型增加了DATA2和MDATA,handshake类型增加了NYET,special类型则增加了ERR,SPLIT,PING,Reserved。
事务是在主机和设备之间不连续地数据交换。一个事务通常由主机开始,一般分三个阶段,第一阶段发送token包,第二阶段发送是data包(可以向上也可以向下),在数据包传送完之后,就会由设备返回一个handshake包。
当客户端程序通过一个USB管道发送或接收数据时,它首先会调用Win32API,API会发送一个IRP到USB设备驱动程序。USB设备驱动程序的任务就是把客户端的请求通过一个管道发送到外设合适的端点。为了实现这个任务,USB设备驱动程序会递交请求给总线驱动程序,总线驱动程序可以把这些请求转变成事务,然后将这些事务组合成帧在总线上传输。
1.6 USB带宽分析举例
在USB1.1标准中将其有效的带宽分成帧,每帧通常是1ms长。但由于USB2.0的传输速率可高达480Mbps,因此在USB2.0增加了一种微帧,它只有原来帧的1/8,这使得在传输数据时使用更小的缓冲。在完成了系统的配置信息和连接之后,USB的主机就会对不同的端点和传输方式做一个统筹安排,用来适应它的带宽。对全速和低速的端点,系统为等时和中断方式的传输保留整个带宽的90%,即占每个帧时间的90%,剩下的就安排给控制方式传送数据。在USB2.0中,对于高速的端点,则为等时和中断方式的传输保留每个微帧的80%。
以等时传输为例,在某个配置中作为一个等时传输管道的端点,定义了它能传输的数据有效负载的长度。USB系统软件用这个长度限制去保证足够的总线时间使每帧的内容能容纳最多的数据有效负载。如果有足够的总线时间,配置才会建立。每个等时管道的数据有效负载可以是1,2,4,...,512,1023字节。
例如,当数据包最大有效负载为512个字节时,一个全速帧(1500字节)最多可以传输2个这样的包。除去协议开销的18个字节,剩余458个字节可以用于其他事务的传输。因此每帧有效字节数为2个包的字节即1024字节,因此最大带宽为1.024Mbyte/s,每个包的有效字节占整个帧的35%。同样可推算,数据有效负载长度为64、128或256时其最大带宽值最大,为1.28Mbyte/s。
在USB2.0高速工作方式下,每个等时管道的数据有效负载可以是1,2,4,...,2048,3072字节。当数据有效负载长度为1024时其最大带宽值最大,为5.7344Mbyte/s,每个包的有效字节占整个微帧的14%。
通常来说USB设备(这里只分析USB设备,而不针对USB HOST,USB OTG和USB
HUB)内部都有一片USB的芯片和一个MCU,有些当然有些厂商提供的USB芯片已经集成了MCU在里边,如Cypress的CY68013就是这样的。这里考虑MCU和USB芯片分开的情况吧,集成的也类似,大家可以自己去分析。USB芯片完成USB底层的事物,接收的时候:将接收到的USB串行数据识别出来,解包后存放在内部的缓存中,然后通过中断的方式告知MCU收到数据包了,MCU通过和USB芯片的并行或串行接口读回接收到的数据并进行相应的分析和处理;发送数据的时候,MCU将需要发送的数据通过和USB芯片的接口写入到USB芯片内部的缓存,写入完成后,一般来说USB芯片会在接收到来自HOST的IN令牌包时,将缓存中的数据送到USB总线上去。当发送完成后,通常USB芯片也可以通过中断的方式告知MCU。从这里看出,USB芯片只是完成数据的解包和打包,并不对数据进行任何分析和处理,数据包的分析和处理都是由MCU完成的。具体来说是由运行在MCU中的程序,也就是通常所说的USB
Firmware或者说USB固件程序完成的。首先来分析一次简单的从HOST到Device的数据传输,即OUT型的传输,假设传输类型为BULK。USB传输只能由HOST发起,HOST需要向Device发送一个OUT令牌包。在这个包里指定了接受数据的设备地址、端点。然后将数据包发送到USB总线上。不是目的接收器件的USB设备不会响应该数据包,目的接收设备如果能接收该数据包,则以ACK握手包响应,如果不能接收该数据包,则以
NAK握手包响应。在上述过程中,USB芯片会在接收完数据包后中断MCU,然后MCU读取缓存在USB芯片中的数据包,再决定回复ACK,或者是NAK。以上只是一次简单的BULK OUT传输,对于BULK
IN传输,HOST先发送一个IN的令牌包,USB芯片接收到该令牌包后会中断MCU,MCU如果有数据发回HOST,则将数据写入USB芯片内对应断点的缓存,然后USB芯片会自动将数据发送至USB总线。并等待接收来自HOST的握手包。对于BLUK、Interrupt以及同步传输,传输过程都类似,整个传输过程由令牌包、数据包以及握手包组成。对于控制传输,一次传输由三个阶段组成,即Setup阶段、可选的数据阶段以及状态阶段。其中Setup阶段为一次OUT型的传输,HOST将8个字节的SETUP数据包发送给设备。这8个字节指定了这次控制传输的请求类型。Device会根据这8个字节做出相应的Action。第二个阶段为数据阶段,有些控制传输没有这个阶段,如Set Address请求。数据阶段,HOST将数据通过OUT型传输发送给Device,或者通过IN型传输向Device请求数据。第三个阶段为状态阶段,即得到这次控制传输的状态,确认这次传输是否正常完成。HOST或者Device以一个长度为0的空数据包表示肯定的应答。USB Firmware中大部分程序都在处理控制传输,具体来说是11种标准请求以及针对具体设备的类请求,如Mass
Storage 类的请求,还有些厂商自定义的请求。USB
Firmware的设计和调试首先应从一次基本的传输开始。要能正常的完成一次传输,尤其是控制传输,否则连设备的枚举都不能完成,也就是说设备不能被计算机正确识别。
得看你的手机是不是定制机,是不是安卓40以上,只有安卓40以上系统才自带usb分享,如果是安卓2点几的分享需要软件,还有看你的电脑系统是不是官方系统,如果是第三方系统就会没有驱动包,少了驱动。就无法连接和接受手机的分享
以上就是关于如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包全部的内容,包括:如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包、简单说下USB设备识别与数据传输原理、USB是怎么传送数据的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)