1、摘要
最近浏览Micro:bit Educational Foundation | micro:bit,发现他们推出了一个被称之为BBC micro:bit的项目,该项目针对儿童计算机编程教育而开发,可以采用积木方式、Python、JavaSript进行编程,可以看出这是一个非常有意思的项目,经过对此项目的进一步了解后,发现它是采用Daplink(一个ARM公司推出的软件、硬件都开源的调试器项目) + nRF52833(知名蓝牙芯片方案公司Nordic的一颗蓝牙芯片)进行设计,出于对其积木方式编程的兴趣,本人打算Diy一个类似的项目,所以打算设计一个跟micro:bit功能相似的板卡。
如图1-1是micro:bit的板卡图片。
2、技术方案选型
2.1 micro:bit技术方案回顾
经过浏览micro:bit官网的资料,找到了micro:bit V2参考设计框图如下:
如图2-1所示,micro:bit主要有二颗主要的芯片组成:
1.、Freescale KL27
2、Nordic Semiconductor nRF52833
Freescale KL27被称之为接口芯片,它主要用来运行Daplink固件,可以让电脑端的多种IDE(集成软件环境)对目标芯片进行源码调试、代码下载,有关Daplink的资料请自行上网查询。
nRF52833是单芯片蓝牙SOC,用来运行各种蓝牙协议栈,实现各种基于蓝牙的无线通信需求。
使用Daplink进行ARM芯片开发的优点:
- 通过使用ARM公司的CMSIS-DAP协议可以实现源码级的软件调试功能;
- Daplink虚拟了一个CDC串口,可以将目标板通过串口输出的log信息发送到电脑端;
- Daplink在电脑端虚拟出了一个U盘,可以直接将IDE编译出的目标程序的16进制格式的文件拖拽到U盘来下载程序到目标板;
- Daplink实现了一个WebUSB驱动,通过浏览器就可以将文件拖拽到U盘,因此可以将云端的编译器输出的16进制目标文件直接下载到目标板中,这个功能对于针对中小学的软件编程教学平台特别有用,可以省去在本地部署开发环境,有效地降低教学成本
2.2 自定义蓝牙开发板的方案选型
2.2.1 Daplink接口芯片的选型
通过访问以下网站,查找相关的资料:
https://github.com/armmbed/mbed-HDK https://github.com/ARMmbed/mbed-HDK-Eagle-Projects
https://github.com/armmbed/DAPLink
从上述的3个网站中,可以找到Daplink的参考硬件参考设计资料、软件源代码。
经过消化从这几个网站的关于Daplink的介绍、硬件参考设计和软件包的下载编译测试,我决定采用STM32F103CBT6作为蓝牙开发板中的Daplink接口芯片,选择这颗芯片的理由如下:
- 手头有从某宝购买过的基于STM32F103CBT6芯片的Daplink,可以方便我做源码的编译测试;
- 目前出现的芯片荒,导致Freescale KL27系列芯片很难买;
- 本人多年使用STM32系列的芯片做产品开发,不想去熟悉一款新的芯片的开发环境,这个做过研发的人都懂;
2.2.2 蓝牙芯片nRF52833的选型
查阅nRF52833官方资料,该芯片有多种的封装形式:
图2-2-1所示为aQFN封装。
图2-2-2所示为QFN40封装。
图2-2-3所示为WLCSP封装。
从上述的封装可以看出,QFN40封装的输出引脚最少,那么一些需要使用到引脚的一些功能将会受到限制,但因为目前我是要做一款全功能的开发板,那么最好引出所有的芯片引脚,所以QFN40封装的nrF52833芯片暂时就不考虑了。
从几个芯片的封装来看,抛开QFN40封装后,剩下的二款芯片的封装形式,在业余条件下,采用手工焊接的方式处理都会有一定的难度,焊接的良率无法保证,如果外发采用SMT加工,又受到加工量少、芯片采购困难、开机费贵等因素的影响,所以也让人很纠结。
经过综合考虑,觉得可以采购一款基于nRF52833的蓝牙模块来降低直接采用芯片进行设计的难度,通过再次查询某宝官网,终于找到了一款基于蓝牙nRF52833的模块,基本信息如下:
更多的资料,可以访问:https://www.ebyte.com/查询询。
至此,为了降低开发前期的设计难度,决定采用EBYTE的E73-2G4M08S1E来进行设计。
3、总结
综上所述,本蓝牙开发板决定采用如下的资源进行设计:
- Daplink的接口芯片:STM32F103CBT6;
- 蓝牙部分:E73-2G4M08S1E模组;
- 固件:GitHub - ARMmbed/DAPLink
- Daplink硬件参考设计:https://github.com/ARMmbed/mbed-HDK-Eagle-Projects
详细开发过程,见后续的开发文档。