nRF51822 入门必备教程(一篇搞定nRF51)
微雪 NRF51822 Eval Kit?
開箱檢測
部署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的廣播信號
與手機(jī)連接(演示藍(lán)牙轉(zhuǎn)串口程序)
a) 安裝CP2102驅(qū)動
b) 將BLE400的mini USB接口與PC機(jī)相連
c) 打開串口調(diào)試助手,選擇相應(yīng)的COM口,波特率為38400,8位數(shù)據(jù)位,1位停止位,點擊打開串口
d) 發(fā)送字符Y或y,如回顯Start...則表示藍(lán)牙已經(jīng)開始發(fā)送廣播數(shù)據(jù),此時可以看到BLE400的LED0亮。
注意:出廠程序的前一部分是模塊自檢,顯示的信息可忽略。
e) 手機(jī)端開啟藍(lán)牙功能。
f) 打開nRFToolbox,并點擊進(jìn)入UART,單擊CONNECT按鈕,在列表中選中Nordic_UART,此時BLE400的LED0滅/LED1亮,表明手機(jī)與模塊連接成功。
g) 按APP上的按鈕,在串口上可以收到相應(yīng)的字符。(APP上的按鈕信息需要用戶自己定義)
h) 點擊Show Log,在串口助手中,發(fā)送字符串abcdefghijklmnopqrs,在LOG列表中會打印相應(yīng)的信息。
注意:每當(dāng)藍(lán)牙收到19個字符,在APP上才會回顯數(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安裝選項。
c) 注意:如果SDK安裝報錯,請下載并安裝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)。
示例程序下載說明
示例程序下載方法對于不同的程序,有細(xì)微的差別。下面兩個小節(jié),將用blinky測試程序和ble_app_hrs測試程序為范例,進(jìn)行下載操作說明。
這兩個程序的區(qū)別在于:
-
編譯下載blinky測試程序,這個相當(dāng)于裸機(jī)程序,比較簡單。下載一個application就能使用。
-
編譯下載ble_app_hrs測試程序,這個可以理解為跑操作系統(tǒng)的程序,需要先下載softdevice,再下載application,才能使用。
編譯下載blinky_example測試程序
a) 開發(fā)板出廠時已預(yù)裝程序,下載其他程序之前,需使用nRFgo Studio全部擦除程序。首先點擊“nRF51 Programming”,之后點擊“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) 點擊Build圖標(biāo),或者使用快捷鍵F7編譯Blinky工程。
d) 點擊Download圖標(biāo),下載并運(yùn)行Blinky演示程序。可以看到LED開始閃爍。
| 圖2. 用Keil下載 |
注意:
這里可能會出現(xiàn)nrf51.h(119): error:? #5: cannot open source input file "core_cm0.h"報錯,解決辦法參考后面的常見問題。
由于Jlink固件與nordic SDK配合的問題,部分KEIL無法正常下載。
此時,請使用nRFgo Studio左下的“nRF51 Programming”,之后點擊“Program Application”選項框下載。
| 圖3. Program Application |
編譯下載ble_app_hrs測試程序
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)行編譯下載。
各程序功能簡介
a) 以下所有程序路徑為:<code path>\BLE4.0\nrf51822\Board\pca10001且所有跳線都已連接。
b) 下表中的步驟序號,請參考表格下方的備注欄。
c) 操作涉及步驟②的,下載方法請參考上文“編譯下載ble_app_hrs測試程序”。
d) 其他的程序下載方法請參考上文“編譯下載blinky_example測試程序”
| 程序名稱 | 操作與主要現(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 ③ 測試軟件為:LightBlue(iOS) ④ LightBlue中顯示相關(guān)信息 | |
| 表1. 示例程序功能介紹 | |
常見問題
問:?nRFgo Studio無法下載,出現(xiàn)報錯
This hex file has data in SoftDevice region. Try programming using "Program SoftDevice", or erase all before programming.
答:這是因為下載的程序地址有沖突,如果沒用到藍(lán)牙的程序不需要softdevice協(xié)議棧,可以erase all擦除flash后再下載,如果要用softdevice,那么應(yīng)該是softdevice版本不對,微雪提供的程序例程要用s110_nrf51822_6.0.0_softdevice.hex版本。可以用高版本的功能豐富些,對應(yīng)的應(yīng)用程序地址要跟softdevice一致,如下圖,softdevice是從0x00開始,接著是應(yīng)用程序。
?問: KEIL無法下載程序?
答: 首先檢查系統(tǒng)是否正常供電,之后嘗試用nRFgo Studio的nRF51 Prgramming驗證一下是否KEIL工程設(shè)置問題。
問: 例程編譯不通過,報錯nrf51.h(119): error:? #5: cannot open source input file "core_cm0.h"
修改包含的頭文件路徑為..\..\..\..\Include;..\..\..\..\Include\gcc即可? ?
問: nRFgo Studio可以下載,但KEIL下載報錯:?Insufficient RAM for Flash Algorithms !
答: 請確保正確安裝SDK,Flash Dodnload設(shè)置如下,修改RAM for Algorithms要跟前面IRAM一樣:
|
圖6. Flash Dodnload設(shè)置 |
問: 閱讀完該手冊后,如何進(jìn)一步學(xué)習(xí)?
答: 請仔細(xì)閱讀chip PDF文件夾中相關(guān)文檔,以及官方提供的參考手冊:
示例程序里的BLE4.0\Documentation\index.html。
頁面最后有官方提供的參考手冊以及程序,可以用瀏覽器翻譯瀏覽
示例程序里的BLE4.0\Documentation\index.html。
在線版:nRF51 SDK: Introduction
問:不同版本的SoftDevice有什么區(qū)別,如何獲取?
答:常見的有以下兩個版本,還會有一些特殊版本,可以實現(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用法
- 下一篇: 在Linux内核层面集成图形界面,技德操