USB chirp信号测试

article/2025/10/4 0:17:14

1 信号及原理分析

1.1 KJ信号说明

USBchirp信号分为K信号和J信号。根据USB速率将chirp信号做如下区别:

USB速率

Chirp

DP

DM

空闲状态

Low Speed

K

1

0

K

J

0

1

Full Speed

K

0

1

J

J

1

0

High Speed

K

0

1

SE0

J

1

0

SE0

0

0

1.2 USB全速高速识别过程分析

 

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

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

表1中图3展示了一个高速设备连接到USB2.0的hub上的协商(negotiation)情形。

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

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

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

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

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

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

1.断开1.5k的上拉电阻;

2.连接D+/D-上的高速终端电阻(high-speedtermination),实际上就是全速/低速差分驱动器;

3.进入默认的高速状态。

执行1,2两步后,USB信号线上看到的现象就发生变化了:hub发送出来的ChirpKJ序列幅值降到了原先的一半,400mV。这是因为设备端挂载新的终端电阻后,配上原先hub端的终端电阻,并联后的阻抗是22.5欧姆。400mV就是由17.78mA*22.5Ohm得来。以后高速操作的信号幅值就是400mV而不像全速/低速那样的3V。

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

1.3信号测试及判断注意事项

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

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

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

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

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

2 测试表格及结果分析

 (1)基于高速传输的电路

(2)高速同步模式

理论波形特征:

实测结果:

(3)高速速率协商

理论波形特征:

 

实测结果

 

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

1.      模块被退出idle(2.9V左右电平)模式1.5ms之后;

2.      首先D-上发出持续2ms左右的chirp K信号(800mV电平);

3.      主机回复chirp JK序列(800mV电平)

4.      设备收到之后断开1.5K上拉电阻,波形赋值降低一半(400mV电平);

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

800mV和400mV电平正常,空闲状态高电平2.9V左右(与理论不符)

 

4)主机复位设备--RESET

理论波形特征:

 

从图序3可以看出,复位信号是正常的。

电平幅值较低

(5)主机挂起设备--SUSPEND

理论波形特征:

实测结果:

正常,高电平值2.8V左右

(6)主机唤醒设备--RESUME

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


http://chatgpt.dhexx.cn/article/CCUroBXf.shtml

相关文章

chirp信号相关

1、frft 基于分数阶傅里叶变换的chirp信号检测与参数估计(原理附代码)_非 常 道的博客-CSDN博客_chirp基 求相关性最好的阶数: 其中fs是采样频率,arccot这个在matlab中有相应的函数,B是chirp信号的带宽。 2、在实际工作…

基于分数阶傅里叶变换的chirp信号检测与参数估计(原理附代码)

线性调频信号(chirp信号) 顾名思义,该信号的频率随着时间线性变换,其复数表达形式如下: s ( t ) e 2 j π ( f 0 t 0.5 μ t 2 ) s(t)e^{2j\pi(f_0 t 0.5\mu t^2)} s(t)e2jπ(f0​t0.5μt2) 根据欧拉公式&#xff…

Chirp信号及其生成

Chirp信号是一个典型的非平稳信号,在通信、声纳、雷达等领域具有广泛的应用。 简介 Chirp译名:啁啾(读音:“周纠”),是通信技术有关编码脉冲技术中的一种术语,是指对脉冲进行编码时,其载频在脉冲…

什么是chirp信号

什么是chirp信号?(翻译自维基百科) 维基百科是这样说的: A chirp is a signal in which the frequency increases (up-chirp) or decreases (down-chirp) with time。 也就是说:是频率随着时间增加或减小的信号。 …

Chirp信号简单介绍

1.定义:chirp指的是频率随时间增加或减少的信号。它通常应用于声纳、雷达和激光系统,以及其他应用,如扩频通信。(大多数情况也可称为线性chirp信号,但其实chirp信号未必是线性的) 2.公式推导理解&#xff…

Chirp信号基础知识及matlab实现

Chirp信号的表达式如下: x ( t ) e x p ( j 2 π ( f 0 t 1 2 k t 2 ) ) x(t)exp(j2\pi (f_0t\frac{1}{2} kt^2)) x(t)exp(j2π(f0​t21​kt2)) 其中, f 0 f_0 f0​ 称作起始频率,k为调频率 对相位进行求导,得到角频率以及频率随时间的线…

项目通信之RPC调用——java简单实现

