圈圈叫你玩usb读书笔记

2023-11-18

本文是读圈圈教你玩usb的第一章节 usb基础的读书笔记,根据这篇内容可以理解usb的端点、管道等概念;

  • usb的插头和插座

 

 

记录2点:

  1. usb2.0的四根线是电源和地的触点比D+ D1长;当插入的时候电源和地先接通,然后才是数据;当拔出的时候是数据线先断开;
  2. otg口的ID检测机制

当手机通过micro线插入pc的场景--普通usb线

和手机通过micro usb线接入U盘—otg usb线

 

 

这里只是硬件接口使用了ID 功能,线缆内部还是4跟线

  • usb插入检测机制

首先,在USB集线器的每个下游端口的D+和D-上,分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D+或者D-上接了1.5K欧姆上拉电阻。对于全速和高速设备,上拉电阻是接在D+上;而低速设备则是上拉电阻接在D-上。这样,当设备插入到集线器时,由1.5K的上拉电阻和15K的下拉电阻分压,结果就将差分数据线中的一条拉高了。集线器检测到这个状态后,它就报告给USB主控制器(或者通过它上一层的集线器报告给USB主控制器),这样就检测到设备的插入了。USB高速设备先是被识别为全速设备,然后通过HOST和DEVICE两者之间的确认,再切换到高速模式的。在高速模式下,是电流传输模式,这时将D+上的上拉电阻断开。

全速设备和高速设备的识别---待补充

  • Usb描述符

    1、设备描述符(Device Descriptors)

2、配置描述符(Configuration Descriptors)

3、接口描述符(Interface Descriptors)

    4、端点描述符(Endpoint Descriptors)

     一个USB设备只有一个设备描述符,设备描述符里面定义了该设备有多少种配置,每种配置描述符对应着配置描述符;而在配置描述符中又定义了该配置里面有多少个接口,每个接口有对应的接口描述符;在接口描述符里面又定义了该接口有多少个端点,每个端点对应一个端点描述符;端点描述符定义了端点的大小,类型等等。这些事协议规定的基础描述符还有HID描述符字符串描述符等

 

对于配置 接口和端点的理解:

一个接口对应一个功能,配置是功能的组合;接口和配置是软件的虚拟概念;端点是usb控制器内部的缓存,可以理解成一个物理概念;usb host和device交互就是和device的不同端点的交互;交互的通道叫做管道;

这个是书上的关于这几个概念的比喻:

 

 

 

 

对于描述符的理解

    描述符是存储在device中的关于设备的信息如PID VID和端点信息等;host的枚举过程就是从device获取这个信息;

 

描述符详细信息

 

  • usb数据包

 USB 采用“令牌包”-“数据包”-“握手包”的传输机制

在令牌包中指定数据包去向或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包作出响应。

握手包表示了传输的成功与否

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

