【沁恒蓝牙mesh】CH58x USB功能开发记录(一)

本文主要介绍基于【沁恒蓝牙mesh】CH58x USB功能,结合SDK提供的代码包分析USB的基本常识

【沁恒蓝牙mesh】CH58x USB功能开发记录(一)

  • 1. USB基本常识
    • 1.1 **USB 设备类别:**
    • 1.2 **USB设备实现方法:**
    • 1.3 **CDC设备:**
    • 1.4 **USB 中的端点`endpoint` 的概念:**
  • 2. 几个USB调试助手网站
  • 3. CH582 USB
  • 4. USB接口工程解析

  • 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎
  • 📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:沁恒蓝牙mesh二次开发 🍁
  • 💬格言:写文档啊不是写文章,重要的还是直白!🔥

1. USB基本常识

USB(Universal Serial BUS,通用串行总线),主机通过VIDPID来识别不同设备,

  • VID(Vendor ID,供应商识别码),2字节
  • PID(Product ID,产品识别码),2字节
  • PVN(Product Version Number,产品版本号)

参考资料:【STM32 USB通讯协议实战】

1.1 USB 设备类别:

  • 人机交互类设备HID(Human Interface Device)
  • 通信类设备CDC(Communicate Device Class)
  • 大容量存储设备MSC(Mass Storage Class)
  • 视频类设备UVC(USB Video Class)
  • 音频类设备UAC(USB Audio Class)

1.2 USB设备实现方法:

  • 设备描述符实现:配置从机类型,方便主机加载从机对应驱动及对从机数据的识别
  • 配置描述符实现:配置设备专用的描述符,方便启用特定的设备操作和特性;配置从机端点信息,方便主机从端点读/写数据

1.3 CDC设备:

【USB设备设计】-- CDC 设备开发(虚拟串口设备)

关于CDC设备介绍可参考:【沁恒官方B站视频介绍】

CDC设备是USB协议中定义的一种通信设备子类。例如常见的 COM口UART协议,以太网口IP协议等。通过CDC协议可以将USB设备虚拟成通信设备,通过指定的传输协议和数据传输方式同USB设备进行通信。CDC设备的优点:

  • 免驱动:使用标准的USB接口和通信协议,部署方便。例如USB虚拟COM口,无需安装驱动即可使用
  • 支持多种通信协议:支持很多通信领域的通信协议,可以满足不同行业,不同场景的需求

1.4 USB 中的端点endpoint 的概念:

端点是主机与设备之间通讯数据的来源。主机与设备之间通讯时最终总会用于设备上的各个端点。

每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机靠这个地址对USB设备进行访问。在设备内部,设备会将地址分的更细,设备会分出一些端点,每个端点在设备端都会有唯一的端点号,每个端点地址对应一个方向。具体的参考: USB中的端点详细了解(转)

2. 几个USB调试助手网站

分享一个超强的HID调试助手

单片机多功能调试助手 V1.7.8 绿色免费版

3. CH582 USB

参考:【CH582 USB Device CherryUSB】

CH582f 芯片的USB引脚为 PB10 PB11,有8个端点

4. USB接口工程解析

参考资料: CH582m模拟JoyStick使用USB与电脑通信

HID类的JoyStick描述符

CompoundDev工程,配合下方的描述符能够实现①直接接电脑,在设备管理器中能够查到被电脑识别为 HID- compliant game contorller

在这里插入图片描述

描述: 以上开发板的MCU是CH571,板载没有USB转串口协议的芯片,但是将设备插到电脑的USB口,电脑缺识别为串口,名称为 USB-SERIAL CH341A,这是什么原理呢?

猜测: 带USB 功能的MCU 通过USB引脚传输数据,应用层将USB引脚的数据封装为 串口协议,这样设备插到PC端就会被识别为串口设备;

关于工程的解析以及修改,请参考博文:
【沁恒蓝牙mesh】CH58x USB功能开发记录(二)

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

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

相关文章

Vue2:组件高级(下)

Vue2:组件高级(下) Date: May 25, 2023 Sum: 自定义指令、插槽、商品列表、动态组件 目标: 自定义指令 基础概念: 概念: 内置指令:vue 官方提供了 v-for、v-model、v-if 等常用的内置指令。…

Java 编程实战:如何用 Java 编写一个简单而强大的 Tomcat

学习完了JavaWeb,为了深入了解tomcat,打算手撕tomcat搭建自己的tomcat,希望对来访小伙伴也有帮助 引言 Tomcat 是一个开源的 Web 服务器和 Servlet 容器,它可以提供动态 Web 内容的处理和交互功能。Tomcat 是用 Java 语言编写的&a…

Unity之获取用户地理位置

1.直接利用三方API获取: 1.1 利用bilibili的api 【未知稳定性】 public void Awake() {StartCoroutine(GetLocationInfoNew());}/// <summary>/// 利用bilibili的接口通过ip直接获取城市信息/// </summary>IEnumerator GetLocationInfoNew() {//UnityWebRequest …

Java【抽象类和接口】(2)【浅拷贝、深拷贝、object类】

一、Clonable 接口和深拷贝 1.clone接口的使用 注意以下几个点&#xff1a; import javax.jws.soap.SOAPBinding;class Person implements Cloneable{public String name;public int age;public Person(String name, int age) {this.name name;this.age age;}Overridepublic…

Redis探索之旅

目录 今日良言&#xff1a;有志者自有千计万计&#xff0c;无志者只感千难万难 一、简介 二、Redis的安装 三、Redis的简单使用 四、Redis相关知识点 1.缓存分类 2.五大基本数据类型使用 3.持久化 4.常见面试题 今日良言&#xff1a;有志者自有千计万计&#xff0c;无…

