AB32VG1:SDK_AB53XX_V061(4)蓝牙音频测试笔记

文章目录

  • 1. 淘宝上两种开发板,有一种的蓝牙功能不正常
  • 2. 蓝牙音频测试
    • 2.1 《config.h》和《Boombox.setting》两个配置以哪个为准
    • 2.2 codeblocks更换链接库
      • 2.2.1 这样进入build options是错的
      • 2.2.2 build options正确打开方式
    • 2.3.编译工程,下载运行
      • 2.3.1 上电运行
  • 3.源码参考

AB5301A这个MCU在2021年芯片价格最高光时刻,售价是4.2元。对应的资源如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f8e203af2c1f4c929bd9562ba09fbb6d.png
可谓性价比非常高,就算去掉主打的蓝牙功能,当作一个普通的MCU,性价比都是很高的。
废话少说,直入正题。

1. 淘宝上两种开发板,有一种的蓝牙功能不正常

我买了两种开发板:
1.绿板:
在这里插入图片描述
2.蓝板:
在这里插入图片描述

绿板因为价格才36元,一次买了3块,然后根据大佬谷动谷力的教程《基于RT-Thread 中科蓝讯AB32VG1 BLE开发例程讲解》测试了BLE功能,换了2块板都是手机连不上蓝牙,反复折腾都是不行。赶紧在睿赛德科技官方店买了蓝板,一试就行。不过如教程所说,时不时出现 timer stack overflow 的错误,就放弃了rt-thread,转向官方原生的《SDK_AB53XX_V061》。这个SDK的蓝牙音频和BLE功能都可以正常使用,目前为止测试很稳定。

2. 蓝牙音频测试

《SDK_AB53XX_V061》提供了4种开发方案:

1.earphone --耳机方案
2.karaok – 卡拉OK方案
3.LCD – 带点阵LCD显示方案
4.standard – 标准方案

我们当然是从标准方案入手。需要改动的C文件集中在一个《port》的文件夹:
在这里插入图片描述
其他的基本可以通过配置文件《config.h》来配置。蓝牙功能测试几乎不用修改源码,只要修改配置文件就可以了。
下面是关于蓝牙部分的配置:
在这里插入图片描述

另外还有烧录时的配置文件《app\projects\standard\Output\bin\Settings\Boombox.setting》,详细参考官方文档《AB535X 开发手册(配置说明).pdf》。这里做简单说明。
Boombox.setting是在烧录工具中打开编辑:
在这里插入图片描述
打开后:
在这里插入图片描述
我们可以看到,《config.h》和《Boombox.setting》很多配置是重复的,不知道以哪个为准。因为我也是刚接触,也没有找代理商咨询,全靠网络公开的资料和测试。

2.1 《config.h》和《Boombox.setting》两个配置以哪个为准

《config.h》文件负责配置编译条件,决定把哪些源码包含进来编译。而程序上电运行时,会将配置内容《Boombox.setting》读入结构体 xcfg_cb,然后在具体功能运行之前判断是否要执行。
下面用一个真实的程序片段来说明:

void bsp_sys_init(void)
{
    if (!xcfg_init(&xcfg_cb, sizeof(xcfg_cb))) {           //从 Boombox.setting 获取配置参数
        printf("xcfg init error\n");
    }
......
#if CHARGE_EN		//	由《config.h》 中的内容决定
    if (xcfg_cb.charge_en) {	//	由《Boombox.setting》 中的内容决定
        charge_init();
    }
#endif // CHARGE_EN
......
}

从第7行知道,首先必须在《config.h》打开宏定义,使能编译条件:

#define CHARGE_EN 1 //是否打开充电功能

这样才可能把第8-10行代码进行编译。
而像上面蓝牙名称的配置,不属于编译条件,此时以《Boombox.setting》为准。其他具体情况,具体分析。

2.2 codeblocks更换链接库

2.2.1 这样进入build options是错的

在这里插入图片描述

