芯科蓝牙BG27开发笔记1-新建示例工程

news2025/1/19 16:55:54

此笔记的必要性

芯科的官方资料很丰富,并且ssv5中能方便索引到所需文档,不过大而全的问题就是找不到合适的切入点,更不会有本地化比较好的中文的系统的教程了。往往看到一个starting guide,会延伸其他starting guide,这么套下去,资料虽然呈现出来了,效率却很低,有很多东西是前期根本不需要理会的。更不要说会出现第一个示例工程就必须要上个bootloader,以及最新的BG27的开发板资料有所错漏的诸如此类的小坑了……

入门的计划事项

前面几个周,确实进度感人!浏览那些繁杂的资料,创建、阅读、测试示例工程,搞清楚这“考虑太多”的官方开发板,芯科蓝牙SDK的初步了解,几乎每一步都要比Nordic入门费劲。而这些本该是范式的东西。

不过思路变得清晰,搞定这些只是时间问题。

学习一个新的东西,我习惯首先去提出一些问题,随着学习推进,这些问题从笼统变的具体,从初级变的深入,诸如:

1. 我要用的东西是什么?怎么去学习它,获取资料的途径有哪些?

2. 我要用这个东西来干什么?怎么去实现?

3. 我要从哪里开始?

问题是渐进式的,一无所知怎能在一开始就一语破的?

问题不是一定要完美解决的,前期问题,更多的作用是分清方向找到合适的切入点,不能立刻解决的问题,大多要记下来,大多又会在后边的学习阶段迎刃而解。那种勇攀学习曲线峭壁的情况是少之又少。

高效浏览、综合分析是必要的,尤其是在有基础的情况下。对一门全新知识来说,那还是找本书,系统地去啃。

随着对资料的熟悉,对提出的初期问题的总结,脉络开始清晰。

第一个工程-蓝牙点灯

具体功能是:APP上控制灯的亮灭、板子上的按键通知上传到APP

在launcher选项卡下边,可以看到已经连接的官方开发板的型号,此时直接点击start进入下一步;

如果没有开发板就需要选择All products中的对应芯片。

注意该页面右下角的教程文档,实际上是必须要先看看的。

点击示例那一栏

可以关键词筛选已有的示例,不过此处使用soc blinky示例,点击创建

最好选择拷贝所有内容到工程中,虽然需要200M+的大小,但是这可以便于在VSCODE中查看所有代码:

自动创建完成,注意此时从launcher选项卡跳到了Simpley IDE,实际上,ssv5中的图形化配置要比nordic做的更好。这个工程是不能直接编译下载运行的,需要去掉bootloader的功能。在芯科这套工具中,软件功能都是模块化的,并且携带了前后的依赖关系,同时加载和删除软件模块都是图形UI操作。

根据readme说明,要卸载“the Bootloader Application Interface software component”,要注意先删除依赖该模块的部件才能继续删除此模块!

点击卸载是失败的,需要删除后级依赖

成功卸载之后,工程目录下的相关文件和代码会被自动删除,此处,先不用关心。按照下图顺序,编译下载(点选项目项目之后,编译图标才会有效)。

后续,使用任一一款蓝牙调试助手,按照readme说明,即可实现以下两个功能:

1. app控制开发板上的灯

2. 按键信息被上传到手机APP

注意事项

使用的开发板:

按键对应到BG27的引脚并不是PB0和PB1,而是PC05和PC04,这一点在《UG551: EFR32xG27 2.4 GHz 8 dBm Radio Board User's Guide》中也是错的,需要自己查找该开发板的原理图,在如下位置:

重新进入新建工程页面,点击start之后的页面中,点击Document筛选所需的关联文档:

打开原理图,发现这个底板想要实现的功能很杂,我用的4001型号,内含功率测试电路。另外的,主控芯片是st+外置ram的方案,整合了正版jlink!(注意有些版本的jflash将因为版权问题无法使用)整体的复杂度比nordic的高很多。

查阅主板图:

查阅蓝牙板的原理图:

按键和灯是联动的,但是又不是所有时候都能联动!在PC04、05默认不配置的时候,按键下去,线上的电压是2.8V左右,无法开启MOS管。大致可以认为这个1M上拉电阻被BG27内部电阻并联后整体上拉电阻<100Ω。由此推论,岂不是GPIO的上电默认是VDD?这样明显是由风险的。所以此问题暂且记录。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT高级数据分析功能

目录 只需要上传数据集就可以自动化分析,我们测试以下,首先我找了一份数据,主要是关于二手车的,格式如下: 接下来调用,GPT中的高级数据分析功能,上传数据,并要求进行分析 第一步:自动对数据字段进行详细的解释: 第二步,对数据进行预处理,比如缺失值,基本的描述…

第29章_瑞萨MCU零基础入门系列教程之改进型环形缓冲区

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

C语言数组和指针笔试题(一)(一定要看)

