中科蓝讯蓝牙软件调试记录:【图文讲解】

目录

1:Mic端:AB5769A

1.1:代码结构

1.2:xcfg_init()

2:音响端:AB5768E


本文以市面上一款公板公模的畅销产品为例。K12蓝牙音响。

音响用的芯片是:AB5768E

MIC用的芯片是:AB5769A

硬件框架图如下:

1:Mic端:AB5769A

1.1:代码结构

首先找到Main入口函数,如上图,红框1中的基本都是库函数,不太需要关注。重点看红框2里的两个函数

bsp_sys_init():系统初始化函数

func_run():功能总入口函数

打开bsp_sys_init(),是一些具体的初始化实现:

1.2:xcfg_init()

xcfg_init(&xcfg_cb, sizeof(xcfg_cb)):获取配置参数函数

比较有意思的是,xcfg_cb这个结构体的初值,不是在代码里给的,而是直接在下载工具里配置的。看起来是傻瓜了不少,但是有点说不出来的味道,放代码里配置感觉更高大上一些。

打开下载工具-》配置,然后就看到上图的页面了,根据终端是Mic,还是音响选择进行配置,也就相当给xcfg_cb结构体赋初值了。

typedef struct __attribute__((packed)) _xcfg_cb_t {
    u32 wireless_adapter_en              : 1;   //无线mic适配器
    u32 wireless_mic_emit_en             : 1;   //无线mic发射端
    u16 sys_off_time;                           //无连接时自动关机时间: 不关机: 0, 30秒钟后: 30, 1分钟后: 60, 2分钟后: 120, 3分钟后: 180, 4分钟后: 240, 5分钟后: 300, 6分钟后: 360, 7分钟后: 420, 8分钟后: 480, 9分钟后: 540, 10分钟后: 600, 15分钟后: 900, 20分钟后: 1200, 25分钟后: 1500, 30分钟后: 1800, 45分钟后: 2700, 1小时后: 3600
    u32 poweron_first_bat_en             : 1;   //发射端第一次上电开机
    u8 lpwr_warning_vbat_level;                 //低电提示电压: 0:不提示, 1:2.8V, 2:2.9V, 3:3.0V, 4:3.1V, 5:3.2V, 6:3.3V, 7:3.4V, 8:3.5V, 9:3.6V, 10:3.7V
    u8 lpwr_off_vbat_level;                     //低电关机电压: 0:不关机, 1:2.8V, 2:2.9V, 3:3.0V, 4:3.1V, 5:3.2V, 6:3.3V, 7:3.4V, 8:3.5V, 9:3.6V, 10:3.7V
    u32 vddio_sel                        : 4;   //VDDIO电压: None: 0, 2.7V: 3, 2.8V: 4, 2.9V: 5, 3.0V: 6, 3.1V: 7, 3.2V: 8, 3.3V: 9, 3.4V: 10, 3.5V: 11, 3.6V: 12, 3.7V: 13
    u32 buck_mode_en                     : 1;   //BUCK MODE
    u32 oscillator_26m_en                : 1;   //使用26M时钟源
    u8 uosc_both_cap;                           //自定义OSC基础电容: 0:0PF, 1:6PF
    u8 uosci_cap;                               //自定义OSCI电容
    u8 uosco_cap;                               //自定义OSCO电容
    u32 ft_osc_cap_en                    : 1;   //优先使用产测电容值
    char le_name[32];                           //BLE名称
    u8 le_addr[6];                              //蓝牙地址
    u32 bt_rf_pwrdec                     : 6;   //预置RF参数功率
    u32 bt_rf_param_en                   : 1;   //自定义RF参数
    u8 rf_pa_gain;                              //PA_GAIN
    u8 rf_mix_gain;                             //MIX_GAIN
    u8 rf_dig_gain;                             //DIG_GAIN
    u8 rf_captune_vl;                           //CAPTUNE_VL
    u8 rf_captune_vh;                           //CAPTUNE_VH
    u32 mic_bias_method                  : 2;   //MIC偏置电路配置: 单端MIC外部电阻电容: 2, 单端MIC内部电阻电容: 0
    u8 mic_anl_gain;                            //MICM模拟增益
    u8 mic_dig_gain_idx;                        //MIC数字增益
    u32 led_disp_en                      : 1;   //系统指示灯(蓝灯)
    u32 bled_io_sel                      : 5;   //蓝灯IO选择: None: 0, PA4: 4, PA5: 5, PA6: 6, PA7: 7, PA8: 8, PA9: 9, PA10: 10, PA11: 11, PA12: 12, PA13: 13, PA14: 14, PA15: 15, PB0: 16, PB1: 17, PB2: 18, PB3: 19, PB4: 20, PB5: 21, PB6: 22, PB7: 23, PB8: 24, PB9: 25, PB10: 26, PB11: 27, PB12: 28, PB13: 29, PB14: 30, PB15: 31
    u32 led_pwron_config_en              : 1;   //开机状态配置LED
    struct __attribute__((packed)) {
        u8 redpat;
        u8 bluepat;
        u8 unit;
        u8 cycle;
    } led_poweron;                              //开机闪灯控制
    u32 led_pwroff_config_en             : 1;   //关机状态配置LED
    struct __attribute__((packed)) {
        u8 redpat;
        u8 bluepat;
        u8 unit;
        u8 cycle;
    } led_poweroff;                             //关机闪灯控制
    u32 led_btpair_config_en             : 1;   //蓝牙配对状态配置LED
    struct __attribute__((packed)) {
        u8 redpat;
        u8 bluepat;
        u8 unit;
        u8 cycle;
    } led_pairing;                              //配对闪灯控制
    u32 led_btconn_config_en             : 1;   //蓝牙已连接状态配置LED
    struct __attribute__((packed)) {
        u8 redpat;
        u8 bluepat;
        u8 unit;
        u8 cycle;
    } led_connected;                            //已连接闪灯控制
    u8 xm_keep_start[0];                        //For Keep Area Start
    u8 osc_both_cap;                            //产测OSC基础电容
    u8 osci_cap;                                //产测OSCI电容
    u8 osco_cap;                                //产测OSCO电容
} xcfg_cb_t;

