ESP32 历程解析

news2025/1/11 16:59:54

最近在用esp32做项目,记录一下 使用的esp32 的官方历程的作用

一、USB历程

 1.host 

 1) cdc_acm_host

       这个历程可以用来驱动 usb的虚拟串口从机   cdc__vcp 和 cdc_acm 方式虚拟的串口需要根据自己的设备 修改 VID 和 PID         

        /*cdc-acm*/

#define EXAMPLE_USB_DEVICE_VID      (0x28E9) //0x303A

 #define EXAMPLE_USB_DEVICE_PID      (0X018A) //0x4001 0x303A:0x4001 (TinyUSB CDC device)

/*cdc-vcp*/

#define EXAMPLE_USB_DEVICE_VID      (0x0483) //0x303A

#define EXAMPLE_USB_DEVICE_PID      (0x5740) //0x4001 0x303A:0x4001 (TinyUSB CDC device)

 2)cdc_acm_vcp

这个历程是用来配置 such as CP210x, FTDI FT23x or CH34x devices. 的usb转串口的芯片

二、蓝牙协议

此部分参考链接:ESP32-C3 学习测试 蓝牙 篇(一、认识 ESP-IDF 的蓝牙框架、简单的了解蓝牙协议栈) - 知乎 (zhihu.com)

第一部分 Bluedroid 堆栈中的ble 部分:

在这里插入图片描述

我们前面说过,GATT用来规范 attribute 中的数据内容,并运用 group(分组)的概念对 attribute 进行分类管理。为主从设备交互数据提供 Profile、Service、Characteristic 等概念的抽象、管理。所以在这个示例程序中,关于GATT的示例是非常多的。

除此之外,包括我们经常能见到的蓝牙串口透传,使用的就是 SPP协议。

蓝牙Ibeacon 模式,是作为信标用于蓝牙定位的一种协议。

鼠标键盘,其他外设HID设备的延时,也提供了对应的例子。

第二部分 ble_50 部分:

在这里插入图片描述

对于示例中的这部分,居然没有说明,这里也就不过多解释。

第三部分 经典蓝牙 classic_bt 部分:

在这里插入图片描述

我们前面介绍过,经典蓝牙与蓝牙ble的应用领域的时候介绍过:经典蓝牙的应用领域有蓝牙耳机、蓝牙音箱,那么在ESP-IDF 经典蓝牙部分,这两个部分的示例代码都提供了!

还有SPP协议,蓝牙串口相关的,接收端,发送端,都单独的有自己的使用示例;

在最后可以使用hfp_ag 和 hfp_hf 示例与音频网关(AG)设备(例如智能手机)通信。

第四部分 coex 部分:

在这里插入图片描述

经典蓝牙和BLE共存,在前面我们提到过,如果把 BR/EDR Controller 和 LE Controller设 计到一个Controller,就能实现双模蓝牙,我们也说过ESP32-C3 是有两种类型的 Controller 。

2.2 基于 ESP-BLE-MESH的示例

上面介绍完成,到了esp_ble_mesh部分,我们还是一个一个看下去:

在这里插入图片描述

乐鑫的IDF中,居然就直接有和阿里精灵连接的例子。

2.3 基于 hci 的示例

在这里插入图片描述

前面介绍过,HCI主要用于两个MCU实现BLE协议栈的场合,规范两者之间的通讯协议和命令。 Controller 和 HCI相关的东西,现在不太好说明!

2.4 基于 Apache NimBLE的示例

Apache NimBLE 的堆栈仅支持 BLE,所以这部分也是和BLE有关的示例:

在这里插入图片描述

对于这部分的说明,ESP-IDF给出的 readme 都是比较详细的,或许是因为在代码占用和运行时,NimBLE 对内存的要求较低?

2.5 其他和蓝牙有关的示例

在这里插入图片描述

The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。 蓝牙HID 是属于蓝牙协议里面的一个profile(应用层)。

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

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

相关文章

非计算机科班如何顺利转码进入计算机领域?

文章目录 如何规划才能实现转码?计算机岗位发展前景?现阶段转码 总结 🎉欢迎来到Java学习路线专栏~探索非计算机科班如何顺利转码进入计算机领域 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&#x1f3…

8.16日 算法做题【4道题】

