技术标签: 驱动程序 linux 匠心之作 | 蓝牙开发详解 驱动开发 mcu iot
【所有文章汇总】
蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4GHz ISM
(即工业、科学、医学)频段,使用IEEE802.11
协议。
自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0
,到Bluetooth V5.2
,经历了近9个版本的修订后,发展为当前的状况。
“蓝牙”的形成背景是这样的:
1998 年 5 月,爱立信、诺基亚、东芝、 IBM和英特尔公司等五家著名厂商, 在联合开展短程无线通信技术的标准化活动时提出了蓝牙技术,其宗旨是提供一种短距离、 低成本的无线传输应用技术。
芯片霸主 Intel 公司负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发, IBM 和东芝负责笔记本电脑接口规格的开发。
1999 年下半年,著名的业界巨头微软、摩托罗拉、三星、朗讯与蓝牙特别小组的五家公司共同发起成立了蓝牙技术推广组织,从而在全球范围内掀起了一股“蓝牙”热潮。
全球业界即将开发一大批蓝牙技术的应用产品, 使蓝牙技术呈现出极其广阔的市场前景,并预示着 21 世纪初将迎来波澜壮阔的全球无线通信浪潮。
BLE(Bluetooth Low Energy)
低功耗功能
蓝牙协议包括两种技术:BR:Basic Rate
和LE:Low Energy
。这两种技术都包括搜索(discovery)
管理、连接(connection)
管理等机制,但它们是相互独立的,不能互通的技术!
厂商如果只实现了一种,那么只能与同样实现该技术的设备互通。
如果厂商要确保能和所有的蓝牙设备互通,那么就只能同时实现两种技术,而不去管是否真的需要。
BR:Basic Rate
是正宗的蓝牙技术,可以包括**可选(optional)的EDR(Enhanced Data Rate)
技术,以及交替使用的(Alternate)**的MAC(Media Access Control)
层和PHY层扩展(简称AMP(Alternate MAC and PHY layer extension)
)。
BR
:最早期的蓝牙技术,速度只能达到721.2Kbps
,在那个年代,已为高大上了。EDR
:随着技术的提升,使用EDR
技术的蓝牙,理论速率可以达到2.1Mbps
。AMP
:使用AMP
技术的蓝牙,理论速率可以达到54Mbps
。
AMP
的Alternate交替使用
体现在:由于蓝牙自身的物理层和AMP技术差异太明显,BR/EDR
和AMP
是不能同时使用的。简单的说,就是:
BR
和EDR
是可以同时存在的,但BR/EDR
和AMP
只能二选一
上面所讲的BR技术的进化路线,就是传输速率的加快、加快、再加快。
但能量是守恒的,你想传的更快,代价就是消耗更多的能量。而有很多的应用场景,并不关心传输速率,反而非常关心功耗。
这就是
Bluetooth LE
(称作蓝牙低功耗)产生的背景。
从它的英文名字上就可以看出它是一种低功耗蓝牙技术,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。
低功耗蓝牙与经典蓝牙使用相同的2.4GHz
无线电频率,因此双模设备可以共享同一个天线。低功耗蓝牙使用的调制系统更简单。
LE
技术相比BR
技术,差异非常大,或者说就是两种不同的技术,凑巧都加一个“蓝牙”的前缀而已。
目前BLE
主要广泛应用于IoT产品领域。
市面上,大致有几种蓝牙架构:
一般是半导体厂商半开源协议栈,把开发的蓝牙协议栈直接烧写到蓝牙芯片中,(比如CSR BC4/5,CSR8670,CSR8675,TI CC2540,NRF51xxx,NRF52xxx,乐鑫ESP32等等),架构如下:
此类芯片一般可以直接做为MCU用,这类产品一般用于消费类电子,集成度很高,调调部参数可以直接使用,常见的有蓝牙耳机等产品。
在集成好的蓝牙芯片基础上,通过特定的接口(UART居多),发送自定义的command
来达到想要的功能。比如发送0x01代表搜索周围设备…
此部分的应用,将蓝牙作为一个外设使用,用于远程通信。
例如网上卖的一些蓝牙串口。
这种应用算是蓝牙最复杂的应用,客户需要使用蓝牙的场景有很多,牵涉到的蓝牙协议也有很多,需要将Host
与Controller
分开,集成更多的蓝牙协议,比如蓝牙电话(HFP),蓝牙音频(A2DP),蓝牙音乐控制(AVRCP),蓝牙电话本(PBAP),蓝牙短信(MAP)等。
其中Transport
是一个协议,H2
就是在USB
的基础上的协议,H4,H5,BCSP
是UART基础上的协议,当然还有SDIO
。
此部分应用,将定制蓝牙的各种服务,实现蓝牙多功能需求,
大概列举了以下几种,帮助理解:
1)手机 -> 手机的蓝牙复杂应用,注定要用第3种方案,也就是蓝牙协议栈(host)在主芯片中,蓝牙芯片为HCI架构的
2)蓝牙音响,蓝牙耳机 -> 此种应用一般用单芯片方案就能hold住,比如CSR8670/8675/杰理蓝牙等,好处在于开发便捷
3)蓝牙手表 -> 手表要看功能复杂性,如果仅仅有时间显示,传感器交互,蓝牙,那么可以选择单芯片方案(也就是方案1),如果有网络等比较复杂的功能就要使用MCU+蓝牙芯片方案(也就是方案3)了
4)蓝牙手环,蓝牙心率带等 -> 基本上是单芯片方案
[1]:蓝牙官网:https://www.bluetooth.com/
[2]:https://blog.csdn.net/XiaoXiaoPengBo/article/details/107466841
[3]:https://zhuanlan.zhihu.com/p/43516534
文章浏览阅读6.1k次。之前项目中有上传图片视频等资源的功能,都是把资源上传到解决方案的目录下,如果越来越多站的空间也越来越大,实在不可取。后来用到了NAS这样一个东西,一个网络存储器,感觉像一个云盘的实体。把所有的资源放在NAS中,方便很多。 1、NAS NAS(Network Attached Storage)网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因_nas文件 添加到iis虚拟目录
文章浏览阅读10w+次,点赞116次,收藏619次。超详细Eclipse安装教程_eclipse安装教程
文章浏览阅读1.1w次,点赞9次,收藏72次。Json::Value fcgiRetData;...//获取到fcgiRetData数据Json::StyledWriter styledWriter;string response = styledWriter.write(fcgiRetData);//将fcgiRetData的json数据格式化转载:C++解析JSON格式数据1:封装JSON数据为stringstd::string DataToJson(){ Json::FastWriter writerinfo; J_c++解析json
文章浏览阅读334次,点赞5次,收藏7次。背景:为了响应公司三级等保问题的整改要求,我们需要对suse12 SP5系统的服务器进行登录失败处理功能的配置。具体方法是在/etc/pam.d/common-auth文件中添加相关参数策略,以便在用户连续登录失败一定次数后,账户能够自动锁定一段时间。配置内容如下:auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 e...
文章浏览阅读259次。在Realsense-ROS节点的Launch文件夹中,编辑rs_camera.launch文件,将下列三个参数项改成true。进入pyrealsense2-2.48.0.3381-cp37-cp37m-win_amd64.whl所在的文件夹,然后输入。当出现“RealSense Node Is Up!pip安装pyrealsense2的时候,通过下面命令难以安装成功。连接摄像头建立python文件。,若输入如下图所示,即表示成功。1.1 注册 key。若如下图所示即表示成功。3.3 设置环境变量。_d435i ros
文章浏览阅读6.2k次。一、背景介绍Java的流式输入输出建立在4个抽象类的基础上:InputStream,OutputStream,Reader和Writer。它们用来创建具体的流式子类。InputStream和OutputStream类被设计为字节类,而Reader和Writer被设计为字符流类。本文只是讲字节流类。字节流中的两个顶层类为:InputStream(输入字节流)和OutputStream(输出字节流). 其下有两个子类FileInputStream(文件输入流)和FileOutputStream(文件输._inputstream写入outputstream
文章浏览阅读351次。在index.html文件中先引入需要的脚本。创建一个摄像机组件(复制粘贴直接可用)_vue3 海康 mousedownptzcontrol(iptzindex)
文章浏览阅读262次,点赞5次,收藏4次。前端面试题汇总前端面试题是我面试过程中遇到的面试题,每一次面试后我都会复盘总结。
文章浏览阅读699次,点赞7次,收藏19次。对于用户请求的URL参数,首先服务器端会对其进行DNS解析,然后对于DNS服务器返回的IP地址进行判断,如果在黑名单中,就pass过滤。DNS(Domain Name Service)计算机域名服务器,在Internet上域名与IP地址之间是一一对应的,一个域名对应一个IP,例如:www.baidu.com就是域名,127.0.0.1就是IP,域名方便我们去记忆,但是在机器之间,它们只能互相认识IP地址,它们之间的转换工作称为域名解析,而域名解析需要由专门的域名解析服务器来完成,这就是DNS域名服务器。
文章浏览阅读802次,点赞7次,收藏17次。内容:1. JavaScript: 1. ECMAScript: 2. BOM: 3. DOM: 1. 事件DOM简单学习:为了满足案例要求* 功能:控制html文档的内容* 获取页面标签(元素)对象:Element * document.getElementById("id值"):通过元素的id获取元素对象* 操作Element对象: 1. 修改属性值: 1. 明确获取的对象是哪一个? 2. 查看API文档,找其中有哪些属性可以设置 2. 修改标签体内容: * 属_一小时学习 javascript
文章浏览阅读504次。神、上帝和老天爷 (错位排列)Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionHDU 2006'10 ACM contest的颁奖晚会隆重开始了! 为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽_du 2006'10 acm contest的颁奖晚会隆重开始了!为了活跃气氛,组织者举行了一个别开
文章浏览阅读1.7k次。MatlabMatlab图像的数学形态学处理(实验源码+截图),图片可以更换,记得先把图片所在文件夹导入matlab中哦,否则matlab在没有绝对路径的情况下会找不到图片,报错哦_matlab实现图像的处理以及用按钮实现源代码