usb个人总结

news2024/11/24 17:42:15
前言:

推荐快速上手资料:

《圈圈教你玩usb》讲用一个usb模块+51如何让电脑识别出一个usb设备,也介绍了不少相关的字段内容。

其他例如uac\hid相关字段怎么看的建议去官网下载文档

USB-IF官方网站:Front Page | USB-IF

USB中文网:USB中文网

这里不讨论3.0。

一、基本概念

数据脚:dm dp

电源脚:vcc gnd

usb的角色:主和从,一切数据由主发起,从响应,类似ble,即使从发数据也是主发起。

usb常见版本:低速,全速,高速分别对应于USB1.0,USB1.1,USB2.0,

1.1、插入检测机制

图片来源:USB连接电路图 - USB中文网

这里可以看到从机默认d+ d-是高,主机默认是低,接上去后主机这两个脚就是高然后主机发现设备接入就会去枚举从机。

这里实际以具体的平台和硬件为主,例如我最近用的平台方案,从机这两个引脚不接主是3.3v,接了是1.几v,通过读d+的状态寄存器来判断是否插拔。

这里这里从机的上拉还有讲究的,D+接的是fs(全速)和hs(高速),D-接的是低速。

1.2、枚举

在主机检测到从机硬件接入后就会去枚举它,这部分内容较多,随便打开一个支持usb的平台的原厂代码就能看到相关的内容,不同厂家的框架不一样,总体的内容差不多。大概的流程百度能搜到一堆。

细节的字段用usb分析仪能抓取下来,所以这里不关注数据流,controller大都是平台做好的。

1.3、常见工具

usb分析仪:这个还是整一个非常方便好用,

bus hound:这个不太行(测试私有通讯之类可以),而且我在公司的电脑买了个绿联的hub插进去后就蓝屏。

Usb devicetree viewer:枚举没异常的时候可以看到你的改动是否生效,有异常就看不到了。

二、从机日常改动总结

这里描述下平时可能会需要理解的内容,usb枚举上报的信息全手写的话工作量巨大,可以基于厂家提供的去理解再去修改定制一个能满足自己需求的。

1、枚举由主机发起,所以如果接入检测不到设备的话用分析仪一抓就知道原因(可能软件,也可能硬件)。

2、设备描述符(device desc):usb的版本,PID、VID、配置描述增加和减少符改动都会改到这里,数据包的最长长度,fs设备最长是64字节。

3、配置描述符(configuration desc):配置描述符之类的内容字段长度修改都会改到这里;usb设备是否需要供电、供电多少(认证之类可能改到这里);

4、接口描述符(interface desc):每个接口描述符有自己的接口号,每个接口下面有对应的端点,当需要增加或者修改功能的时候会改到这里,例如接口的功能类型(audio?hid?bulk?)

5、端点描述符(endpoint desc):usb功能的数据通道最小单元,最高位为方向,为1的时候代表这是一个“in”端点,否则是“out”端点,这里“in”是主机的“in”,“out”也是一样,0端点是系统用的,此外不同方向的端点为两个端点互不影响;端点的类型,例如通过中断传输,音频的会使用iso。

6、hid描述符(hid desc):如果有hid的话会有这个,描述hid的情况例如国家码,hid报表描述符的长度。

7、uac:这部分建议参考usb官方文档《Basic audio device》,有描述一个耳机设备的通路(音频源到音频输出)会有哪些内容,这对理解uac的描述符会很有帮助,下面图片来自官方文档,usb out就是usb接口的out,usb in就是usb的in。

  麦克风(外部设备声音输入到主机):

扬声器(主的声音输出到外部设备):

a.audio control interface header desc:有几个接口(输入一个输出一个)?是哪些接口号?

b.aidio control input terminal desc:描述接口,如上图里的id号和功能(例如usb out为id1,输出流数据;id3 speaker连接的feat是id2,声音通道数);

c.audio control feature unit desc:描述一个feature,这个feat两边的id是上面最后一个图的id1\id3,feat的id是3,

最后还有端点描述来描述具体的音频数据流,例如数据格式,采样率,数据宽度,一次性多少字节等等。

8、hid报表描述符(hid report desc):这个是枚举的时候有个请求单独获取的,hid支持很多种设备类型,其中有标准的设备也有其他用户自定义的,标准的例如键盘(包括键盘是否支持控制主机音量大小,音乐播放还是暂停,键值数据结构等等),鼠标(滑动,鼠标左右键或者其他按键),触摸设备等等;一个hid报表描述符需要描述很多功能的话他们之间用各自的report ID来区分,描述符描述的功能数据结构也分方向,可能是in也可能是out。

hid这部分无论是ble的hid服务还是usb的报表描述符是通用的,印象中细节上还是有些区别本人没记录,看懂一次忘记一次。总之hid这部分很难读懂,找个需求对的上的然后看懂一个然后修改出一个适合自己的比从0写一个难度小很多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1649209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AIGC绘画辅助网站

Midjourney风格样式 Midjourney Style Classifier | Andrei Kovalevs Midlibrary

系统维护启动盘 优启吧

优启吧-《优启时代系统维护盘》2025典藏版(UD/ISO)

STM32F4xx开发学习_SysTick