8. 分行从上往下打印二叉树 ( 利用两个队列遍历 ) 利用数组个数 进行遍历 原题链接 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(N…

工业设备状态监测如何实现从技术试点到规模实施?

工业企业正逐步引入基于人工智能的持续监控设备健康状况系统,这对工业维护领域带来了颠覆性的影响。然而,与任何新技术一样,要实现其最大价值,需要克服一些挑战。在数字化转型中,成功实现工业设备状态监测的从技术试点…

企业什么时候需要PMO?PMO的作用和职责是什么?

在当今复杂的商业环境中,企业依靠高效的项目管理来推动成功和实现战略目标。这就是**项目管理办公室**(PMO)发挥作用的地方。那么,PMO在企业中的作用和职责究竟是什么?本文就这个问题来做个探讨。 PMO (项…

第 3 章 稀疏数组和队列(1)

3.1 稀疏 sparsearray 数组 3.1.1先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能。 分析问题: 因为该二维数组的很多值是默认值 0.因此记录了很多没有意义的数据.->稀疏数组 3.1.2基本介绍 当一个数组中大部分元素为 0,或者为同…

python进阶之符号计算概述SymPy

一、概述 1.1SymPy简介 SymPy 是一个由 Python 编写的符号计算库,它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。它完全由 Python 写成,不依赖于外部库。SymPy 支持符号计算、高精度计算、模式匹配、绘图、解…

搭建Excel服务器

1、下载Excel服务器 下载地址 2、解压文件 3、打开服务器 4、服务器运行信息 5、连接测试 打开客户端 6、登录到服务器 默认账号 密码 admin 3 修改文件保存路径(服务器端点击配置) 7、客户端整体界面 8、配置权限 9、设计模板 10、其他用户登录就可以填写信息 11、用户&#…

JVM基础了解

JVM 是java虚拟机。 作用:运行并管理java源码文件锁生成的Class文件;在不同的操作系统上安装不同的JVM,从而实现了跨平台的保证。一般在安装完JDK或者JRE之后,其中就已经内置了JVM,只需要将Class文件交给JVM即可 写好的…

【MCUXpresso for VS Code】-- 工程搭建后期维护

​ 基于上一篇文章【MCUXpresso for VS Code】 – 基于VSCode搭建nxp mcu工程_ 本章将介绍工程搭建完成后,后期维护问题。 1.MCUXpresso 插件窗口 该窗口,通常用在编译调试,工程导入导出等场合。编译和调试除了点击图标外,也可以…

python简单计算器

附赠源码: import PySimpleGUI as sg import relistsNumber [[AC, (, ), %],[1, 2, 3, ],[4, 5, 6, -],[7, 8, 9, x],[0, ., , ], ]layout [[sg.Text(font(黑体, 10), key-msg-)],[sg.Multiline(,key-show-,s(22, 10),font(黑体, 14),border_width1,expand_xTrue…

Java进阶(3)——手动实现ArrayList 源码的初步理解分析 数组插入数据和删除数据的问题

目录 引出手动实现ArrayList定义接口MyList<T>写ArrayList的实现类增加元素删除元素 写测试类进行测试数组插入数据? 总结 引出 1.ArrayList的结构分析&#xff0c;可迭代接口&#xff0c;是List的实现&#xff1b; 2.数组增加元素和删除元素的分析&#xff0c;何时扩容…

Spring三级缓存解决循环依赖问题

一、Bean对象的创建过程 一般的Bean对象如下&#xff1a;首先通过构造器构造一个普通对象&#xff0c;然后进行依赖注入&#xff0c;再进行一些初始化操作&#xff0c;初始化后根据AOP生成代理对象&#xff0c;最后再放入单例池map&#xff0c;这个单例池map就是一级缓存。 …

Data Abstract for .NET and Delphi Crack

Data Abstract for .NET and Delphi Crack .NET和Delphi的数据摘要是一套或RAD工具&#xff0c;用于在.NET、Delphi和Mono中编写多层解决方案。NET和Delphi的数据摘要是一个套件&#xff0c;包括RemObjects.NET和Delphi版本的数据摘要。RemObjects Data Abstract允许您创建访问…

DHCP Server

简介 动态主机配置协议 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09; 是 RFC 1541&#xff08;已被 RFC 2131 取代&#xff09;定义的标准协议&#xff0c;该协议允许服务器向客户端动态分配 IP 地址和配置信息。 使用UDP协…

C++MFC 串口通信 上位机

本节介绍 在工业控制中&#xff0c;工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行&#xff0c;应用广泛。 一般情况下&#xff0c;工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的&#xff0c;只能由作为主…

软件测试知识库+1,5款顶级自动化测试工具推荐和使用分析

“工欲善其事必先利其器”&#xff0c;在自动化测试领域&#xff0c;自动化测试工具的核心地位不容置疑的。目前市面上有很多可以支持接口测试的工具&#xff0c;在网上随便一搜就可以出来很多&#xff0c;利用自动化测试工具进行接口测试&#xff0c;可以很好的提高测试效率&a…

Web3创新者之夜,与其他开发者一同畅谈波卡生态

Token2049在即&#xff0c;许多开发者都将在9月中齐聚新加坡&#xff0c;一同讨论区块链生态发展及未来。届时将会有超过1万名与会者&#xff0c;并有超过300个赞助商和项目协助支持本次大会。波卡作为跨链互操作性的龙头生态也将参与至本次盛会之中。 为了让波卡社区的成员、贡…

uniapp微信小程序消息订阅快速上手

一、微信公众平台小程序开通消息订阅并设置模板 这边的模板id和详细内容后续前后端需要使用 二、uniapp前端 需要是一个button触发 js&#xff1a; wx.getSetting({success(res){console.log(res)if(res.authSetting[scope.subscribeMessage]){// 业务逻辑}else{uni.request…

Python+Selenium自动化测试环境搭建步骤(selenium环境搭建)

一、自动化简介 1.自动化测试概念&#xff1a; 是把以人为驱动的测试转化为机器执行的一种过程&#xff0c;它是一种以程序测试程序的过程 2.自动化测试分类&#xff1a; 一般IT上所说的自动化测试是指功能自动化测试&#xff0c;通过编码的方式用一段程序来测试一个软件的功…

Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 持续更新中(预计8.18完成)~

Ctfshow 命令执行 web29 pregmatch是正则匹配函数&#xff0c;匹配是否包含flag&#xff0c;if(!preg_match("/flag/i", $c))&#xff0c;/i忽略大小写 可以利用system来间接执行系统命令 flag采用f*绕过&#xff0c;或者mv fl?g.php 1.txt修改文件名&#xff0c…