谷动谷力

标题: 中科蓝讯 SDK 开发——工程浅析 [打印本页]

作者: sunsili    时间: 2022-12-10 22:34
标题: 中科蓝讯 SDK 开发——工程浅析
本帖最后由 sunsili 于 2022-12-10 22:43 编辑

中科蓝讯 SDK 开发——工程浅析




      哈喽,大家好 ,今天给大家带来的是中科蓝讯 SDK 的工程浅析,希望可以在大家刚拿到中科蓝讯的 SDK 的时候提供一些帮助,让大家更快的上手开发 SDK。

一、 工程选择

      当拿到中科蓝讯的 SDK 时,在 projects 目录下通常会有两个工程,分别是 “earphone”,和 “standard”,其中 “standard” 是标准的 SDK 工程,功能比较齐全,除了蓝牙功能外,根据芯片的不同还可能支持 AUX、Line in、FM、SD Card、U 盘等模式,通常用于开发蓝牙音箱;“earphone” 工程则是标准工程的精简版,以蓝牙功能为主,去掉了其他的一些功能降低芯片的功耗,所以 “earphone” 工程通常用于蓝牙耳机、TWS 耳机的开发。

               

      在一些蓝牙音箱芯片的 SDK 中还会包括 “lcd” 和 “karaok” 工程,“lcd” 工程中包含了点阵屏功能,内置了中英文的字库,“karaok” 工程是 K 歌宝的示例工程,适用于开发 K 歌宝等,根据所需要的功能,选择对应 SDK 工程来开发即可。

            


二、工程介绍   1、config.h
      通过 Code Block 打开工程,在工程中找到 config.h 在这个文件中,可以对整个工程的功能做一些简单的配置,例如选择支持的功能:

            

      选择系统功能的简单配置,以及 Debug Log 输出口选择(波特率默认 1500000,单线通信):

            

       常用的一些例如充电功能的配置等等,如果看到配置是 xcfg_cb.xxxxx,说明该功能可以通过上位机在 Download 中进行配置,相关的配置可以参考笔者的博文《中科蓝讯 SDK 开发——环境安装及 Downloader 配置》,配置的详细情况可以查看 xcfg.h,因此对实现一些简单的功能需求,就可以通过修改 config.h 进行直接的配置。


            

   2、主要流程
      程序的 main 函数在 main.c 文件中(在 Code Block 中可以通过快捷键 AIT + G 搜索工程中包含的文件),main 函数中,包含了如下内容:

            

延伸阅读
共同关键字: 中科蓝讯 SDK
中科蓝讯 SDK 开发环境安装及 Downloader 配置
中科蓝讯 SDK 开发——耳机充电配置
中科蓝讯 SDK 开发——SDK按键功能简析
中科蓝讯 SDK TWS 组队和蓝牙配对过程分析
中科蓝讯 SDK 开发——TWS 左右声道分配


      除了 reset 的状况打印之外,还会进入两个函数 bsp_sys_init() 和 func_run()。
      bsp_sys_init() 是系统各功能的初始化部分,函数中会读取 Downloader 的配置,同时包含对芯片各功能的初始化,在 BSP 文件夹中包含了原厂提供的一些底层硬件接口的相关配置及初始化,如果开发过程中需要添加使用的其他外设,例如 I2S、I2C,可以把对应的初始化函数放到 bsp_sys_init() 中。

            

      系统初始化过后进入到 func_run() 中,该函数中主要是进入或切换系统的功能,“earphone” 工程中,这里通常都是在跑蓝牙的功能,即 func_bt(),在蓝牙音箱项目中则通常会在各模式之间切换,那么此时可以通过修改 func_cb.sta 来切换当前的模式。

            

      以蓝牙功能为例,在 func_run() 中进入蓝牙模式,进入 func_bt(),func_bt_enter() 函数中包含进入蓝牙功能的相关初始化,func_bt_process() 中包含电量检测、自动关机或休眠检测,以及充电状态处理,同时会在 while() 中循环跑蓝牙模式下的消息处理函数 func_bt_message(msg_dequeue()),大部分功能操作都是在消息处理函数中去实现。

            

3、消息处理
      在 SDK 的二次开发中,通常修改最多的是消息的处理部分,在工程 message 文件夹下,有不同模式下对应 c 文件,例如 bt 模式下,对应的消息处理则是在 msg_bt.c 文件中,不同状态下的消息处理函数也不同。蓝牙音乐下的消息处理在 func_bt_message() 中,来电响铃时的消息处理在 sfunc_bt_ring_message() 中,sfunc_bt_call_message() 则是通话中的消息处理。消息处理函数中通常处理按键,例如按键的单击、双击、长按等操作,或者定时器中断消息,从定时器中断处理函数发送到相应的消息处理函数中。

              

      此外还有一个消息处理是 func.c 中的 func_message(),任何模式下可以进入该消息处理函数,所以在 SDK 中长按关机,音量调节等不区分功能模式的操作都会放在这个函数中。

            

      相信通过上面的简单介绍,大家对 SDK 有了一点大致的映象,其实大部分的 UI 功能需求,都可以在消息处理函数中去实现。那么以上就是的文本的全部内容,如果本文内容有不准确或疏漏的地方,希望大家可以帮忙指正,还有其他问题可以在评论区中提出一起讨论,后续会继续更新相关内容,我们下次再见。

作者: pjf102110    时间: 2024-9-19 18:11
你好,能发下sdk吗  1329958919@qq.com
作者: sunsili    时间: 2024-9-20 13:47
pjf102110 发表于 2024-9-19 18:11
你好,能发下sdk吗

http://bbs.sunsili.com/thread-249886-1-1.html请到此下载




欢迎光临 谷动谷力 (http://bbs.sunsili.com/) Powered by Discuz! X3.2