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

USB学习【6】USB传输错误的处理

1.前言

我们从物理层到信号层,到协议层,他们分别在不同的层面完成不同的功能。
总结一下:
物理层实现了高低电平的检测。
信号层更进一步,通过一些方法,实现了二进制的传输。
协议层,因为可以二进制传输了,就自然可以实现一些协议方面的事情了。
但是我们会发现,信号层可能会发生异常,比如干扰导致信号错误,我们通过技术手段可以检测出来,但是应该怎么处理呢?
协议层也会出现异常,比如我数据包发过去了,对方没有空接收等等,那又应该怎么处理呢?

PID和CRC校验异常

在信号传输层,也只能出现这两种错误,协议规定怎么处理呢?
PID错误​:静默丢弃,依赖超时重传;
​CRC错误​:按传输类型选择重传或丢弃;
说人话就是,接收端发现错误,直接忽视即可!

协议层异常

协议层的异常,一部分是因为信号传输层的数据错误忽视掉引起的,一部分是设备端的状态引起的,
比如上面讲的PID和CRC校验错误,主机发送给设备,主机发现发送了没反应,大概率是传输出问题了,我等等看,重发一下,重复几次发现还是不行,可能你的U盘就提示传输错误了。
如果设备发送给主机握手包发生校验错误,主机直接忽略,当做没有。
总结一下:我们在协议层的角度来看,我们发出去的数据是有可能丢失的,我们接收到的数据也有一些是垃圾数据,主机的策略是,只要我发出的数据没有有效回复,我就重新发送,错误的东西直接忽略(当然和各种传输方式有关系,就看有没有握手包了)
站在设备端的角度来看更简单了,收到有效数据我回复,没有效扔到。
这个逻辑就非常简单了,主机完全占据主动,设备配合就好了,跟着主机的节奏来。

http://www.xdnf.cn/news/5499.html

相关文章:

  • Typescript 源码核心流程
  • 【C语言练习】035. 编写结构体的函数
  • MySQL视图深度解析:从基础语法到高级应用
  • Mask-aware Pixel-Shuffle Down-Sampling (MPD) 下采样
  • vector 常见用法及模拟
  • 算法题(144):跳石头
  • 游戏逆向开发全阶段电子资料分享 – 从入门到精通实战教程
  • 软件架构师知识点总结
  • nfs挂载
  • python实现用户登录
  • 系统架构设计(四):架构风格总结
  • 常见的 DCGM 设备级别指标及其含义
  • 2024睿抗编程赛国赛-题解
  • 作业...
  • 【C/C++】无符号调试:GDB解栈实战指南
  • nrf52832 ble_app_templete_s132及nrf5_sdk packs下载安装
  • 使用FastAPI和React以及MongoDB构建全栈Web应用07 FastAPI实现经典三层架构
  • 2025低空经济发展趋势
  • SQL:SELF JOIN(自连接)与CROSS JOIN(交叉连接)
  • Java从入门到精通 - 数组
  • 排队论基础一:马尔可夫排队模型
  • 力扣刷题Day 46:搜索二维矩阵 II(240)
  • 怎样选择成长股 读书笔记(一)
  • 【RP2350】香瓜树莓派RP2350之Debug仿真报错的处理
  • 详解 Java 并发编程 synchronized 关键字
  • Dockerfile 完全指南:从入门到最佳实践
  • 冰箱拆解学习
  • 中北大学动漫创新实验室问题汇总答疑
  • 2025年PMP 学习九 -第7章 项目成本管理
  • 并发笔记-给数据上锁(二)