2020年的春天注定是难忘的。首先向抗疫英雄们致敬!
2020年3月20日收到了等待已久的BLE低功耗蓝牙芯片FR8016H开发板,其核心芯片FR8016H是由中国富芮坤公司设计的基于ARM-Cortex-m3内核,集成了丰富的接口和足够容量的RAM.ROM和FLASH的物联网芯片,提供了操作系统级架构支持和完全的BLE协议栈。 由于在教育系统工作,从2009年开始学习stc89c8051单片机,后面到了2014年转向学习Arduino平台,再到2018年学习ESP8266/ESP32平台,从Keil uC转向 Arduino ,基本上变得很懒,习惯了调用简洁的库的界面来工作。由于对物联网新的组网协议的好奇,申请了这次的评测活动,重新拾起了在学习51单片机时一直相伴的keil uC 环境。竟然一别十年,从原来的2.x 到现在已经是 5.x。更让我感到惊奇的是,其实和原来从datasheet开始一点一点码代码不同,由于有了SDK夹持,很多的底层的驱动都已经封装好了,甚至已经有了例子程序,写好了架构,让我们专注于具体要实现的功能,而非哪些具体驱动的适配和调试。
1. 开发环境
在官方github网址https://gitee.com/freqchip/FR801xH-SDK下载最新的开发包。安装好开发环境Keil uC 5.安装好后,要注意再安装ARM.CMSIS.5.6.0.pack包。可以从arm官网下载。下载好后,直接双击文件就可以安装。之后到sdk的example下的目录中打开工程。
会弹出一个窗口。
选择migate to MDKv5 . 意思是这个工程是v4版本的,需要适应到v5版本。之后就是弹出了一个pack install 的窗口。可以不去理会。回到MDK5 的IDE.
选择是。之后就可以选择Device的选型了,就是芯片的架构(指令集)。
这样就算导入成功了。
其它的步骤,比如如何编译,在output文件夹里的bin文件,怎么烧录到开发板,请参考SDK内的docs文件夹里面的开发手册。
2. Hello World! 怎么写
我们学习c 语言,第一个程序大家都不陌生,就是hello world! .学习单片机的时候,因为串口往往是我们在电脑和开发板之间交流信息的主要通道,所以需要在电脑上运行终端程序。推荐puTTY.但是这个有些不方便,我是用串口调试助手。注意要选好cp2100串口驱动对应的虚拟串口号。开发板的串口波特率是115200bps.
我们怎么往串口上输出字符呢?sdk中有一个重要的函数,co_printf("fmt",[var1,][var2,]);和标准的printf很像。所以要写hello world,只要写好好这个函数就可以了。
co_printf("hello World!");
3. 入口函数
sdk里面的example下面,有比较多的例程。打开某个例程后,可以找到proj_mian.c文件。这个文件是我们应用层的入口文件。以ble_simple_peripheral例程为例。
这个文件中,根据手册,开发板的底层的执行流程中,会通过weak,类似于重载的机制,运行应用层中的pro_main.c由用户定义的3个函数。分别是
void user_custom_parameters(void){}
void user_entry_before_ble_init(void){}
void user_entry_after_ble_init(void){};
第一个函数是设置蓝牙的一些配置参数的,第二个函数是在BLE协议栈初始化之前的准备工作,第三个函数是BLE协议栈初始化之后的流程。
所以我们可以在第三个函数中执行我们的代码。例如加入上面的hello worldd代码,那么复位开发板后,在串口助手上就可以看到"hello world!的信息了。
这个可能太简单了吧,不过你要知道,再复杂的事情,必须要迈开第一步,这就是我学习FR8016HA开发的第一步。后面可以进一步学习传感器的数据传输原理 iic接口,按键处理,还有ADC等等。这些例程里面都很完善,虽然文档里面没有介绍如何来编写相关的代码,参考开源代码,是最好的学习材料。需要从这里的入口函数开始,渐渐明白复杂的工作是如何搭建起来。
感谢富芮坤FreQChip公司给予我的学习机会。感谢各位大神的耐心帮助和指导!