(xcfg_cb结构体)

2:音响端:AB5768E

### 中科蓝汛USB Audio技术文档概述 中科蓝汛在其多种芯片中集成了USB音频功能,这些芯片广泛应用于无线耳机、音箱和其他音频设备。对于开发人员而言,掌握USB音频的技术细节至关重要。 #### USB Audio协议支持 中科蓝讯的多款芯片均支持USB Audio Class 2.0 (UAC2),这使得设备能够传输高质量无损音质的数据流[^1]。通过遵循此标准,可以确保兼容各种操作系统平台上的驱动程序自动识别并正常工作。 #### 音频处理能力 在具体实现上,像AB5301A这样的高性能SoC不仅具备强大的RF收发器用于蓝牙连接,还内置了高效的DSP来完成复杂的编解码任务以及均衡调节等功能[^3]。这意味着即使是在资源受限的情况下也能提供出色的听觉体验。 #### 开发环境搭建 为了方便开发者快速入门,官方提供了详细的SDK包——例如`sdk_bt892xa2_v01x_s4041_20220316`版本就包含了针对不同应用场景下的示例工程文件和API接口说明文档[^2]。借助于这些工具链的支持,工程师们可以在较短时间内构建起稳定可靠的固件框架。 #### GPIO配置实例 当涉及到硬件层面的操作时,则需参照具体的GPIO初始化流程来进行设置。比如要启用某个特定引脚作为调试用途的话: ```c // 假设我们正在配置PB4为输出模式,并将其置位高电平 GPIOBDE |= BIT(4); // 数字IO使能: 设置为数字IO GPIOBDIR &= ~BIT(4); // 控制IO方向: 输出模式 GPIOBFEN &= ~BIT(4); // 当作通用GPIO使用 GPIOBSET |= BIT(4); // 将PB4引脚设置输出高 ``` 以上代码片段展示了如何正确地设定一个GPIO端口的状态以便后续调用[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DevinLGT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值