最近在用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 。
上面介绍完成,到了esp_ble_mesh部分,我们还是一个一个看下去:
在这里插入图片描述
乐鑫的IDF中,居然就直接有和阿里精灵连接的例子。
在这里插入图片描述
前面介绍过,HCI主要用于两个MCU实现BLE协议栈的场合,规范两者之间的通讯协议和命令。 Controller 和 HCI相关的东西,现在不太好说明!
Apache NimBLE 的堆栈仅支持 BLE,所以这部分也是和BLE有关的示例:
在这里插入图片描述
对于这部分的说明,ESP-IDF给出的 readme 都是比较详细的,或许是因为在代码占用和运行时,NimBLE 对内存的要求较低?
在这里插入图片描述
The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。 蓝牙HID 是属于蓝牙协议里面的一个profile(应用层)。