当前位置: 首页 > news >正文

USB(通用串行总线)数据传输机制和包结构简介

目录

    • 1. USB的物理连接
      • 电缆结构
      • 时钟恢复技术
    • 2. USB的数据传输方式
      • 包(Packet)
    • 3. 包的传输规则
      • 帧和微帧
    • 4. 包的结构
      • 1. 同步字段(Sync)
      • 2. 包标识符字段(PID)
      • 3. 数据字段
      • 4. 循环冗余校验字段(CRC)
      • 5. 包结尾字段(EOP)

1. USB的物理连接

电缆结构

USB的主机(如电脑)和设备(如鼠标、键盘)之间通过4根线连接:

  • 差分数据线(2根):用于传输数据。
    • 这两根线通过差分信号(一种特殊的电压变化方式)传输数据,可以提高抗干扰能力。
    • 适用于高速、全速和低速传输。
  • 电源线(1根):提供5V电力,为设备供电。
  • 地线(1根):作为电流回路,确保电路正常工作。

时钟恢复技术

  • 没有时钟线(clk):与SPI、I2C等协议不同,USB没有单独的时钟线。
  • 如何同步?
    接收端通过数据时钟恢复电路,从接收到的数据信号中“提取”时钟信号,从而同步数据传输。
    • 类比:就像看一场电影,虽然没有人告诉你“现在是第几帧”,但通过画面内容的变化(数据)可以推断时间(时钟)。

2. USB的数据传输方式

包(Packet)

  • 什么是包?
    USB将所有信息(数据、命令、配置等)封装成,作为传输的基本单元。
    • 类比:快递包裹,每个包裹里装着需要传递的内容(数据),并贴上标签(标识符)说明用途。
      在这里插入图片描述

3. 包的传输规则

帧和微帧

  • 帧(Frame)
    • USB全速(FS)和低速(LS)设备的数据传输必须在**1毫秒(ms)**的帧时间内完成。
    • 类比:每秒钟有1000个“时间窗口”,每个窗口1ms,数据只能在这个窗口内传输。
  • 微帧(Microframe)
    • USB高速(HS)设备将1ms的帧进一步分成8个微帧,每个微帧125微秒(μs)。
    • 类比:把1秒分成更小的“时间片段”,提高传输效率。

4. 包的结构

一个完整的USB包由以下5部分组成:

1. 同步字段(Sync)

  • 作用:让接收端的时钟与发送端对齐,确保数据正确接收。
    • 类比:两个人通话前先喊“同步一下”,确保双方节奏一致。

2. 包标识符字段(PID)

  • 作用:说明包的类型,例如:
    • 数据包:传输实际数据。
    • 令牌包:用于设备寻址(如主机告诉设备“我要和你通信”)。
    • 握手包:确认数据是否正确接收(如“收到”或“重发”)。
    • 类比:信封上的“快递”“挂号”等标签,告诉接收方如何处理。

3. 数据字段

  • 作用:存放实际要传输的数据。
    • 数据长度根据USB速度和用途以下是图片中关于USB(通用串行总线)数据传输机制和包结构的详细解释,以小白易懂的方式分点说明:

4. 循环冗余校验字段(CRC)

  • 作用:检测数据是否在传输中出错。
    • 原理:发送端生成一个“校验码”附加到包中,接收端用相同算法计算并对比,若不一致则说明数据错误。
    • 长度:根据USB速度不同,CRC可能是5位、16位或32位。
    • 类比:快递包裹的“防伪码”,收件人扫描后确认包裹是否被中途篡改。

5. 包结尾字段(EOP)

  • 作用:标记包的结束,通知接收端“数据已完整接收”。
    • 类比:信封上的邮戳,表示这封信的结束。
http://www.dtcms.com/a/109649.html

相关文章:

  • 【蓝桥杯】算法笔记2
  • 怎么让一台云IPPBX实现多家酒店相同分机号码一起使用
  • LJF-Framework 第13章 LjfAsyncManager异步任务管理
  • keep-alive缓存
  • [dp5_多状态dp] 按摩师 | 打家劫舍 II | 删除并获得点数 | 粉刷房子
  • HTTP数据传输的几个关键字Header
  • 《操作系统真象还原》第五章(1)——获取内存容量
  • Leetcode 1262 -- 动态规划
  • #window系统php-v提示错误#
  • 一周学会Pandas2 Python数据处理与分析-Pandas2简介
  • Node.js 与 MySQL:深入理解与高效实践
  • VisMin:视觉最小变化理解
  • 强化学习_Paper_1988_Learning to predict by the methods of temporal differences
  • 【Pandas】pandas DataFrame values
  • MacOS中配置完环境变量后执行source ~/.bash_profile后,只能在当前shell窗口中生效
  • 【eNSP实验】RIP协议
  • WHAT - JWT(JSON Web Token)
  • 颜色归一化操作
  • 设计心得——状态机
  • STM32单片机入门学习——第12节: [5-2]对射式红外传感器计次旋转编码器计次
  • 多模态学习(八):2022 TPAMI——U2Fusion: A Unified Unsupervised Image Fusion Network
  • MySQL数据库脱敏实战指南:从原理到企业级实现
  • torch.nn中的非线性激活介绍合集——Pytorch中的非线性激活
  • Webacy 利用 Walrus 技术构建链上风险分析决策层
  • 软考又将迎来新的改革?
  • c#和c++脚本解释器科学运算
  • 约瑟夫环的四种(数组,链表,递归,迭代)解决方案,与空间、时间复杂度分析
  • 【Linux】远程登录时,使用图形界面报错:MoTTY X11 proxy: Unsupported authorisation protocol
  • Vue 学习随笔系列二十二 —— 表格高度自适应
  • 一个完整的 HTTP/HTTPS 请求流程