正运动亮相2023半导体设备材料与核心部件展示会,助力半导体产业高速高精应用

■展会名称&#xff1a; 第11届&#xff08;2023&#xff09;半导体设备材料与核心部件展示会 ■展会日期 2023年8月9日-11日 ■展馆地点 无锡太湖国际博览中心A6馆 ■展位号 A6-A361 正运动技术&#xff0c;作为国内领先的运动控制企业&#xff0c;将于2023年8月9日参加…

MySQL事务的底层实现原理

MySQL事务的作用呢&#xff0c;就是要保证数据库的可靠性、一致性、并发处理。那实现事务需要三个技术&#xff0c;分别是日志文件&#xff0c;包括redo log 和 undo log、锁技术、MVCC。 那什么是redo log呢&#xff0c;redo log是用来记录已提交事务的修改语句的&#xff0c…

源码分析——ArrayList源码+扩容机制分析

文章目录 1. ArrayList 简介1.1. Arraylist 和 Vector 的区别?1.2. Arraylist 与 LinkedList 区别? 2. ArrayList 核心源码解读3. ArrayList 扩容机制分析3.1. 先从 ArrayList 的构造函数说起3.2. 一步一步分析 ArrayList 扩容机制3.2.1. 先来看 add 方法3.2.2. 再来看看 ens…

篇十七:备忘录模式:恢复对象状态

篇十七&#xff1a;"备忘录模式&#xff1a;恢复对象状态" 开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/。 另外有2本不错的关于设计模式的资料&…

Day10 CDQ 分治

三维偏序 CDQ 分治入门题。 采用分治思想&#xff0c;对于编号在 [ l , r ] [l,r] [l,r] 中的点对&#xff0c;统计都在 [ l , m i d ] [l,mid] [l,mid] 的&#xff0c;都在 [ m i d 1 , r ] [mid1,r] [mid1,r] 的&#xff0c;再统计跨两个的。 代码 iai 统计三元组 严…

Visual Studio 2022安装教程(英文版)

文章目录 1.下载安装 1.下载 官网地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/vs/ 选择第一个社区版本&#xff1a;Community 2022 安装 1.将下载好的文件保存到桌面&#xff0c;双击点开 2.等待visual studio installer配置好 3.点击安装后会来到配件选…

搭建本地开发服务器

搭建本地开发服务器 :::warning 注意 在上一个案例的基础上添加本地开发服务器&#xff0c;请保留上个案例的代码。如需要请查看 Webpack 使用。 ::: 搭建本地开发服务器这一个环节是非常有必要的&#xff0c;我们不可能每次修改源代码就重新打包一次。这样的操作是不是太繁琐…

Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑

Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑 现在想对一个接口做性能测试&#xff0c;需要测试它多个线程并发下的调用 1.新建测试计划和线程组 略 2.新建http接口 一个完整的http接口包含请求头和请求&#xff0c;这里就需要两个组件&#xff1a;HTTP request、HT…

clickhouse功能使用

离线聚合 物化视图 clickhouse需在AggregatingMergeTree之上建立物化视图来完成聚合的效果。以小时聚合为例说明 首先创建表,此处是本地表,且没有副本 #创建表 CREATE TABLE datasets.bt_stats (`btname` String,`record` UInt64,`EventTime` DateTime

群狼调研(湖南市场调查公司):4S店神秘顾客调查注意事项

群狼调研(湖南市场调查公司)受顾客委托开展汽车汽车4S店神秘顾客调查&#xff0c;汽车4S店神秘顾客调查执行注意事项&#xff1a; 1. 保持匿名性&#xff1a;作为神秘顾客&#xff0c;确保自己的身份和目的不被店员发现。不要透露自己是进行调查的顾客。 2. 准备充分&#xf…

【iOS】RunLoop

前言-什么是RunLoop&#xff1f; 什么是RunLoop? 跑圈&#xff1f;字面上理解确实是这样的。 Apple官方文档这样解释RunLoop RunLoop是与线程息息相关的基本结构的一部分。RunLoop是一个调度任务和处理任务的事件循环。RunLoop的目的是为了在有工作的时候让线程忙起来&#…

ChatGPT实战:创业咨询,少走弯路,少踩坑

用九死一生形容创业再适合不过&#xff0c;不过一旦成功回报也很诱人&#xff0c;这也是为什么那么多人下场创业。纸上得来终觉浅&#xff0c;绝知此事要躬行&#xff0c;创过业的人都知道其中的心酸&#xff0c;而他们也建议你去创业&#xff0c;因为那真不是一般人能干的事。…

微服务详解

微服务 什么是微服务&#xff1f; 微&#xff1a;单个服务的设计&#xff0c;所有参与人从设计、开发、测试、运维所有人加起来只需要两个披萨就够了 服务&#xff1a;一定要区别于系统&#xff0c;服务一个或者一组相对较小且独立的功能单元&#xff0c;是用户可以感知的最…

力扣17(电话号码中的字符组合)

题目表述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例1 输入&#xff1a;digits "23" 输出&#xff1…

SpringBoot集成百度人脸识别实现登陆注册功能Demo(二)

前言 上一篇SpringBoot集成百度人脸demo中我使用的是调用本机摄像头完成人脸注册&#xff0c;本次demo根据业务需求的不同我采用文件上传的方式实现人脸注册。 效果演示 首页 注册 后端响应数据&#xff1a; 登录 后端响应数据&#xff1a; 项目结构 后端代码实现 1、Bai…