一、nRF51822简介
nRF51822是一款通用型超低功耗SoC,非常适合Bluetooth®低功耗和2.4 GHz专有无线应用。它围绕32位ARM®Cortex™-M0 CPU构建,具有256/128 KB闪存和32/16 KB RAM。灵活的2.4 GHz无线电支持蓝牙低功耗和2.4 GHz专有协议,如Gazell。
它集成了丰富的模拟和数字外设,可通过可编程外设互连(PPI)系统直接进行交互,无需CPU干预。灵活的GPIO使您可以将SPI主/从,TWI主设备和UART等数字接口连接到设备上的31个GPIO中的任何一个。
二、准备工具和软件
- nRF51822开发板和电源,我这里使用的是nRF51822 QFAC
- Jlink 下载器及驱动
- nRFgo studio 以及nRF51 SDK
- keil 4.7及以上版本,我用的是MDK V5.25.1.0
三、打开SDK中的工程文件
1.打开样例工程
在官方提供的nRF51 SDK中有部分的样例工程可以使用,这里我选择打开的是流水灯的工程。一般文件路径为:NRF51822SDK\Board\pca10001\blinky_example\arm\blinky.uvproj.
2.安装相关支持包
打开工程就会提示找不到nRF51822相应的支持包以及相应的设备。这个情况可能是我们的设备包里面没有nRF51822的相关芯片,所以此时我们需要打开pack installer 安装nRF51822的支持包,相关芯片图标显示绿色则表示安装完成。
不过在安装完成之后点击options for target ,device选项没有出现nrf51822芯片,不过可以编译,生成hex文件。
3.解决头文件报错
在编译过程中可能会报找不到头文件的错误,这时只需要在C/C++里添加上文件路径即可。
4.通过 nRFgo Studio 擦除和烧写程序
通过nRFgo Studio可以直接烧写在nRF51822开发板上,在烧写之前我们可以先将板上程序擦除,这样方便观察现象,因为有的开发板出厂时是烧写了程序的。
注意板子需要上电烧写,烧写成功之后能过看到板子上的两个LED灯轮流点亮。但是这个工程没有选择上相应的芯片,所以对于后续的学习和开发及其的不方便,所以我又重新建立了一个新的工程。
四、新建nRF51822工程
1.选择nRF51822__xxAC芯片作为主控。
2.把流水灯中相关的源文件和头文件移植到工程目录中。
这里我选择直接把SDK下的source文件夹和Include文件夹全部复制到我的工程目录下,user里面存放的main.c,Project里面放置工程文件。
3.添加相应的文件头文件以及添加 NRF51 BOARD_PCA10001 定义。
若不添加 NRF51 BOARD_PCA10001这句话,在编译的时候编译器就会报错:“Board is not defind”。
4.设置J-link,在Debug选项中设置。
先选择J-LINK下载器,然后进入Settings,将port修改为SW,至于频率选择网上有的说要选择少于1MHz的,但是我试过选其他的也可以,不过我是直接选择的下方Auto Clk 。需要注意的是在使用keil 连接Jlink给NRF51822烧写程序的时候,记得要给NRF51822上电(前提是已经安装好Jlink驱动了),不然可能你会发现在右侧的SW Device处始终发现不了Jlink设备。
5.编译,下载。
最后通过编译成功就可以下载了,注意要记得选择生成Hex文件哟,然后也能很方便的在线调试了。
项目工程:提取码:a84i
Jlink驱动以及nRFgo Studio软件:提取码:88ua