学习蓝牙技术应该知道的几个要点

为了方便大家学习,现与我爱蓝牙网联合推出【QCC300x/CSR867x/QCC30xx/QCC51xx开发板】。

技术交流QQ群号:743434463
开发板会员QQ群号:725398389(凭订单号入群,赠独家学习资料)
——————————正文分割线———————————–

1. 前言

蓝牙技术因其成本低、功耗低、可拓展性强,被公认为应用最广泛的短距无线通信技术。搭载蓝牙技术的产品市场占有率逐年提高,随之产生了巨大的开发人才需求。但由于蓝牙技术的迭代速度较快、与其他技术领域交叉重叠较多、缺乏成熟的培训体系等种种原因,使得企业难以找到合适的人才,从而推高企业的用人成本,从长远的角度看,并不利于行业的健康发展。

作者从2015年开始自学蓝牙技术,没有积累到很多成功的经验,犯过的错和走过的弯路倒是可以说出不少,在此总结出几个要点,期望大家早日学有所成。

2. 选择适合的平台切入

很多新接触蓝牙技术的朋友,对方案的难度和自身技术储备了解不够。比如有遇到一直做硬件开发的朋友,想快速深入到5124平台的软件开发,不知从何下手;再或者有对安卓或Linux环境的开源协议栈很熟悉的朋友,发现8670的中间层代码不开源,就觉得高通的方案开发起来容易出问题。

在此给大家提供一个高通蓝牙平台软件开发难易度的简单梳理:

芯片型号 技能需求 开发难度 软件可编程
CSR863x 会使用一般电脑软件 不可编程
CSR867x C语言/汇编语言 底层固件不可编程,应用可编程,DSP可编程
QCC300x C语言 底层固件不可编程,应用可编程,DSP可编程
QCC30xx C语言 中高 底层固件部分可编程,应用可编程,DSP可部分编程
QCC512x C语言/汇编语言 底层固件部分可编程,应用可编程,DSP可编程
  • 底层固件不可编程,开发人员需要熟悉软件接口,高通方案的软件接口是比较丰富的;底层固件部分可编程,指的是QCC30xx和51xx系列将一部分软件接口的源码开放出来,降低开发者理解和运用的难度
    学习蓝牙技术应该知道的几个要点_第1张图片
  • 应用层有源码,软件框架是完整的,可以增删一些功能
  • DSP可编程,意味着可以移植客户的自有算法,属于较高级的功能,一般ODM厂商不会涉及到。QCC30xx的DSP是部分可编程,意思是可以调用预置的算法模块并重新设计音频链路,但不能新建算法模块
  • 对于不可编程的部分,绝大多数情况下是可以稳定工作的,也不排除有个别问题需要修复,此时可以通过打patch(补丁)的方式来解决此问题,当然这需要原厂的支持
  • 软件开放程度越高,芯片通用性越强,价格越高;软件开放程度越低,芯片专用性越强,价格越低

按照方案开发的难易度,推荐的学习路线如下:

  • 从300x开始上手,熟悉基础的sink模式蓝牙耳机功能
  • 再学习8675,熟悉source蓝牙发射器模式和传统tws耳机模式
  • 接着学习30xx,熟悉earbuds蓝牙豆模式,并能够用kymera自定义音频链路
  • 最后学习512x,熟悉kymera仿真C语言算法的方法,能够自行开发算法模块并集成到音频链路

3. 大量阅读文档

学习蓝牙开发的过程中需要阅读大量的文档,才能在大脑中形成足够数量的知识点,再通过阅读代码和实际调试将知识点形成知识网络,产生解决实际问题的能力。

蓝牙技术类的文档主要由如下几部分组成:

  • 官方技术规格文档,如“bluetooth core spec 5.0”/"GATT profile"等,在蓝牙官网下载,权威性和指导性是最强的,阅读难度也是最大的。不建议直接硬啃,可作为词典在阅读代码时查询,加深对协议中很多抽象概念的理解。
  • 芯片平台技术资料,如高通ADK中的众多“user guide”等,用高通的开发者账号下载,入门引导、实操示范为主,对开发产品的具体功能是有很强的指导意义的,必读且要精读。很多读者容易在繁多的文档中迷失方向,建议阅读顺序是总体方案概述->硬件规格书类->软件系统类->示例讲解类。
  • 公开网络资料,如csdn博客、专业蓝牙技术论坛(52bluetooth)等,各自有用户权限,知识点讲解、问题解决方案分享为主,阅读难度不大,但需要有较多的背景知识和实际经验才有帮助。

4. 先基础再延申

高通蓝牙方案可以支持的功能有很多,体现在终端产品上是多个功能的集合,学习时容易找不到合适的切入点。

蓝牙平台的一些功能(如打电话、听音乐、BLE传输数据)在同类型的产品中总会出现,然后是基于一种或多种功能延申出的增强功能(如语音助手)。建议按照功能的依赖关系安排学习步骤:

  • 基础功能
    • 接听电话 HFP/HSP
    • 听音乐 A2DP
    • 虚拟串口通讯 SPP/RFCOMM
    • 呼出电话 AGHFP
    • 音频发射 A2DP
    • 显示电池电量 BLE/HFP
  • 增强功能
    • 语音助手 HFP/A2DP+SCO
    • OTA升级固件 SPP/RFCOMM/GATT
    • 安卓app控制 SPP/GATT
    • iOS app控制 GATT/iAP2

5. 记录和分享

在学习过程中收集到的知识,应该尽可能记录下重点内容和出处,以免日后需要用时找不到相关信息。在有阶段性学习成果时,尝试通过网络分享给更多人,可能会收获感谢和赞美,激励自己不断学习,形成良性循环。

你可能感兴趣的:(蓝牙方案)