SysTick系统定时器 SysTick属于CM4内核外设,有关寄存器的定义和部分库函数都在core_cm4.h这个头文件中实现,可用于操作系统,提供必要的时钟节拍 SysTick简介 SysTick是一个 24 位向下定时器,属于CM4内核中的一个外设,…

Python类方法探秘:从单例模式到版本控制

引言: 在Python编程中,类方法作为一种特殊的实例方法,以其独特的魅力在众多编程范式中脱颖而出。它们不仅提供了无需实例即可调用的便捷性,还在设计模式、版本控制等方面发挥着重要作用。本文将通过几个生动的示例,带您…

八.吊打面试官系列-Tomcat优化-深入源码剖析Tomcat如何打破双亲委派

前言 上篇文章《Tomcat优化-深入Tomcat底层原理》我们从宏观上分析了一下Tomcat的顶层架构以及核心组件的执行流程。本篇文章我们从源码角度来分析Tomcat的类加载机制,且看它是如何打破JVM的ClassLoader双亲委派的 Tomcat ClassLoader 初始化 Tomcat的启动类是在…

5月7号(信息差)

🌍首次,西湖大学用蛋白质语言模型定向改造碱基编辑器,登Cell子刊 https://www.jiqizhixin.com/articles/2024-05-07-10 🎄 哈马斯宣布同意停火提议 https://finance.eastmoney.com/a/202405073067687785.html ✨ 中国将对…

【陀螺仪JY61P维特智能】通过单片机修改波特率和角度参考的方法

根据官方文档: 修改波特率 1.解锁:FF AA 69 88 B5 1.1延时200ms 2.修改波特率:FF AA 04 06 00 2.1切换已修改的波特率然后重新发送解锁和保存指令 2.2解锁:FF AA 69 88 B5 2.3延时200ms 4.保存: FF AA 00 00 00 XY轴角度参考 角度参考是以传感器当前的实际位置&…

IDEA远程连接docker服务,windows版docker desktop

1.windows上安装docker desktop docker desktop下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker 有的windows系统不支持安装docker desktop 安装完之后我们可以直接打开,可以选择不登录使用 我们用IDEA连接到docker …

python菜鸟级安装教程 -下篇(安装编辑器)

来来~接着上篇的来~ 安装好python.exe之后,我们可以根据cmd命令窗口,码代码。 这算最简单入门了~ 如果我们在安装个编辑器。是什么效果,一起体验一下吧 第一步,下载编辑器,选择官网,下载免费版本入门足…

语音识别--kNN语音指令识别

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

【LAMMPS学习】八、基础知识(5.8)LAMMPS 中热化 Drude 振荡器教程

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

TriCore TC162 Archievture Volume 笔记

说明 本文是 英飞凌 架构文档 TriCore TC162P core archiecture Volume 1 of 2 (infineon.com) 的文笔,稍作整理方便查阅,错误之处,还请指正,谢谢 :) 1. Architecture 2. General Purpose & System Register 名词列表&#…

gin-vue-blog 前后端分离项目(已经部署)

gin-vue-blog 前台: 后台: 1.数据库设计:https://blog.csdn.net/m0_73337964/article/details/138137629?spm1001.2014.3001.5501 2.RESTFUL API路由实现:https://blog.csdn.net/m0_73337964/article/details/138321631?spm1…

基于Spring Boot的家具网站设计与实现

基于Spring Boot的家具网站设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea 系统部分展示 系统前台主界面图,用户可进入家具网站可查看…

9.4.k8s的控制器资源(job控制器,cronjob控制器)

目录 一、job控制器 二、cronjob控制器 一、job控制器 job控制器就是一次性任务的pod控制器,pod完成作业后不会重启,其重启策略是:Never; 简单案例 启动一个pod,执行完成一个事件,然后pod关闭;…

抖音小店个人店和个体店有什么不同?区别问题,新手必须了解!

哈喽~我是电商月月 新手开抖音小店入驻时会发现,选择入驻形式时有三个选择,个人店,个体店和企业店 其中,个人店和个体店只差了一个字,但个人店不需要营业执照,是不是入驻时选择个人店会更好一点呢&#x…

PXE高效批量装机

一、PXE的概述 PXE是由Inter 公司开发的网络引导技术,工作在Client / Server 模式。允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。 1.1PXE优点 规模化:同时装配多台服务器 自动化:安装系统&am…

使用DependencyCheck工具检测JAR依赖包的安全漏洞

引言 Dependency-Check 是一个开源工具,用于检测软件项目中使用的第三方库和组件是否存在已知的安全漏洞。它可以帮助开发团队及时发现和解决项目中的潜在安全风险,从而提高软件的安全性。 该工具通过分析项目的依赖关系,识别其中使用的第三方库和组件,并与已知的漏洞数据…

【牛客】Tokitsukaze and Average of Substring

原题链接:登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 前缀和。 开一个int类型的前缀和数组pre[30][N](pre[i][j]表示某字符转成的数字 i 在一段区间的前缀个数。因为字母表有‘a’~z…

PE文件(四)FileBuffer-ImageBuffer

文件执行的总过程 当文件从硬盘中读入虚拟内存(FileBuffer)中时,文件数据会被原封不动的复制一份到虚拟内存中,然后进行拉伸对齐。此时虚拟内存中文件数据叫做文件印象或者内存印象,即ImageBuffer。此时ImageBuffer中…