目录 一维数组例题1例题2例题3例题4例题5例题6例题7例题8例题9例题10例题输出结果 字符数组一例题1例题2例题3例题4例题5例题6例题7 一维数组 int a[] {1,2,3,4}; 1:printf("%d\n",sizeof(a)); 2:printf("%d\n",sizeof(a0)); 3:printf("%d\n",…

TypeScript高级类型

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 映射类型&#xff08;Mapped Types&#xff09; 1. Readonly 2. Partial 3. Pick 4. Record 条件类型&#xf…

【javaSE】 反射与反射的使用

文章目录 &#x1f332;反射的定义&#x1f38d;反射的用途&#x1f334;反射基本信息&#x1f340;反射相关的类&#x1f6a9;Class类(反射机制的起源 )&#x1f388;Class类中的相关方法 &#x1f6a9;反射示例&#x1f388;获得Class对象的三种方式&#x1f388;反射的使用 …

导数应用:曲线的凹凸性、渐进线、弧微分与曲率

目录 曲线的凹凸性 函数的拐点 曲线的渐近线 函数的弧微分与曲率 曲线的凹凸性 曲线的凹凸性是描述曲线在某一点处的曲率属性的几何性质。 具体来说&#xff0c;对于平面上的曲线&#xff0c;其在某一点的切线的斜率是不断变化的。当切线的斜率在某区间内恒为正值时&#…

基于HTML、CSS和JavaScript制作一个中秋节倒计时网页

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 这个项目使用HTML、CSS和…

第一百四十天学习记录:工作相关:Qt5.14.2的安装

最近一段时间被新项目搞得心力憔悴。 加上需要调用一个同事的OpenCV库一直报错&#xff0c;后面发现是Qt版本不兼容的问题。 在尝试了在线安装Qt无果后&#xff0c;重新安装Qt&#xff0c;顺便回顾一下Qt的安装过程。 毕竟上一次安装Qt还是在2019年……之后的这4年工作电脑和家…

TypeScript类型推断

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 类型推断 1. 基础类型推断 #2. 最佳公共类型推断 3. 上下文类型推断 4. 类型断言 #5. 类型推断和泛型 总结 类…

【javaSE】 Lambda表达式与Lambda表达式的使用

文章目录 &#x1f333;Lambda表达式的背景&#x1f6a9;Lambda表达式的语法&#x1f6a9;函数式接口 &#x1f38b;Lambda表达式的基本使用&#x1f384;语法精简 &#x1f332;变量捕获&#x1f6a9;匿名内部类&#x1f6a9;匿名内部类的变量捕获&#x1f6a9;Lambda的变量捕…

【力扣-二叉树-01】在二叉树中分配硬币-力扣 979 题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

多层全连接网络:实现手写数字识别50轮准确率92.1%

多层全连接网络&#xff1a;实现手写数字识别50轮准确率92.1% 1 导入必备库2 torchvision内置了常用数据集和最常见的模型3 数据批量加载4 绘制样例5 创建模型7 设置是否使用GPU8 设置损失函数和优化器9 定义训练函数10 定义测试函数11 开始训练12 绘制损失曲线并保存13 绘制准…

C++ std::future

std::future是用来接收一个线程的执行结果的&#xff0c;并且是一次性的。 共享状态shared state future可以关联一个共享状态&#xff0c;共享状态是用来储存要执行结果的。这个结果是async、promise、packaged_task设置的&#xff0c;且这个结果只能设置一次。 创建future …

【rtp-benchmarks】读取本地文件基于uvgRtp实现多线程发送

input 文件做内存映射 : get_mem D:\XTRANS\soup\uvg-rtp-dev\rtp-benchmarks\util\util.cc 文件中读取chunksize 到 vector 里作为chunks 创建多个线程进行发送 std::vector<std::thread*> threads;

C++数据结构X篇_12_树的基本概念和存储

学习二叉树之前先学习树的概念。 文章目录 1. 树的基本概念1.1 树的定义1.2 树的特点1.3 若干术语 2. 树的表示法2.1 图形表示法2.2 广义表表示法 3. 树的存储3.1 双亲表示法&#xff1a;保存父节点关系3.2 孩子表示法3.3 左孩子右兄弟表示法 1. 树的基本概念 之前所学均为线性…

22 相交链表

相交链表 题解1 快慢双指针改进 (acb bca)题解2 哈希表(偷懒) 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 题目数据 保证 整个链式结构中不存在环。 注意&#xff…

Golang gorm manytomany 多对多 更新、删除、替换

Delete 移除 只删除中间表的数据 删除原有的 var a Article1db.Preload("Tag1s").Take(&a, 1)fmt.Printf("%v", a) {1 k8s [{1 cloud []} {2 linux []}]}mysql> select * from article1; ------------ | id | title | ------------ | 1 | k8s …

导数公式及求导法则

目录 基本初等函数的导数公式 求导法则 有理运算法则 复合函数求导法 隐函数求导法 反函数求导法 参数方程求导法 对数求导法 基本初等函数的导数公式 基本初等函数的导数公式包括&#xff1a; C0(x^n)nx^(n-1)(a^x)a^x*lna(e^x)e^x(loga(x))1/(xlna)(lnx)1/x(sinx)cos…

十大排序算法及Java中的排序算法

文章目录 一、简介二、时间复杂度三、非线性时间比较类排序冒泡排序&#xff08;Bubble Sort&#xff09;排序过程代码实现步骤拆解演示复杂度 选择排序&#xff08;Selection Sort&#xff09;排序过程代码实现步骤拆解演示复杂度 插入排序&#xff08;Insertion Sort&#xf…

用冒泡排序完成库函数qsort的作用

Hello&#xff0c;今天分享的是我们用冒泡函数实现qsort&#xff0c;也就是快排&#xff0c;之前我们也讲过库函数qsort的使用方法&#xff0c;今天我们尝试用冒泡函数实现一下&#xff0c;当然我们也见过qsort&#xff0c;后面也会继续完善的。这几天我是破防大学生&#xff0…