精华内容
下载资源
问答
  • USB:USB全速批量传输端点AHB-Lite SoC模块
  • usb全速设备

    2019-12-02 16:22:54
    stm32f103 usb全速设备学习 201912/2 1、在开始前要先做好调试工作 延时函数的编写,可以使用系统滴答函数来写 系统时钟初始化1ms触发中断一次: SysTick_Config(72000); 可以void SysTick_Handler(void);中断函数里...

    stm32f103 usb全速设备学习
    201912/2
    1、在开始前要先做好调试工作
    延时函数的编写,可以使用系统滴答函数来写
    系统时钟初始化1ms触发中断一次:
    SysTick_Config(72000);
    可以void SysTick_Handler(void);中断函数里编程
    2、可以在D+或者D-线上加1.5千欧的上拉电阻来判断是全速还是高速
    3、会进入总的中断函数里,一般的中断里会有挂起中断、复位中断、端点0的控制输入输出中断、端点1…输入输出中断。setup建立阶段会产生一个usb请求,向端点0输出buffer,主要就是对这个buffer进行分析
    4、读传输到端点0的buffer,去分析这个buffer,一般会是8个字节的usb请求 0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00,定义一个结构体去将取到的8字节赋值,编写时要1字节对其#pragma pack(1) …#pragma pack()
    typedef struct{
    uint8_t bmRequestType;
    uint8_t bRequest;
    uint16_t wValue;
    uint16_t wIndex;
    uint16_t wLength;
    }usb_request_t;

    在建立包的地方定义 usb_request_t usb_request;并对它赋值
    usb_request.bmRequestType=buffer[0];
    usb_request.bRequest=buffer[1];
    usb_request.wValue=*(unit16_t )&buffer[2]; //可以连续读两个字节
    usb_request. wIndex=
    (unit16_t )&buffer[4];
    usb_request.wLength=
    (unit16_t *)&buffer[6];
    5、先讲一下,一般usb接收体系里,一般会有一个或多个设备,一个设备又会有一个或多个配置,一个配置会有一个或多个接口,一个接口可能有一个或多个端点
    6、现分析读到的8个字节标准请求:第一个字节是bmrequesttype D7:数据传输方向,D65请求类型,D4D0请求接收者,第二个字节是brequest:请求代码,标准请求有12个,第三和四个字节是数值这个字节要结合具体分析,第五和六个字节索引和偏移量也要具体分析,第七和八个字节表示字节数。
    7、对8个字节进行处理,判断第一个字节的第7位是0(主机到设备)还是1(准备到主机);判断第一个字节的第6~5位,若为0(标准请求)、1(类请求)、2(厂商请求,这个是定制自己的usb协议)、3(保留),如果是标准请求判断是12个标准请求的哪一个请求(获取状态请求、获取描述符请求、设置地址请求、设置配置请求等);判断第一个字节的第4到0位,0为设备,1为接口,2为端点,3是其他,4以后保留
    8、第一个8个字节的请求是请求一个设备描述符的标准请求,描述符请求一般有设备描述符、配置描述符、字符串描述符、接口描述符、端点描述符在wValue。
    设备描述符
    typedef struct{
    uint8_t bLength; //描述结构体的长度
    uint8_t bDescriptorType; //描述符类型
    unit16_t bcdUSB; //usb版本号
    uint8_t bDeviceClass; //设备类代码
    uint8_t bDeviceSubClass; //子类代码
    uint8_t bDeviceProtocol; //设备协议代码
    uint8_t bMaxPacketSize0; //端点0的最大包大小(8、16、32、64)
    uint16_t idVendor; //生产厂商编号
    uint16_t idProduct; //产品编号
    uint16_t bcdDevice; //设备出厂编号
    uint8_t iManufacturer; //设备厂商字符串
    uint8_t iProduct; //产品描述字符串索引
    uint8_t iSerialNumber; //设备序列号字符串索引
    uint8_t bNumconfigurations; //当前速度下能支持的设备数量
    }usb_device_t;
    9、将设备描述符回复个电脑端后,电脑又会下发一个设置地址请求,设备回复:配置设备的地址(这个要看具体是芯片),接着回复长度为0的数据包,这个时候主机会在新的地址上重新获取设备描述符,然后获取配置描述符。将配置描述符回复给主机。(配置描述符、接口描述符、HID描述符、端点描述符 ) 字符串描述符 语言ID描述符 report描述符
    10、设置配置请求,就是启用端点,然后回复一个0长度的包。
    11、字符串描述符请求回复

    展开全文
  • USB 全速/高速设备识别信号分析

    千次阅读 2017-06-15 00:05:26
    以下的内容转载自USB chirp信号测试,在这篇文章中详细的解释了USB高速设备的握手过程,以及通过...USB全速高速识别过程分析根据规范,全速(Full Speed)和低速(Low Speed)很好区分。因为在设备端有一个1.5k的上拉电

    以下的内容转载自USB chirp信号测试,在这篇文章中详细的解释了USB高速设备的握手过程,以及通过分析D+和D-上面的波形来进行说明。很赞的一篇文章。


    一、Chirp K J信号说明

    USB Chirp信号分为K信号和J信号。根据USB速率将Chirp信号做如下区别:
    这里写图片描述


    二、USB全速高速识别过程分析

    根据规范,全速(Full Speed)和低速(Low Speed)很好区分。因为在设备端有一个1.5k的上拉电阻,当设备插入hub或上电(固定线缆的USB设备)时,有上拉电阻的那根数据线就会被拉高,hub根据D+/D-上的电平判断所挂载的是全速设备还是低速设备。

    USB全速/低速识别相当简单,因为USB1.x就一对数据线,在USB2.0不能像全速/低速那样仅依靠数据线上拉电阻位置就能识别USB第三种速度——高速。因此对于高速设备的识别就显得稍微复杂些。

    高速设备初始是以一个全速设备的身份出现的,即和全速设备一样,D+线上有一个1.5k的上拉电阻。USB2.0的hub把它当作一个全速设备,之后,hub和设备通过一系列握手信号确认双方的身份。在这里对速度的检测是双向的,比如高速的hub需要检测所挂上来的设备是高速、全速还是低速,高速的设备需要检测所连上的hub是USB2.0的还是1.x的,如果是前者,就进行一系列动作切到高速模式工作,如果是后者,就以全速模式工作。

    hub检测到有设备插入/上电时,向主机通报,主机发送Set_Port_Feature请求让hub复位新插入的设备。设备复位操作是hub通过驱动数据线到复位状态SE0(Single-ended 0,即D+和D-全为低电平),并持续至少10ms。

    高速设备看到复位信号后,通过内部的电流源向D-线持续灌大小为17.78mA电流。因为此时高速设备的1.5k上拉电阻还未撤销,在hub端,全速/低速驱动器形成一个阻抗为45欧姆(Ohm)的终端电阻,2电阻并联后仍是45欧姆左右的阻抗,所以在hub端看到一个约800mV的电压(45欧姆*17.78mA),这就是Chirp K信号。Chirp K信号的持续时间是1ms~7ms。

    在hub端,虽然下达了复位信号,并一直驱动着SE0,但USB2.0的高速接收器一直在检测Chirp K(D+位0,D-为1)信号,如果没有看到Chirp K信号,就继续复位操作,直到复位结束,之后就在全速模式下操作。如果只是一个全速的hub,不支持高速操作,那么该hub不理会设备发送的Chirp K信号,之后设备也不会切换到高速模式。

    设备发送的Chirp K信号结束后100us内,hub必须开始回复一连串的KJKJKJ….序列,向设备表明这是一个USB2.0的hub。这里的KJ序列是连续的,中间不能间断,而且每个K或J的持续时间在40us~60us之间。KJ序列停止后的100~500us内结束复位操作。hub发送Chirp KJ序列的方式和设备一样,通过电流源向差分数据线交替灌17.78mA的电流实现。

    再回到设备端来。设备检测到6个hub发出的Chirp 信号后(3对KJ序列),它必须在500us内切换到高速模式。切换动作有:

    • 断开1.5k的上拉电阻;
    • 连接D+/D-上的高速终端电阻(high-speed termination),实际上就是全速/低速差分驱动器;
    • 进入默认的高速状态。执行1,2两步后,USB信号线上看到的现象就发生变化了:hub发送出来的Chirp KJ序列幅值降到了原先的一半,400mV。这是因为设备端挂载新的终端电阻后,配上原先hub端的终端电阻,并联后的阻抗是22.5欧姆。400mV就是由17.78mA*22.5Ohm得来。以后高速操作的信号幅值就是400mV而不像全速/低速那样的3V。

    至此,高速设备与USB2.0 hub握手完毕,进行后续的480Mbps高速信号通信。


    三、信号测试及判断注意事项

    • 高速检测握手协商是在主机发出复位(reset)信号期间,由设备发起的,由主机响应的过程;

    • 主机使用SE0状态reset设备之后需要使用高速握手协商(chirp handshake)才可以再次正常通信;

    • 主机使用全速的idle状态suspend设备之后需要通过resume过程使设备进入工作状态,这个过程不需要高速握手协商;

    • 全速/低速模式时主机resume设备的是通过保持K状态20ms;高速下这20ms的K状态以转换成SE0状态后结束,然后主机和设备在两次低速位(2 low speed bit times)内必须保持在高速终端模式;

    • DEVICE_REMOTE_WAKEUP feature,该特性用来在设备被挂起(suspend)后,主机可以使用resume信号来唤醒设备。该特性是主机使用SET_FEATURECLEAR_FEATURE请求对进行设置和清除的。


    四、USB Chirp信号测试表

    实测过程中黄色波形为D+,绿色对应D-

    1、基于高速传输的电路

    这里写图片描述


    2、高速同步模式

    这里写图片描述

    这里写图片描述

    同步模式为实测波形的后半部分红圈所示,为正常波形。


    3、高速速度检测

    这里写图片描述


    这里写图片描述


    这里写图片描述

    如实测波形图,上图为整体波形,下图为上图红圈的放大部分,可见:

    • 模块被退出idle(2.9V左右电平)模式1.5ms之后;
    • 首先D-上发出持续2ms左右的chirp K信号(800mV电平);
    • 主机回复chirp JK序列(800mV电平)
    • 设备收到之后断开1.5K上拉电阻,波形赋值降低一半(400mV电平);

    上述第2步是设备通知主机自己是高速设备,第3步是主机响应设备的通知,第4步电平赋值减半表示协商成功,执行同步动作。


    4、主机复位设备

    这里写图片描述

    展开全文
  • USB高速握手过程分析很详细博客: https://blog.csdn.net/flydream0/article/details/71512852

    推荐一个很好的文章
    USB高速握手过程分析很详细博客:
    https://blog.csdn.net/flydream0/article/details/71512852
    非常感谢分享。

    展开全文
  • 原文地址::... 相关文章 1、USB2.0的高速、全速及低速设备的检测----http://blog.csdn.net/lg2lh/article/details/7321542 2、USB2.0 速度识别--区分低速-高速-全速----http://www.mamicode.c

    原文地址::http://blog.csdn.net/tcjy_001/article/details/51131408


    相关文章

    1、USB2.0的高速、全速及低速设备的检测----http://blog.csdn.net/lg2lh/article/details/7321542

    2、USB2.0 速度识别--区分低速-高速-全速----http://www.mamicode.com/info-detail-969074.html


    1、全速和低速设备的检测 
    如图所示为一个简易的usb连接模型,左边为usb host,右边为usb设备。全速和低速设备通过其端接的上拉电阻的位置来区分。

    简单的usb设备连接图

    全速和低速设备端接如图所示,设备的D+线上接上拉电阻(R4)1.5K欧姆,而低速设备D-线上接上拉电阻(R3)1.5K欧姆,二者下行端口的下拉端统一接15K欧姆的电阻连接到地。

    当USB的host端口没有连接设备时,由于下拉电阻的存在,使D+和D-上的电压为0,而当端口接上设备时,设备供电后,电源会通过上拉电阻(1.5K欧姆)和端口的下拉电阻(15K欧姆)分压,在D+或D-上产生一个正脉冲,而USB主机根据脉冲产生在哪根数据线上,来判断是全速还是低速。 
    2、高速设备和全速设备的检测 
    在连接的最开始阶段,高速设备是当成全速设备来识别的,因此,高速设备的D+线上也会有一个1.5K欧姆的上拉电阻到电源,但是与全速设备不相同的是,高速设备对这个上拉电阻,会有一个开关进行通断控制。因为高速信号传输是通过电流驱动的,D+和D-上的信号幅值在0V和400mv之间切换,所以传输时不允许有一个接到3.3V的上拉电阻存在。

    *以下就是简化的高速设备检测流程。* 
    ===》1,集线器或者主机必须确认连在它端口上的设备不是低速设备,高速设备是以一个全速设备的身份出现的,即和全速设备一样,高速设备也在D+端有一个1.5K的上拉电阻。USB2.0的HUB把设备当成一个全速设备,然后进行一系列的握手信号来确认双方的身份,如果HUB是USB2.0,设备也是高速的 就工作在高速模式,否则只能工作在全速模式。

    ===》2,当集线器或者主机确认端口设备不是低速设备后,它将在握手协议的最开始阶段,T0时刻,发出一个SE0(D+,D-都为低电平并持续至少10mS),用作复位。(当设备为非低速设备,且总线处于SE0状态才可以进行高速握手。)

    ===》3,设备检测这个SE0,进行复位。(这里设备根据自己处在何种状态,会作出不同的动作)

    ===》4,假如设备是高速设备,则它会让上拉电阻仍然连接,但会使高速的端接无效,并驱动高速信号电流流向D-线上,这将在总线上产生一个K脉冲。该脉冲,在复位的TO时刻后,必须持续至少1.0 ms,但不能超过7.0ms 
    (低速下:D+为“0”,D-为“1”是为“J”状态,“K”状态相反; 
    全速下:D+为“1”,D-为“0”是为“J”状态,“K”状态相反; 
    高速下:D+为“1”,D-为“0”是为“J”状态,“K”状态相反;)

    ===》5,集线器在观察到设备发出的K脉冲至少2.5 us后,必须能检测出这个脉冲。假如集线器没有检测出这个脉冲,则它必须持续的发出SE0信号,直到复位结束。

    ===》6,在当K脉冲信号在总线上存在不超过100 us的时间后,集线器必须开始发送间隔的K脉冲和J脉冲序列信号,在J’s和K’s之间的总线上不允许有空闲状态发生。该序列信号在复位结束之前将持续一段时间,不少于100 us,但不长于500 us。(这保证了总线上始终保持活动状态,阻止设备进入高速挂起状态。)每一个独立的K脉冲和J脉冲的持续时间至少为40 us,但不能长于60 us。

    ===》7,在完成脉冲序列信号发生之后,集线器发出SE0信号,直到复位结束。在复位结束时,集线器必须转到高速使能状态,而无需在数据线上作出任何改变。

    ===》8,在设备完成发送它自己的脉冲信号(K脉冲)后,它将寻找高速集线器的脉冲信号。设备至少需要观测到K-J-K-J-K-J脉冲序列,来作为检测到一个有效的集线器脉冲信号。每一个独立的K脉冲和J脉冲至少需检测到2.5 us。

    A),假如设备检测到脉冲序列K-J-K-J-K-J,则在检测到后的500 us之内,设备要求断开D+的上拉电阻,并使能高速端接,进入高速缺省状态。即已进入高速模式

    B),假如设备在完成它自己的脉冲信号之后的1.0 ms到2.5 ms之内,没有检测到脉冲序列K-J-K-J-K-J,则设备要回复到全速缺省状态,并等待至复位结束。(进入全速模式)

    注:部分内容参考自:

    [USB2.0的高速、全速及低速设备的检测] 
    (http://blog.csdn.net/lg2lh/article/details/7321542)

    [USB2.0 速度识别–区分低速-高速-全速] 
    (http://www.mamicode.com/info-detail-969074.html)




    展开全文
  •  全新的AT90USB82和AT90USB162器件以8位AVR微控制器核为基础,具有全速USB(12Mbits/s)控制器,分别带有8Kb和16Kb的闪存,可以通过USB接口实现系统内编程(in-system programming)。512KB的片上EEPROM能让用户在不...
  • STM32F4USB全速虚拟串口例程--1MB/s

    热门讨论 2015-10-24 14:47:13
    STM32F407的虚拟串口例程,速度可达到1MB/s.只需修改usbd_desc.c中的端口,usbd_cdc_core.c中的描述符和main函数中的内容即可修改为自己板子的程序
  • stm32f4 discovery开发板usb全速修改测试

    千次阅读 2015-04-30 19:47:42
    __ALIGN_BEGIN static uint8_t USBD_CUSTOM_HID_CfgDesc[USB_CUSTOM_HID_CONFIG_DESC_SIZ] __ALIGN_END = {  0x09, /* bLength: Configuration Descriptor size */  USB_DESC_TYPE_CONFIGURATION, /* ...
  • 全速USB和高速USB的识别过程分析

    万次阅读 多人点赞 2017-05-09 23:19:21
    注:本文是根据网上的一些资料整理...因此,如果高速设备挂到USB1.x的hub上,那该设备只能工作在全速模式下。不管是hub还是设备(device),对于速度的区分是非常重要的,否则,后续的通信根本无法进行。2 全速和低速U
  • USB 低速与全速

    千次阅读 2017-06-26 19:40:37
    关于低速与全速的总线状态,需要特别加以注意与了解。在低速与全速的设各上,差动“1”是以15 kΩ的电阻拉至接地端,将D+拉升至...如表所列,USB规范书中将信号的传递状态分为J状态与K状态。但需注意的是这两种状态
  • Maxim推出MAX3349EA USB 2.0全速收发器,内置UART复用模式。UART接口允许移动设备,例如PDA、蜂窝电话、和数码相机可以采用相同的连接器通过UART或USB进行通信,因此降低了成本,并减少了移动设备所需的元件数。MAX...
  • usb协议_全速设备

    2013-11-06 10:03:12
    USB协议,介绍了USB1.1方面的相关协议
  • Maxim Integrated Products推出MAX3349EA USB 2.0全速收发器,内置UART复用模式。UART接口允许移动设备,例如PDA、蜂窝电话、和数码相机可以采用相同的连接器通过UART或USB进行通信,因此降低了成本,并减少了...
  • HD-USB12”全速 低速USB2.0协议分析仪技术文档
  • USB 2.0还有全速和高速的区分,如果买到全速 USB 2.0 的大容量存储设备,拷贝一个几G的电影,你就等着吧。同样是 USB 2.0 全速和高速还是有明显区别的。 USB2.0除了拥有USB1.1中规定的1.5Mbps和12
  • stm32f4 USB BULK 全速配置

    千次阅读 2018-11-01 10:12:19
    近期由于项目需要,开发了USB 接口,记录一下配置步骤: 1.找到ST公司提供的源程序,HID。!基础上修改。将下列文件导入工程: 打开usbd_hid_core.c配置如下 另外注意晶振频率配置,端点最大字节数,BULK最大...
  • Maxim推出MAX3349EA USB 2.0全速收发器,内置UART复用模式。UART接口允许移动设备,例如PDA、蜂窝电话、和数码相机可以采用相同的连接器通过UART或USB进行通信,因此降低了成本,并减少了移动设备所需的元件数。MAX...
  • ADuM4160全速低速USB数字隔离器
  • Maxim推出MAX3349EA USB 2.0全速收发器,内置UART复用模式。UART接口允许移动设备,例如PDA、蜂窝电话、和数码相机可以采用相同的连接器通过UART或USB进行通信,因此降低了成本,并减少了移动设备所需的元件数。MAX...
  • usb高速全速低速的判别

    千次阅读 2010-05-06 08:57:00
    1.5K 的电阻拉D+ 为全速1.5K 电阻 拉D- 为低速高速设备的上拉电阻也在D+上,在复位期间主机会发送KJ对,这时设备便会知道主机是支持高速设备的,设备便断开D+的上拉电阻,高速握手完成。
  • USB 2.0接口标准的三种速度规格 High-speed 25Mbps~400Mbps(最大480Mbps) (高速) Full-speed 500Kbps~10Mbps(最大12Mbps) (全速) Low-speed 10Kbps~100Kbps(最大1.5Mbps)(低速)
  • STM32F10xxx全速USB设备开发套件
  • 本文件包含STM32F10xxx全速USB设备开发套件用户手册中文版.pdf和usb2.0协议.pdf两个文档。旨在帮助广大同学们学习如何利用stm32单片机开发诸如鼠标、摄像头等usb硬件设备。如需学习windows驱动编程为你的usb设备开发...
  • 事务(Transaction)USB协议定义了三种不同的事务(Transation),即SETUP事务, IN事务和OUT事务SETUP 事务一次成功的SETUP事务包含3个连续的数据包,分别是令牌包(TOKEN PACKET),数据信息包(DATA PACKET),握手包...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,022
精华内容 408
关键字:

usb全速