圈圈叫你玩usb读书笔记 的相关文章

  • Java FileReader读取文件

    import java io FileReader import java io IOException public class FileReaderCls public static void main String args read
  • Java基础——GUI——Swing中常用容器和组件

    1 swing中常用容器 1 JFrame 常用方法 1 构造方法 2 设置窗体可见 3 设置点击窗体的执行的操作 4 设置窗体的大小和位置 等价于上面两个方法 不管窗体多大 窗体运行起来都会出现在屏幕的中心 5 获取窗体容器 在容器中添加
  • 断点续传和多线程下载

    断点续传和多线程下载 HTTP是通过在Header里两个参数实现的 客户端发请求时对应的是Range 服务器端响应时对应的是Content Range Range 客户端发请求的范围 Content Range 服务端返回当前请求范围和文件
  • fadeOut、fadeIn

    p This is a paragraph p
  • 《Python 黑帽子》学习笔记 - 准备 - Day 1

    信息安全是一个有意思的方向 也是自己的爱好 从零开始 想在工作之余把这个爱好培养为自己的技术能力 而 web 安全相对来说容易入门些 于是选择 web 渗透测试作为学习的起点 并选择同样是容易入门的 Python 作为编程工具 潜心学习 持
  • 卡尔曼滤波算法 C语言实现 示例

    1 概念 卡尔曼滤波 Kalman filtering 是一种利用 k时刻 状态预测值 先验估计值 k 1时刻 状态最优估计值 后验估计值 k时刻 状态预测协方差 先验预测协方差 真实值与预测值之间的协方差 k时刻 状态最优估计协方差 后验
  • C# 字符串去掉括号和括号里面的内容

    using System Text RegularExpressions var majorname 考古学 清华大学 Replace Replace
  • 快速排序和归并排序的相同点和不同点(JAVA)

    首先我们贴出来快速排序的代码 public class QuickSort public int QuickSort int a int left int right int temp a left while left lt right
  • 小程序(十六)消息功能

    文章目录 一 数据库设计 二 系统消息的发送与收取设计 三 业务设计 四 消息实体设计 五 SpringBoot异步任务 1 开启异步注解功能 2 线程池创建 3 异步任务 发送消息 同步获取消息 4 controller 一 数据库设计
  • 字体样式的CSS表示大全

    https blog csdn net kellogg and nina article details 78349654 华文细黑 STHeiti Light STXihei 华文黑体 STHeiti 华文楷体 STKaiti 华文宋体
  • idea中创建xml,xml中路径报错

    1 先创建模板 2 新建xml 3 下面的路径可能会报红 4 解决方法
  • SpringFramework事件与监听机制(监听器)

    SpringBoot版本 2 0 2 RELEASE SpringFramework版本 RELEASE 文章目录 监听者从何而来 来自SpringBoot的监听器 来自SpringFramework的监听器 监听器监听的事件 监听器实现的
  • Linux搭建QT Creator环境

    虚拟机系统 VMware 14 操作系统 Ubuntu14 04 QT版本 4 8 7 1 下载QT 版本 QT4 8 7 路径 http download qt io archive qt 4 8 4 8 7 or https yunpa
  • 阿里云大数据专业认证(ACP级)学习笔记(精简) ...

    阿里云大数据专业认证 ACP级 学习笔记 精简 近百个视频精华考点总结 眼都快肿了 ODPS 流计算用的是ODPS ODPS的所有对象都隶属于项目空间 项目空间project 表table 表中的列支持Bigint长整 Double双精 S
  • Pytorch中tensor与numpy类型数据在GPU和CPU之间的转换

    1 CPU tensor转GPU tensor cpu imgs cuda 2 GPU tensor 转CPU tensor gpu imgs cpu 3 numpy转为CPU tensor torch from numpy imgs 4
  • 华为OD机试-查找充电设备组合-2022Q4 A卷-Py/Java/JS

    某个充电站 可提供n个充电设备 每个充电设备均有对应的输出功率 任意个充电设备组合的输出功率总和 均构成功率集合P的1个元素 功率集合P的最优元素 表示最接近充电站最大输出功率P max的元素 输入描述 输入为3行 第1行为充电设备个数n
  • 论文解读:Personalize Segment Anything Model with One Shot

    发表时间 2023 5 4 项目地址 https github com ZrrSkywalker Personalize SAM 体验地址 https huggingface co spaces justin zk Personalize
  • FFMPEG 合并视频文件(无损)

    FFMPEG 合并视频文件 无损 前言 最近在做视频转码相关业务 但是片源商给了一些DVD的零散视频片段 需要自己去合并片段并进行业务转码 本篇文章主要记录视频合并的过程及常见的合并方式 环境 FFMPEG BUILDS 4 4 1 FFm
  • [Pytorch系列-62]:生成对抗网络GAN - 基本原理 - 自动生成手写数字案例分析

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121914862 目录 第1章 基本原
  • 这三款软件让你轻松实现在线扫花识别植物

    如今 鲜花是我们日常生活中最常见的植物 但是随着鲜花种类的不断增多 它的许多的种类信息 想必大多数的朋友都难以认识清楚 因此 有的人就会使用一些识别鲜花的APP来帮助我们通过拍照而轻松获知鲜花的信息 那么你们知道识别鲜花的APP都有哪些吗

