nRF51822 入门必备教程(一篇搞定nRF51)
微雪 NRF51822 Eval Kit?
開箱檢測(cè)
部署PC端開發(fā)環(huán)境
-
nRFgo Studio v1.14或更高版本
-
Keil MDK-ARM Lite v4.54或更高版本
-
J-Link Software v4.52b或更高版本
下載手機(jī)端app
-
IOS系統(tǒng):進(jìn)入App Store并搜索“nRFToolbox”
-
Android系統(tǒng)(4.3或更高):下載nRFToolbox,解壓后安裝即可
注意:藍(lán)牙4.0和傳統(tǒng)藍(lán)牙的開發(fā)方法不同,首先需要手機(jī)支持藍(lán)牙4.0,并且安裝了相應(yīng)的APP,才可以搜到藍(lán)牙4.0的廣播信號(hào)
與手機(jī)連接(演示藍(lán)牙轉(zhuǎn)串口程序)
a) 安裝CP2102驅(qū)動(dòng)
b) 將BLE400的mini USB接口與PC機(jī)相連
c) 打開串口調(diào)試助手,選擇相應(yīng)的COM口,波特率為38400,8位數(shù)據(jù)位,1位停止位,點(diǎn)擊打開串口
d) 發(fā)送字符Y或y,如回顯Start...則表示藍(lán)牙已經(jīng)開始發(fā)送廣播數(shù)據(jù),此時(shí)可以看到BLE400的LED0亮。
注意:出廠程序的前一部分是模塊自檢,顯示的信息可忽略。
e) 手機(jī)端開啟藍(lán)牙功能。
f) 打開nRFToolbox,并點(diǎn)擊進(jìn)入UART,單擊CONNECT按鈕,在列表中選中Nordic_UART,此時(shí)BLE400的LED0滅/LED1亮,表明手機(jī)與模塊連接成功。
g) 按APP上的按鈕,在串口上可以收到相應(yīng)的字符。(APP上的按鈕信息需要用戶自己定義)
h) 點(diǎn)擊Show Log,在串口助手中,發(fā)送字符串abcdefghijklmnopqrs,在LOG列表中會(huì)打印相應(yīng)的信息。
注意:每當(dāng)藍(lán)牙收到19個(gè)字符,在APP上才會(huì)回顯數(shù)
據(jù)。
程序說明
安裝SDK
a) 安裝Keil MDK-ARM(v4.54以上)和J-Link for Windows。
b) 保存nRF51 SDK,打開nrf51_sdk_v5_2_0_xxxxx.msi進(jìn)行安裝,并確保選擇了KeilMDK-ARM安裝選項(xiàng)。
c) 注意:如果SDK安裝報(bào)錯(cuò),請(qǐng)下載并安裝Microsoft .NET Framework 3.5。
d) 安裝nRFgo Studio(32位系統(tǒng)安裝nrfgostudio_win-32_1.15.1_installer.msi,64位系統(tǒng)安裝nrfgostudio_win-64_1.15.1_installer.msi)。
示例程序下載說明
示例程序下載方法對(duì)于不同的程序,有細(xì)微的差別。下面兩個(gè)小節(jié),將用blinky測(cè)試程序和ble_app_hrs測(cè)試程序?yàn)榉独?#xff0c;進(jìn)行下載操作說明。
這兩個(gè)程序的區(qū)別在于:
-
編譯下載blinky測(cè)試程序,這個(gè)相當(dāng)于裸機(jī)程序,比較簡(jiǎn)單。下載一個(gè)application就能使用。
-
編譯下載ble_app_hrs測(cè)試程序,這個(gè)可以理解為跑操作系統(tǒng)的程序,需要先下載softdevice,再下載application,才能使用。
編譯下載blinky_example測(cè)試程序
a) 開發(fā)板出廠時(shí)已預(yù)裝程序,下載其他程序之前,需使用nRFgo Studio全部擦除程序。首先點(diǎn)擊“nRF51 Programming”,之后點(diǎn)擊“Erase all”全部擦除后方可燒寫其它程序。
| 圖1. Erase all步驟 |
b) 在Keil μVision中打開Blinky工程,其路徑為: <KEIL path> \ARM\Device\Nordic\nRF51822\Board\PCA10001\blinky_example\arm\blinky.uvproj
或 ...\code\BLE4.0\nrf51822\Board\pca10001\blinky_example\arm\blinky.uvproj
c) 點(diǎn)擊Build圖標(biāo),或者使用快捷鍵F7編譯Blinky工程。
d) 點(diǎn)擊Download圖標(biāo),下載并運(yùn)行Blinky演示程序。可以看到LED開始閃爍。
| 圖2. 用Keil下載 |
注意:
這里可能會(huì)出現(xiàn)nrf51.h(119): error:? #5: cannot open source input file "core_cm0.h"報(bào)錯(cuò),解決辦法參考后面的常見問題。
由于Jlink固件與nordic SDK配合的問題,部分KEIL無法正常下載。
此時(shí),請(qǐng)使用nRFgo Studio左下的“nRF51 Programming”,之后點(diǎn)擊“Program Application”選項(xiàng)框下載。
| 圖3. Program Application |
編譯下載ble_app_hrs測(cè)試程序
a) 下載S110 nRF51822 SoftDevice(藍(lán)牙協(xié)議棧):
s110_nrf51822_6.0.0-單片機(jī)文檔類資源-CSDN下載
選擇nRF51 Programming > Program SoftDevice> Browse(選擇相應(yīng)的藍(lán)牙協(xié)議棧) > Program(等待藍(lán)牙協(xié)議棧下載完畢)。(我們使用的協(xié)議棧文件s110_nrf51822_6.0.0_softdevice.hex,是通過解壓\Software\s110_nrf51822_6.0.0.zip得到的。)
| 圖4. Program SoftDevice |
b) 進(jìn)入<KEIL path> \ARM\Device\Nordic\nrf51822\Board\pca10001\s110\ble_app_hrs\arm 或<code path>\BLE4.0\nrf51822\Board\pca10001\s110\ble_app_hrs\arm
打開Keil工程文件
c) 按上面的提到的進(jìn)行編譯下載。
各程序功能簡(jiǎn)介
a) 以下所有程序路徑為:<code path>\BLE4.0\nrf51822\Board\pca10001且所有跳線都已連接。
b) 下表中的步驟序號(hào),請(qǐng)參考表格下方的備注欄。
c) 操作涉及步驟②的,下載方法請(qǐng)參考上文“編譯下載ble_app_hrs測(cè)試程序”。
d) 其他的程序下載方法請(qǐng)參考上文“編譯下載blinky_example測(cè)試程序”
| 程序名稱 | 操作與主要現(xiàn)象 |
| blinky_example | LED閃爍 |
| uart_example | ①,回顯串口發(fā)送信息 |
| at45dbxx_example | ①,將AT45DBXX DataFlash Board接到SPI接口 串口將打印該模塊的ID |
| at24cxx_example | ①,將AT24CXX EEPROM Board接到I2C接口 按開發(fā)板的KEY1,串口將打印指定地址的數(shù)據(jù) 按開發(fā)板的KEY2,指定地址的數(shù)據(jù)加1 |
| button_radio_example\led_radio_example | 準(zhǔn)備兩塊開發(fā)板,分別稱之為A和B 開發(fā)板A下載button_radio_example 開發(fā)板B下載led_radio_example 按下開發(fā)板A的KEY1,開發(fā)板B的LED0閃爍 按下開發(fā)板A的KEY2,開發(fā)板B的LED1閃爍 |
| ble_app_beacon | ②,③,④ |
| ble_app_proximity | ②,③,④ |
| ble_app_uart | ①,②,③,④,手機(jī)的數(shù)據(jù)發(fā)到串口上 |
| 備注: ① 通過數(shù)據(jù)線將開發(fā)板與PC相連,打開串口調(diào)試助手,波特率為38400,8位數(shù)據(jù)位,1位停止位 ② 下載Program SoftDevice ③ 測(cè)試軟件為:LightBlue(iOS) ④ LightBlue中顯示相關(guān)信息 | |
| 表1. 示例程序功能介紹 | |
常見問題
問:?nRFgo Studio無法下載,出現(xiàn)報(bào)錯(cuò)
This hex file has data in SoftDevice region. Try programming using "Program SoftDevice", or erase all before programming.
答:這是因?yàn)橄螺d的程序地址有沖突,如果沒用到藍(lán)牙的程序不需要softdevice協(xié)議棧,可以erase all擦除flash后再下載,如果要用softdevice,那么應(yīng)該是softdevice版本不對(duì),微雪提供的程序例程要用s110_nrf51822_6.0.0_softdevice.hex版本??梢杂酶甙姹镜墓δ茇S富些,對(duì)應(yīng)的應(yīng)用程序地址要跟softdevice一致,如下圖,softdevice是從0x00開始,接著是應(yīng)用程序。
?問: KEIL無法下載程序?
答: 首先檢查系統(tǒng)是否正常供電,之后嘗試用nRFgo Studio的nRF51 Prgramming驗(yàn)證一下是否KEIL工程設(shè)置問題。
問: 例程編譯不通過,報(bào)錯(cuò)nrf51.h(119): error:? #5: cannot open source input file "core_cm0.h"
修改包含的頭文件路徑為..\..\..\..\Include;..\..\..\..\Include\gcc即可? ?
問: nRFgo Studio可以下載,但KEIL下載報(bào)錯(cuò):?Insufficient RAM for Flash Algorithms !
答: 請(qǐng)確保正確安裝SDK,Flash Dodnload設(shè)置如下,修改RAM for Algorithms要跟前面IRAM一樣:
|
圖6. Flash Dodnload設(shè)置 |
問: 閱讀完該手冊(cè)后,如何進(jìn)一步學(xué)習(xí)?
答: 請(qǐng)仔細(xì)閱讀chip PDF文件夾中相關(guān)文檔,以及官方提供的參考手冊(cè):
示例程序里的BLE4.0\Documentation\index.html。
頁面最后有官方提供的參考手冊(cè)以及程序,可以用瀏覽器翻譯瀏覽
示例程序里的BLE4.0\Documentation\index.html。
在線版:nRF51 SDK: Introduction
問:不同版本的SoftDevice有什么區(qū)別,如何獲取?
答:常見的有以下兩個(gè)版本,還會(huì)有一些特殊版本,可以實(shí)現(xiàn)各種你想要的藍(lán)牙功能,所以推薦你下載最新的版本,比如nRF51系列,推薦使用SDK12.3.0(12.3.0已經(jīng)是nRF51能支持的最高版本SDK了)
-
比如S110,表示只支持從設(shè)備模式的nRF51 BLE協(xié)議棧?
-
比如S130,表示既支持從設(shè)備模式又支持主設(shè)備模式的nRF51 BLE協(xié)議棧
不同sdk,SoftDevice版本獲取鏈接:nRF5 SDK downloads - nordicsemi.com
nrf51_sdk常用API
IO口控制
#include?"boards.h"#include?"nrf51_bitfields.h"static?__INLINE?void?nrf_gpio_cfg_output(uint32_t?pin_number)??//首先初始化IO口static?__INLINE?void?nrf_gpio_pin_set(uint32_t?pin_number)??//IO口開控制static?__INLINE?void?nrf_gpio_pin_clear(uint32_t?pin_number)??//IO口關(guān)控制static?__INLINE?void?nrf_gpio_pin_toggle(uint32_t?pin_number)??//IO口開關(guān)切換static?__INLINE?void?nrf_gpio_pin_write(uint32_t?pin_number,?uint32_t?value)??//IO口開關(guān)串口通訊
#include?"simple_uart.h"? ?//加載例程nrf51822\Source\simple_uart.c的文件simple_uart_config(RTS_PIN_NUMBER, TX_PIN_NUMBER, CTS_PIN_NUMBER, RX_PIN_NUMBER, HWFC);? //一句輕松初始化void?simple_uart_putstring(const?uint8_t?*str)? //字符串打印,相關(guān)API?simple_uart.c文件查看printf打印
//simple_uart.c文件加入此函數(shù)#include?"stdio.h"? ?//keil 設(shè)置里勾選MicroLIB?int?fputc(int?ch,?FILE?*f)? ?{simple_uart_put(ch);return?(ch);}總結(jié)
以上是生活随笔為你收集整理的nRF51822 入门必备教程(一篇搞定nRF51)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python附加篇cpython用法
- 下一篇: iPhone和iPad开发书籍大全