ESP32的蓝牙架构你真的了解吗?来,蓝牙博主给你安排~
零. 声明
本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:
第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!
第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线做一个介绍,让大家知其然又知其所以然!
第三篇:目前比较火热的GUI LVGL介绍,主要会设计LVGL7.1,LVGL8的移植介绍,并且也会介绍各个组件,知道原理后,最后,我们会推出一款组态软件来构建我们的GUI,来提升我们的效率!
第四篇:ESP32-蓝牙,熟悉我的,应该都知道,我即使从事蓝牙协议栈的开发的,所以这个是我们独有的优势,在这一篇章,我们会提供不仅仅是蓝牙应用方法的知识,也会应用结合蓝牙底层协议栈的理论,让你彻底从上到下打通蓝牙任督二脉!
第五篇:Wi-Fi介绍,熟悉我的,应该也知道,我们也做过一款sdio wifi的驱动教程板子,所以在wifi这方面我们也是有独有的优势,在这一篇章,我们同样不仅仅提供Wi-Fi应用方面的知识,也会结合底层理论,让你对Wi-Fi有一个清晰的认知!
另外,我们的教程包括但是不局限于以上篇章,为了给你一个更好的导航,以下信息尤其重要,请详细查看!!
------------------------------------------------------------------------------------------------------------------------------------------
购买开发板(点击我)
文档目录(点击我)
Github代码仓库(点击我)
蓝牙交流扣扣群:539357317
微信公众号↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
------------------------------------------------------------------------------------------------------------------------------------------
在前面的章节我们已经看过了市面的蓝牙产品架构以及蓝牙芯片的架构。
我们来看下ESP32是怎样的架构?
一.蓝⽛应⽤结构
蓝⽛是⼀种短距通信系统,其关键特性包括鲁棒性、低功耗、低成本等。蓝⽛系统分为两种不同的技术:经典蓝⽛(Classic Bluetooth) 和蓝⽛低功耗(Bluetooth Low Energy)。
ESP32 ⽀持双模蓝⽛,即同时⽀持经典蓝⽛和蓝⽛低功耗。
从整体结构上,蓝⽛可分为控制器(Controller) 和主机(Host) 两⼤部分:控制器包括了PHY、Baseband、Link Controller、Link Manager、Device Manager、HCI 等模块,⽤于硬件接⼝管理、链路管理等等;主机则包括了L2CAP、SMP、SDP、ATT、GATT、GAP 以及各种规范,构建了向应⽤层提供接⼝的基础,⽅便应⽤层对蓝⽛系统的访问。主机可以与控制器运⾏在同⼀个宿主上,也可以分布在不同的宿主上。ESP32 可以⽀持上述两种⽅式,下图罗列了⼏种典型应⽤结构:
这个架构很简单,其实你们好好看我之前的前面两篇文章,很容易能够理解透彻,他一共分为3个场景,总结如下:
场景⼀(ESP-IDF 默认):在ESP32 的系统上,选择BLUEDROID(最新的还支持Nimble) 为蓝⽛主机,并通过VHCI(软件实现的虚拟HCI 接⼝)接⼝,访问控制器。此场景下,BLUEDROID 和控制器都运⾏在同⼀宿主上(即ESP32 芯⽚),不需要额外连接运⾏蓝⽛主机的PC 或其它主机设备。
场景⼆:在ESP32 上运⾏控制器(此时设备将单纯作为蓝⽛控制器使⽤),外接⼀个运⾏蓝⽛主机的设备(如运⾏BlueZ 的Linux PC、运⾏BLUEDROID 的Android 等),当然还可以在单片机下跑Host(比如我自己写的协议栈),此场景下,控制器和主机运⾏在不同宿主上,与⼿机、PAD、PC 的使⽤⽅式⽐较类似。
场景三:此场景与场景⼆类似,特别之处在于,在BQB(或其它认证)的控制器测试下,可以将ESP32 作为DUT,⽤UART 作为IO 接⼝,接上认证测试的PC 机,即可完成认证。
我们看到这个架构,就看到了无限可能性,可玩性比较高,比如:
1)在场景一中可以通过默认的Bluedroid作为Host,来学习下整个蓝牙Host,也顺便看下Bluedroid
2)在场景一中可以通过默认的nimble作为Host,来学习下整个蓝牙Host,也顺便看下nimble
3)在场景二中,我们可以用第三方协议栈来作为Host,ESP32作为单Controller,来扩展各个你想要的profile功能
4)在场景一中把用自己的协议栈或者第三方协议栈替换掉原有的Host
但是可惜的是:无论怎样的架构,你都玩不了bluetooth controller,因为他是闭源的,并且技术参考手机也不会开放rf章节,所以这点比较可以,不像nrf那样可玩性更高·,当时更高的可玩性意味着复杂度更高,所以不要好高骛远,踏踏实实先学好Host吧!!
二.蓝牙menuconfig
1.整个蓝牙的开关
2.Bluetooth controller的menuconfig
2.1 controller mode
也就是bluetooth controller的模式,配置地方如下图:
一共有三种模式:
BLE only:controller仅仅有BLE功能,也就是低功耗蓝牙功能
BR/EDR only:controller仅仅有BR/EDR功能,也就是传统蓝牙功能
Bluetooth Dual Mode:controller支持双模蓝牙功能。
2.2 BLE最大连接数
配置如下,每增加一个连接,就会用到1KB DRAM
2.3 BLE controller跑在哪个核
分别可以跑在core 0或者core 1中
2.4 HCI接口选择
可供选择有两个:
一个是VHCI(也就是第一小节的场景一),也就是说Host跟Controller都跑在ESP32中。
一个是UART H4(也就是第一小节的场景二),也就是controller跑在ESP32中,Host跑在额外的主控中
3.Bluetooth Host的menuconfig
选择是Bluedroid还是nimble的地方
后续我们再根据蓝牙每个功能我们再一一介绍吧!!
ESP32的蓝牙架构你真的了解吗?来,蓝牙博主给你安排~相关推荐
- 三种蓝牙架构实现方案(蓝牙协议栈方案)
蓝牙架构实现方案有哪几种?我们一般把整个蓝牙实现方案叫做蓝牙协议栈,因此这个问题也可以这么阐述:蓝牙协议栈有哪些具体的架构方案?在蓝牙协议栈中,host是什么?controller是什么?HCI又是什 ...
- 蓝牙学习(二)-- 三种蓝牙架构实现方案(蓝牙协议栈方案)
蓝牙架构实现方案有哪几种?我们一般把整个蓝牙实现方案叫做蓝牙协议栈,因此这个问题也可以这么阐述:蓝牙协议栈有哪些具体的架构方案?在蓝牙协议栈中,host是什么?controller是什么?HCI又是 ...
- 3种蓝牙架构实现方案(蓝牙协议栈方案)
导言 不同的蓝牙架构可以用在不同的场景中.从而协议帧的架构方案也会不同. 转载自:https://www.cnblogs.com/schips/p/12293141.html <三种蓝牙架构实现 ...
- esp32系列(5):esp32 蓝牙架构学习
目录 1 ESP32 蓝牙架构学习 1.1 蓝牙 1.1.1 HCI 接口选择 1.1.2 蓝牙运行环境 1.1.3 框架 1.1.3.1 控制器 1.1.3.2 BLUEDROID 1.2 经典蓝牙 ...
- esp32与android蓝牙,ESP32蓝牙架构(官方)_esp32蓝牙,esp32如何连接手机蓝牙
ESP32 蓝牙开发资料,用于了解ESP32内部的蓝牙实现. 本⼿册为 ESP32 的蓝⽛架构简介,主要分三个章节介绍了蓝⽛.经典蓝⽛和蓝⽛低功耗 ⽅⾯的整体架构.注意,本⼿册仅针对 ESP-IDF ...
- 一文让你彻底了解市面蓝牙架构,无忧蓝牙产品选型
一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍. 第二篇:Transp ...
- 03-iOS蓝牙架构搭建
蓝牙架构的搭建 前言:笔者认为,如果只是单纯的传授大家代码怎么敲,那么大家很有可能在实际开发中难以运用.刚好本人曾经参与过多款智能硬件开发的架构搭建,本小节本人就现场带领大家开发出一个通用的蓝牙工具类 ...
- 蓝牙架构(4)—— 2 蓝牙系统架构 (2.0 核心系统架构)
Vol 1架构和术语概述 Part A 2 蓝牙系统架构 Agenda: 2.0 核心系统架构. 2.0.1 蓝牙BR/EDR最小系统. 2.0.3 蓝牙BR/EDR/LE最小系统. 2.0.4 蓝牙 ...
- android底层 考试 华清,Android开发架构你真的了解吗—华清创客学院
原标题:Android开发架构你真的了解吗-华清创客学院 华清创客学院讲师:我在网上翻过很多关于架构的文章,android也好,iOS也好,谈的更多的都是对工程结构的划分,涉及架构的部分非常少. 很多 ...
最新文章
- Spring Boot 配置文件密码加密方法
- c/c++中sleep()函数毫秒级的实现
- Spring : Spring 事务控制 设置手动回滚 TransactionAspectSupport
- mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
- solidworks工程图模板与图纸格式的区别_教你DWG如何导入为图纸格式
- CSDN前1000名博主
- 数据库技术-计算机三级考试介绍
- Ueditor编辑器修改字体和字号?
- 引用nbsp;TDA2030功放电路图
- JAVA全栈工程师学习线路
- win10u盘一直正在计算机,Windows10未插入U盘却一直显示的解决方法
- tomcat发布web项目为什么页面图片显示不出来
- Ubuntu下配置FreeRadius+L2TP+MySQL,实现限制用户流量和登录人数
- 坚持整洁亦或拥抱混乱——新书《混乱: 改变我们生活的无序力量》解读
- win10家庭版系统升级
- 泰安链底层系统设计、核心优势、技术实现
- 即将迎来M2的 MacBook Pro升级款 M2 Pro版本MacBook Pro或将于2023年3月发布
- 让你欲罢不能的十部电影推荐!
- webclient 基础连接已经关闭: 发送时发生错误。
- 攻克论文写作系列之1:怎样构建有条理的学术论文?