2.2.2 build options正确打开方式

在这里插入图片描述

2.3.编译工程,下载运行

按照目前网络公开的源码,我做了一些改动:
https://gitee.com/huangweide001/ab32-vg_-sdk_cbp
我的工程中使用了BLE功能,需要把链接库libbtstack.a替换为libbtstack_dm.a。如果仅仅是蓝牙音频,则不需要。详情参考官方文档《AB53XX_BLE开发说明.pdf》。
编译成功后,烧录文件是《app\projects\standard\Output\bin\app.dcf》,下载时选择《Boombox》,如下图:
在这里插入图片描述

2.3.1 上电运行

如果有插入TF卡,且卡内有mp3文件,将进入sd卡播放模式,播放英文提示“SD card now”,紧接着自动播放mp3。此时,如果要进入蓝牙音频模式,需要KEY_MODE命令。按键和红外都可以。(移植自己的按键板和红外遥控参考文章:AB32VG1:SDK_AB53XX_V061(2)app.cbp工程源码阅读笔记(ADC按键和红外遥控器移植))
如果没有插入TF卡,将进入蓝牙音频模式,播放英文提示“bluetooth now”,等到连接音源。

3.源码参考

SDK_AB53XX_V061源码:
链接:https://pan.baidu.com/s/1TbW_G_JFPUwNt2IdyIUCiA?pwd=1vej
提取码:1vej

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29539.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手撕学生管理系统超详解——【c++】

题目要求:设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。 实现按班级输出学生的成绩单;实现按学号和姓名进行查询,按平均成绩进行排序功能。 问题描述 该程序的目标是提供一个简单且易于使用…

Linux本地搭建GitLab服务器 - 内网穿透远程访问

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自cpolar极点云文章:Linux搭建GitLab私有仓库,并内网穿透实…

为什么我们需要API接口?API接口的核心又是什么?

API(Application Programming Interface)是一种连接不同软件之间的标准化的接口,可以让不同软件间进行数据交互和通信。API接口的作用很多,以下是几个主要的原因: 1.提高软件系统的灵活性和可扩展性。API接口可以将不…

Banana Pi BPI-R3 Mini:2.5GbE 嵌入式路由器板,MTK7986方案

香蕉派 BPI-R3 Mini Banana Pi BPI-R3 Mini 是一款功能强大的 SBC 路由器板,专为需要高速网络功能的个人和企业而设计。这款路由器是广受欢迎的 Banana Pi R3 路由器板的小兄弟,配备了先进的功能,旨在提供可靠的性能,是需要可靠网…

2.MATLAB篇——基本操作与矩阵输入

>> cos(((12345)^5)^0.5)ans -0.3623>> help sinsin - 参数的正弦,以弧度为单位此 MATLAB 函数 返回 X 的元素的正弦。sin 函数按元素处理数组。该函数同时接受实数和复数输入。 对于 X 的实数值,sin(X) 返回区间 [-1, 1] 内的实数值。 对于…

离散数学题目收集整理练习(期末过关进度50%)

