当前位置: 首页 > news >正文

杰理微蓝牙芯片AC696系列入门

1.文章背景此篇文章以ac696n_soundbox_sdk_v1.7.0版本进行入门讲解写这篇文章的目的是因为自己在尝试入门杰理微的时候遇到了好多的问题点想尝试用买到的开发板来驱动一颗LED闪烁却一直没有按自己想象的逻辑成功跑出效果在网上到处翻找手册教程以及B站上看了许多教学视频后都感觉没有一个能很好一步步带我上手的教程最后还是自己通过串口打印日志一步步对SDK的架构渐渐清晰也可能是因为自己比较惯性思维想以学习一款MCU跑裸机的方式一直在main函数的while(1) 主循环里面尝试IO口点灯导致卡在这里很久但我还是希望以学习一款MCU的方式来攥写这篇杰理微蓝牙入门的文章这样对有MCU基础的人会比较好理解可以更快上手。MCU开发入门流程一般就是1.了解对应MCU的最简外围电路及相关引脚外设功能2.下载MCU对应开发编译环境与工具链并熟悉3.熟悉对应程序框架及其启动流程4.掌握其程序烧录及调试方法5.通过MCU的IO口进行点灯操作2.正式学习1.以AC6969D蓝牙芯片搭建的一个最简蓝牙音箱为例进行了解无使用电池供电这颗IC只需要1颗24MHz外部晶振以及几颗电容就可以搭建起最简外围电路进行程序烧录了由于杰理微这款芯片本身就是以soundbox产品为定位所以其供电引脚定义也不是VCC或VDD了而是VBAT支持2.2V~5.5V电压供电VDDIO为其内部LDO给内部IO进行供电的引脚当VBAT为5V供电时实测VDDIO为3.3V,当外部有较小负载需要3.3V供电时也可以从这里取电手册建议最好不超100mA,至于每个管脚对应的硬件外设功能这里就不列出了网上到处可以找到对应芯片手册。2.下载对应开发编译环境及工具链及对应版本SDK较常用的开发环境有三种Code::blocks、VScode、Makefile,官网文档推荐使用Code::blocks我也就用了这种直接在杰理微官网的文档中心下载即可网址https://doc.zh-jieli.com/Tools/zh-cn/dev_tools/dev_env/index.html至于AC696X系列的SDK由于官方并没有释放该资源所以我也不方便在这里提供资源了有需要的可以自己GitHub或码云上翻找一下还是能找到的。得到对应的SDK后解压后得到以下目录文件此文件即为对应的工程文件。3.熟悉SDK的程序框架及其启动流程首先我们找到该目录下的board_config.h,我们在该文件里面选择我们开启哪个模板来进行开发一般根据所使用的芯片来选择对应模板我用的是AC6969D芯片所以我就使能了对应的DEMO其他DEMO都注释掉了。使能该板级配置后我们就找到对应的DEMO头文件去里面使能我们需要用到的功能或者根据我们的实际硬件电路更改对应的配置参数关闭不需要用到的功能等然后我们要使用芯片的各种外设比如定时器timer、uart、spi、iic这些的话SDK也提供了对应的c文件程序模板其对应在该目录下我们可以新建一个.c文件定义我们自己要使用的函数也可以在SDK给出的.c文件里面直接定义或者更改其模板函数进行使用也行; 像MCU开发一样我们的外设初始化函数一般也是在main函数里面while(1)主循环之前进行调用我们找到目录下的app_main.c文件程序在经过一系列启动流程之后就会跑到该文件下的app_main()函数里面了启动流程图同时可以看到我们的主循环是在app_task_loop()这个函数里面这个函数会通过循环判断app_curr_task的值然后进入不同的任务去执行这个时候肯定会有人想着把要循环扫描的功能比如LED闪烁、按键检测这些放在这里是不是就轻松实现IO点灯功能和按键切换了一开始我也是这么想不过实际操作发现是不可行的因为app配置里面的任务比如蓝牙初始化过程中其是具有阻塞性的就是程序会卡在那里直到满足某个条件后才会继续进行或者退出然后再进入到这个while循环但是我们可以通过创建一个新的任务或开启一个触发中断的定时器来实现我们需要进行扫描的东西这里以开启一个定时器为例定时器相关封装函数位于timer.h文件里面通过在app_main()函数里面初始化开启一个定时器定时时间到达后就会触发中断执行中断回调函数rgb_led_timer_callback里面的内容对应timer.h里面的系统定时器开启函数此定时器开启后将一直存在不会因为进入一次中断就消失但是其无法阻止系统进入低功耗当我们的app配置里面无开启任何使能时系统就会因为判断为没有任务执行而自动进入低功耗那这个定时器里面要执行的内容也将无法执行了。下面这个用户定时器开启函数所开启的定时器就可以阻止系统进入低功耗同时其还可以设置中断优先级但是其每次开启后仅会触发进入一次中断需在中断回调函数中删除上次开启的定时器否则会造成内存堆积直到溢出报错然后再次开启该定时器这是我尝试不删除上一个定时器后串口输出的报错结果通过上述开启定时器的方式并在中断中进行扫描判断处理就可以完成我们大部分想要实现的功能了。4.掌握其程序烧录及调试方法杰理微烧录器原理为 USB通信强制进入ISD下载模式上电时序控制实际烧录时当芯片的VBAT脚如果接了大滤波电容的情况下由于会破坏上电时序所以基本很难识别到芯片所以建议最好采用空片烧录而不是带板子烧录或者在板子上预留跳接口当程序调试好后再把跳接口短接上。程序的编译和下载在Code::blocks是一体的按下F9后程序编译完识别到芯片后就会自动将程序下载进芯片要看到有显示正在write才是有在烧录程序进芯片在程序编译后如果没更改想要快速烧录也可以找到download.bat这个文件进行直接烧录调试方法一般采用串口打印数据观察程序动向要使用串口调试只需要做这两步就可以实现1.在app_config.h文件中使能lib总开关2.根据自己硬件uart的TX脚及通讯波特率在对应的demo.h文件里面修改uart配置参数像我之前串口打印发现程序跑到board_init()函数里面后串口就不输出数据了导致程序都没跑到app_main()函数里面我想要实现的功能全部没跑起来然后我就在board_init()函数里面每一句执行函数后面都进行数据打印最后发现开启了TCFG_UI_ENABLE后应该是里面重新定义使用了我的串口导致我的串口不输出数据了将这里disable之后就正常了5.使用IO口进行点灯操作这一步后面我让整个程序跑起来进入app_main()和学会定时器的创建使用之后就没有去尝试了而是直接尝试我想要的功能蓝牙连接播放音乐驱动RGB灯通过串口接收数据改变RGB的显示模式,同时回传特定数据给外部MCU后面我会再写一篇文章记录一下我的实现方式和程序这里先给大家看看效果文章结束
http://www.zskr.cn/news/1335699.html