随机推荐

  • 小型中文版聊天机器人

    入门小菜鸟 希望像做笔记记录自己学的东西 也希望能帮助到同样入门的人 更希望大佬们帮忙纠错啦 侵权立删 目录 一 简单介绍与参考鸣谢 二 数据集介绍 三 数据预处理 1 重复标点符号表达 2 英文标点符号变为中文标点符号 3 繁体字转为简体
  • 【华为OD机试真题 Python语言】5、TLV解析

    文章目录 一 题目 题目描述 输入输出 样例1 二 思路参考 三 代码参考 作者 鲨鱼狼臧 个人博客首页 鲨鱼狼臧 专栏介绍 2023华为OD机试真题 使用Python进行解答 专栏每篇文章都包括真题 思路参考 代码分析 订阅有问题后续可与
  • Ansible 的脚本 --- playbook 剧本

    Ansible 的脚本 playbook 剧本 playbooks 本身由以下各部分组成 编写yaml文件示例 运行playbook 定义 引用变量 指定远程主机sudo切换用户 when条件判断 迭代 Templates 模块 1 先准备
  • 测试平台简介

    测试平台简介 一 被测系统介绍 被测系统为电商后台管理系统 功能模块包括 商品管理 订单管理 会员管理等 登录需要验证码 因没有后台代码 绕不开登录 只能手动获取到cookie 填充进测试用例 遇到真实项目 cookie这块逻辑需要再改造
  • Moonbeam与Nodle网络集成,增添物联网功能

    领先的波卡跨链互连开发平台Moonbeam近期宣布与Nodle Network达成XCM集成 将NODL Token带到Moonbeam生态之中 本次集成将会开启波卡中Moonbeam和Nodle网络以及通过Moonbeam互连合约相连的远
  • 如何在Swift开发中使用CocoaPods导入的第三方库

    今天在用swift写项目时 需要用CocoaPods引入SDWebImage这个三方库 于是开始在Vim命令中创建pod file 在创建之前需要cd到当前项目的目录中 Podfile创建步骤如下 1 创建Podfile touch Pod
  • Selenium自动化测试工具的介绍与使用

    Selenium自动化测试 什么是自动化测试 自动化测试指软件测试的自动化 在预设状态下运行应用程序或者系统 预设条件包括正常和异常 最后评估运行 结果 总的概括即 将人为驱动的测试行为转化为机器执行的过程 进入今天的主角 selenium
  • MSP430F5529学习笔记(1)——环境配置

    CCS下载链接 MSP430F5529官方教学视频 目录 下载 新建工程 创建文件 重要部分按钮介绍 project Explorer没有 下载 我们编写MSP430F5529的程序 需要使用到CCS这个软件 我们进入官网之后 界面如下 点
  • 实时系统HBase读写优化--大量写入无障碍

    在使用hbase过程中发现在写入hbase的数据量很大时 经常发生写不进去的情况 而我们基于hbase的应用是对实时性要求很高的 一旦hbase不能读写则会大大影响系统的使用 下面将记录hbase写优化的过程 1 禁止Major Compa
  • java多线程:线程池和阻塞队列

    一 线程池定义和使用 jdk 1 5 之后就引入了线程池 1 1 定义 从上面的空间切换看得出来 线程是稀缺资源 它的创建与销毁是一个相对偏重且耗资源的操作 而Java线程依赖于内核线程 创建线程需要进行操作系统状态切换 为避免资源过度消耗
  • 微博网站分享按钮

    div class bdsharebuttonbox a class bds weixin a a class bds sqq a a class bds tsina a div
  • Grid布局20行代码快速生成瀑布流

    网格布局 Grid 布局 好用又简单 至少比 Flex 要人性化一点 美中不足就是浏览器支持度差点 DOM结构 中间夹层为了后续拓展 CSS grid display grid grid template columns repeat 2
  • 学习lua结合unity遇到错误信息的解决方法

    require uiDefine 报错信息 module uiDefine not found no fieldpackage preload uiDefine no such builtin lib uiDefine 解决方法 在requ
  • 全国青少年软件编程等级考试标准(正式级)

    简介 说明本标准由中国电子学会科普培训与应用推广中心和北京大学信息科学技术学院共同制定 由全国青少年电子信息科普创新联盟标准工作组参与开发 由中国电子学会普及工作委员会审核通过 适用于由中国电子学会举办的全 说明 本标准由中国电子学会科普培
  • Python 汇总两张excel表格:分解excel复杂表头,比对汇总表和子表异同项目,生成仅含相同项的汇总表和填充异同项目的子表

    在工作中遇到需要将子表项目添加到汇总表中 存在以下特点 工作中遇到需要将子表项目汇总到汇总表中 存在以下特点 1 表头复杂 存在合并的单元格 考虑分解单元格并填充空白单元格 2 子表中存在汇总表没有的项目 考虑将子表分别标示异同项目 创建辅
  • QGIS编译

    一 准备工作 1 下载QGIS源码 最新版本的QGIS源码需要从git上下载 最新的发布版是2 0 下载地址见下 https github com qgis QGIS tree release 2 0 打开网页 在右侧有个Download
  • Nginx与tomcat直接连接

    ng端口和目录的配置 Nginx用户及组 用户 组 window下不指定 在linux下可改为root user nobody 工作进程 数目 根据硬件调整 通常等于CPU数量或者2倍于CPU worker processes 1 错误日志
  • Swift 数据类型

    在我们使用任何程序语言编程时 需要使用各种数据类型来存储不同的信息 变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中 在声明变量时也可指定它的数据类型 所有变量都具有数据类型 以决定能够存储哪种数据 内置数据类型 Swift 提
  • BZOJ3425 Poi2013 Polarization

    最小值一定是n 1 每条边贡献一个答案 显然 首先我们要证明这道题的一个性质 最优解一定具有如下形式 以树的某一个重心 可以是任意一个 为根 根的每一个子树里的所有边要么都指向根 要么都指向叶子 引理 首先对于一棵树 我们把所有边的朝向反转
  • 圈圈叫你玩usb读书笔记

    本文是读圈圈教你玩usb的第一章节 usb基础的读书笔记 根据这篇内容可以理解usb的端点 管道等概念 usb的插头和插座 记录2点 usb2 0的四根线是电源和地的触点比D D1长 当插入的时候电源和地先接通 然后才是数据 当拔出的时候是