之前接到公司的新项目,匆匆忙地开始了蓝牙的学习,刚开始学,买了韦东山老师的蓝牙课程,和一套NRF51822的开发板(主要馋着它上面的教程),从理论+实践赶快上手(一开始也是不清楚,误打误撞有了头绪);
我是打算分享一下,这一个月来,学习成果(很多都是根据韦老师的课程),希望给一些刚接触的人一些参考,不足之处,欢迎指出,共同讨论,共同进步;
蓝牙主要有7个协议层组成,有LL层(链路管理)、HCI(主机控制器接口)、L2CAP(逻辑链路通道适配协议)、ATT(属性)、SM(安全管理)、GATT(通用属性)、GAP(通用可访问规范)
按照韦老师的分析,不同的层次可以用医院内部与其他医院传快递交流的例子理解
大堂(GAP): 按指定流程确定科室、挂号 (发现、连接)
医务室(GATT): 组合检查结果, 给出诊疗意见 (提供服务)
检验室(ATT): 提供检查结果, (提供属性)
收发室(L2CAP): 接收或派发物品, 这些物品可能是工作相关, 也可能是私人物品 (各种通道 channel)
快递公司驻点(LL): 贴快递单 (访问地址)
快递员(PHY): 送货、收货 (传输)
自己的总结:
韦老师介绍协议栈的参考文章:
协议栈介绍:http://www.wowotech.net/bluetooth/ble_stack_overview.html
开源BTStack协议栈:http://bluekitchen-gmbh.com/btstack/ports/existing_ports/#sec:windows-winusbPort
LL(链路控制层):《低功耗蓝牙开发权威指南,Robin Heydon著》第7章 、core_v5.0.pdf 《Vol 4: Host Controller Interface [Transport Layer]》
HCI(主机控制器接口):BTStack源码的三线串口(btstack-master\src\hci_transport_h5c)、五线串口(btstack-master\src\hci_transport_h4.c )和 USB(btstack-master\platform\windows\hci_transport_h2_winusb.c)
L2CAP(逻辑链路通道适配协议):官方参考文档 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Protocol Specification
ATT(属性):规定的UUID参考,https://www.jianshu.com/p/08f76e4fd811
GATT(通用属性):https://www.cnblogs.com/hzl6255/p/4158363.html(基本是对官方文档的翻译)
GAP(通用可访问协议):官方文档 Vol 3: Core System Package [Host volume] Part C: Generic Access Profile
SM(安全管理):http://www.wowotech.net/bluetooth/ble_address_type.html
我认为,学习蓝牙,一开始可以先不用去看枯燥无味的官方文档,了解了大概的框架,对每个协议层的功能可以说个大概,做几个相关的蓝牙实验,如uart透传,心率采集实验;这样的效率更高;
之后的更深入的学习,肯定是对官方文档的细节理解和将理解兑换成代码的过程;
共勉。