相关文章:

  • 【正式版上线】Open Claw 2.7.5 桌面端一键安装部署教程
  • 掌握Linux网络设计中的WebSocket服务器
  • 拒绝扁平化噩梦!VLAN 三大核心优势深度拆解:从广播风暴到零信任安全架构的实战进化论
  • 小佩宠物饮水机拆机分析报告
  • 从宿舍查寝神器到企业考勤解决方案:栎偲考勤神器的技术落地实践
  • 基于 BCR Arm 的智能积木抓取与堆叠,换层仿真
  • 2026年SQL性能优化实战:从“规则背诵”到“原理驱动”的思维跃迁
  • 部门文件同步协作难?企业网盘选型必须要懂的 3 个核心标准
  • 我开发了一个 AI 表单填写 Chrome 插件:AutoFormX,提升 Web 测试和表单联调效率
  • 提示词工程(下):思维链、自我一致与 Cursor 规则
  • 操作系统概述(4)--操作系统运行机制(1):处理机双重模式与中断
  • Microchip安卓配件开发平台:MCU与安卓系统高效协同实战指南
  • 拓璞数控港股上市:市值142亿港元 年营收5.8亿,净利163万
  • 做精密阻抗分析仪踩过屏的坑,终于摸透这四个选型标准
  • ITO靶材成分均匀性(In/Sn比)控制技术排名
  • 论文查重vs查AI到底差在哪?AIGC检测原理拆解,AI率轻松降20%
  • 网安学习第23天 PHP安全——RCE漏洞
  • C#如何优雅处理引用类型的深拷贝 (十一)
  • 项目——基于C/S架构的文件传输系统平台 (2)——重构
  • 港科大沈劭劼、谭平团队最新成果:开源280万全景数据集,实现零样本立体匹配
  • 基于PSoC 6与BMI160构建嵌入式IMU测试系统:从驱动到上位机全流程
  • 从芯片上电到Wi-Fi连接:手把手调试ESP32-S3启动全流程(附日志分析)
  • 告别MPU6050例程!ATK-IMU901与Arduino串口通信的3个关键避坑点
  • 2026年4月知名的增压器维修机构推荐,增压器维修机构哪家可靠,高压油泵修复,燃油喷射精准高效 - 品牌推荐师
  • AI时代学习转型
  • 告别MIUI!用PixelExperience给小米8 SE刷上纯净安卓13,体验到底香不香?
  • ESP32-S3 变身‘数据U盘+调试串口’二合一神器:基于 TinyUSB 同时开启 MSC 和 CDC 的实战教程
  • 在STM32上实现文件上传:手把手教你配置lwIP 2.1.3的HTTPD POST接口(含内存管理避坑指南)
  • 用STM32L496的ADC测信号?手把手教你做个简易示波器(附潘多拉开发板源码)
  • iPaaS平台有哪些,这五款值得关注