✨博主:命运之光 🦄专栏:离散数学考前复习(知识点题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 ✨博主的其他文章:点击…

flutter DevTools(1)

在VSCODE中调试 第一步: ① 切换到 vscode 的调试和运行模式, ② 配置好 .vscode 中的启动项 launch.json ③ 共有四种模式 [1] debug : 模式编译产物适合纯 Flutter 侧代码的开发、调试 [2] profile : 的用来做性能分析和测试 [3] release : 的用于打包发布 [4]…

【C++】C++11新特性重点:可变参数+lambda

C11新特性第二篇重点 文章目录 上一篇的补充一、可变参数模板二、lambda函数总结 前言 上一篇我们重点讲解了右值引用移动语义,关于移动构造和移动赋值还有一些需要补充的知识: 如果你没有自己实现移动构造函数,且没有实现析构函数 、拷贝构…

RabbitMq消息堆积问题及惰性队列

消息堆积问题 当生产者发送消息的速度超过了消费者处理的速度,就会导致队列的消息堆积,知道队列存储消息达到上限。最早接受的消息,可能就会成为死信,会被丢弃,这就是消息堆积问题。 解决消费对接问题 1.增加更多的消…

【数据库一】MySQL数据库初体验

MySQL数据库初体验 1.数据库基本概念1.1 数据Data1.2 表1.3 数据库1.4 数据库管理系统1.5 数据库系统 2.数据库的发展3.主流的数据库介绍3.1 SQL Server(微软公司产品)3.2 Oracle (甲骨文公司产品)3.3 DB2(IBM公司产品…

XSS—存储型xss

xss >跨站脚本攻击>前端代码注入>用户输入的数据会被当做前端代码执行。 原理:使用者提交的XSS代码被存储到服务器上的数据库里或页面或某个上传文件里,导致用户访问页面展示的内容时直接触发xss代码。 输入内容后直接在下方回显,回…

Linux UPS配置详解 (山特SANTAK TGBOX-850 )

目录 起因 安装NUT NUT简介 配置 ups配置 (nut-driver) nut-server配置 nut.conf upsd.conf upsd.users nut-client配置 upsmon.conf 设置自动启动 释疑 起因 配置了一台All in One主机,系统是装的PVE,一个linux的虚…

和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】

和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】 文章目录 和鲸社区数据分析每周挑战【第九十三期:特斯拉充电桩分布分析】一、前言二、数据读取和初步探索三、数据探索及可视化1、获取拥有最多充电站的 10 个国家2、一年中各月新开业数量…

微软wsl2 + ubantu + docker + 部署本地项目

windows 操作系统版本要达到要求 开启 wsl2 安装实用工具 Windows Terminal 和 Visual Studio Code 安装 Ubuntu 子系统 安装 Docker Desktop 并让 Docker Desktop 基于 wsl2 来运行 基础环境准备可以完全参照《搭建 Laravel Sail 开发环境 - Windows》来进行,我跟教…

微信小程序基础使用-请求数据并渲染

小程序基本使用-请求数据并渲染 小程序模板语法-数据绑定 在js中定义数据 Page({data: {isOpen: true,message: hello world!} })小程序的data是一个对象,不同于vue的data是一个函数 在模块中获取使用数据 小程序中使用 {{}} 实现数据与模板的绑定 内容绑定&a…

Spring Boot整合JPA

文章目录 一、Spring Boot整合JPA(一)创建Spring Boot项目JPADemo(二)创建ORM实体类1、创建评论实体类 - Comment2、创建文章实体类 - Article (三)创建自定义JpaRepository接口 - ArticleRepository&#…

1.数据库的基本操作

SQL句子中语法格式提示: 1.中括号([])中的内容为可选项; 2.[,...]表示,前面的内容可重复; 3.大括号({})和竖线(|)表示选择项,在选择…

【Axure 教程】中继器(基础篇)

一、初识中继器 中继器是 Axure 中一个比较高阶的应用,它可以让我们在纯静态网页中模拟出类似带有后台数据交互的增删改查的效果,虽然它没有真正意义上帮我们存储任何的数据,但是当我们在一次项目体验过程中,它却可以给我们带来更…

如何获取HTTP请求时间与响应时间【附源码】

文章目录 一、问题描述二、抓包观察三、查找文档四、思考尝试五、精益求精六、源码解说 一、问题描述 今日遇到了一个问题,要去获取HTTP报文在请求和响应的时间,因为没有原生的API可以调用,所以需要一定的技巧~ 下面主体的框架和代码&#xf…

Vue中如何进行样式绑定?

Vue中如何进行样式绑定? 在Vue中,我们可以很方便地进行样式绑定。样式绑定是将CSS样式与Vue组件中的数据进行关联的一种技术。通过样式绑定,我们可以根据组件的状态动态地修改其外观。本文将介绍Vue中的样式绑定,包括类绑定、内联…