微服务项目通信方法很多,有像springcloud解决方案的http通信,还有像阿里Dubbo的RPC通信,这里简单实现RPC调用。一共2个端,客户端server和客户端client.项目demo很简单,就不多讲了,看代码好了。 下面是服务…

RabbitMQ消息队列之RPC调用

我们知道现在市面上的RPC框架很多,但是如何用我们的RabbitMQ去实现一个RPC调用呢?这就是我们这篇文章所要讲解的内容。 如果有阅读过我写的博客的大兄弟们,可能会知道,我有个习惯就是学习技术喜欢去看官方文档,同样对于…

rpc调用过程原理分析以及Dubbo、Feign调用过程

RPC简介 RPC是远程过程调用(Remote Procedure Call)的缩写形式。 RPC调用流程图 客户端方法:服务调用方所调用的接口 客户端代理:将接口封装成代理对象,并序列化请求参数、反序列化响应结果,使用远程传输…

SpringBoot+RabbitMQ 实现 RPC 调用

说到 RPC(Remote Procedure Call Protocol 远程过程调用协议),小伙伴们脑海里蹦出的估计都是 RESTful API、Dubbo、WebService、Java RMI、CORBA 等。 其实,RabbitMQ 也给我们提供了 RPC 功能,并且使用起来很简单。 …

消息中间件RabbitMQ(五)——实现RPC调用

文章目录 1. RPC2. 实现原理3. 代码实现3.1 客户端实现3.2 服务端实现3.3 测试 4. 小结 1. RPC 对于微服务开发者,对于 RPC(Remote Procedure Call Protocol 远程过程调用协议)并不会陌生吧, RESTful API、Dubbo、WebService等都…

springcloud 远程rpc调用接口

springcloud 如果想要从注册中心中调用已经注册的接口,需要用如下方法。 我们现在已经将一个微服务注册到了注册中心。端口是8083的那个 并且里面有个member的RequestMapping 首先,创建一个微服务,将需要的依赖放入pom.xml和配置好apppli…

浅谈RPC调用过程

RPC(Remote Procedure Call) - 远程过程调用,是一个计算机通信协议,它允许运行于一台计算机的程序调用另一台计算机的子程序,而无需额外地为这个交互作用编程。RPC主要应用在分布式系统架构中不同的系统之间的远程通信和相互调用。 举个例子…

远程RPC调用用于js逆向

这里只是记录于学习,资源来自于大佬的github,有十分详细的介绍,我仅仅拿来一用。https://github.com/jxhczhl/JsRpc。(注RPC在某些网站会被检测到) 在右侧下载适合自己系统的exe文件,双击打开 练习对象是某…

使用 webservice 实现 RPC 调用

WebService 介绍 Web service 是一个平台独立的,低耦合的 web 的应用程序用于开发分布式的互操作的应用程序。Web Service 技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。 SO…

RPC调用链通信方法

RPC调用链可以将远程过程调用变成一个有效的堆栈。 当我们编写应用程序时,我们中的许多人认为REST是服务间通信的一个通用标准。然而,还有许多其他形式的通信,RPC就是其中之一。值得注意的是,通信方式的选择取决于许多因素&#…

使用Dubbo实现简单的RPC调用(Spring配置文件版)

更多文章和资源欢迎访问:SuperCoder Blog 文章目录 更多文章和资源欢迎访问:[SuperCoder Blog](https://supercoder.com.cn)前言一、Dubbo架构二、安装zookeeper三、代码实战1. 创建服务提供方2. 创建服务消费方 四、服务调用 前言 Dubbo是阿里巴巴公司…

用一个简单的函数来理一下RPC调用过程

1.什么是RPC RPC(Remote Procedure Call)远程过程调度,简单的理解就是一个节点请求另一个节点的提供的服务。 2.远程调用要面临的三个问题。 (1)Call ID映射。本地调用中,函数体是直接通过函数指针来指定…

Dubbo的RPC调用流程

首先在客户端启动时会从注册中心拉去和订阅对应的服务列表,Cluster会把拉取到的服务列表聚合成一个cluster,每次RPC调用前会通过Directory#list获取providers地址(已经生成好的invoker列表),获取这些服务列表给后续路由和负载均衡使用,框架内…

RPC 调用原理

RPC调用原理 RPC原理 RPC(Remote Procedure Call)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果,而代码中不需要做额外的编程,就像在本地调用一样。分布式的应用可以借助RPC来完成服务之间的调用。 RPC框架原理 在RPC框架…