基于Nordic nRF52840 Dongle的快速開發(fā)指南
nRF52840 Dongle最早由Nordic 公司在2018年推出,Nordic公司宣稱nRF52840 Dongle是一種小型,低成本的USB Dongle。官方提供了大量SDK供開發(fā)人員使用。本文主要介紹如何使用nRF52840 Dongle實(shí)現(xiàn)LED燈控實(shí)驗(yàn)。
一、開發(fā)環(huán)境及工具準(zhǔn)備
二、按鍵控制觸發(fā) LED燈
示例用的代碼均使用官方SDK中的串口透傳例程,本節(jié)將實(shí)現(xiàn)用按鍵對(duì)官方原廠的nRF52840 Dongle板載上的1個(gè)LED燈以及1個(gè)RGB三色燈進(jìn)行操作,也可以選用市面上的RF-DG-40A。操作步驟如下:
1.打開 SDK 中的示例工程:
..\..\nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_uart\pca10056\s140\arm5_no_packs
2.打開pca10056.h,首先修改相應(yīng)的引腳號(hào)。
3.打開工程后接下來我們開始添加按鍵控制相關(guān)的代碼,由于SDK集成了按鍵的初始化及相關(guān)回調(diào)函數(shù),我們只需要注冊按鍵事件即可。
4.依次進(jìn)上圖所示的函數(shù),在函數(shù)中添加框框所示的代碼,即可注冊按鍵的觸發(fā)事件,bsp_event_to_button_action_assign 函數(shù)的第一個(gè)參數(shù)3,是按鍵的ID號(hào)。
BSP_BUTTON_ACTION_PUSH表示按鍵按下,第三個(gè)參數(shù)就是觸發(fā)的事件名稱。通過這個(gè)函數(shù),就能完成當(dāng)按鍵按下的時(shí)候會(huì)觸發(fā)事件回調(diào)。
5.來看事件回調(diào)函數(shù)的修改。進(jìn)入bsp_event_handler函數(shù)后,添加如下紅框框所示的代碼,為事件回調(diào)函數(shù)添加處理的內(nèi)容,這里我們是做的事情是把LED逐個(gè)點(diǎn)亮。
6..接著添加LED燈的初始化函數(shù)就完成了我們按鍵點(diǎn)燈的程序編寫,如下:
7.最后點(diǎn)擊編譯后會(huì)生成 HEX文件,留待后續(xù)的燒錄到52840中。
三、燒錄過程
1.打開nRF Conect。
2.打開后左邊的框圖就是nRF52840的flash結(jié)構(gòu)圖。
3.紅色部分是nRF52840 Dongle的bootloader,橙色和深藍(lán)牙部分是MBR+協(xié)議棧,綠色部分就是我們的Dongle應(yīng)用層程序固件,注意這個(gè)固件這不開源的。接下來點(diǎn)擊Add HEX file添加我們剛才寫好的程序的hex文件,HEX路徑如下:
..\..\SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_uart\pca10056\s140\arm5_no_packs\_build 。
4.添加之后右邊會(huì)出現(xiàn)一條綠色的部分,這就是剛剛我們寫好程序所占用的空間大小,可以從中看到起始地址和末端地址,那么為什么不是從0地址開始了?是因?yàn)檫€需要添加softdevice也就是協(xié)議棧。
5.添加協(xié)議棧路徑為:
..\..\nRF5_SDK_15.3.0_59ac345\components\softdevice\s140\hex
6.添加完后框圖如下,橙色和深藍(lán)牙部分就是我們剛剛添加的協(xié)議棧和MBR。
7.燒錄(寫入)程序。點(diǎn)擊Write,就可以把右邊所有非空白的代碼區(qū)域給燒錄到nRF52840中。為了確定是否燒錄成功最好可以驗(yàn)證一下,如圖所示:
注意!這里的寫入是不會(huì)把bootloader給擦除的。當(dāng)燒錄成功后,如果要再次燒錄是需要進(jìn)入bootloader模式才能識(shí)別到COM口的,那么怎么進(jìn)入bootloader模式呢?只需要按下復(fù)位按鍵就行了,當(dāng)進(jìn)入bootloader模式時(shí),模塊會(huì)有紅燈閃爍提示,這時(shí)候模塊不會(huì)運(yùn)行應(yīng)用層程序,需要重新插拔后,模塊默認(rèn)會(huì)執(zhí)行應(yīng)用層程序。
8.驗(yàn)證。模塊燒錄成功后,就可以直接按下按鈕來驗(yàn)證剛才的程序,程序里的功能是每按下一次按鍵,就會(huì)切換LED燈,效果如下圖所示,循環(huán)依次點(diǎn)亮黃色,紅色,綠色,藍(lán)色LED燈。
四、通過手機(jī)APP點(diǎn)亮 LED燈
1.使用上一個(gè)示例工程,接著添加代碼,實(shí)現(xiàn)通過手機(jī)APP nRF Connect來下發(fā)指令數(shù)據(jù)控制板載的LED燈狀態(tài)。在nus_data_handler函數(shù)中添加和屏蔽如下代碼
添加圖中紅框中所示的代碼,并且把串口處理相關(guān)的代碼屏蔽掉,然后按照上面介紹的燒錄方法燒錄程序。
2.驗(yàn)證
打開nRF Connect 應(yīng)用,然后點(diǎn)擊掃描,找到Nordic_UART名稱的廣播設(shè)備,然后點(diǎn)擊連接
3.連接過后,在數(shù)據(jù)發(fā)送通道中發(fā)送字符1指令,表示打開板載的LED1燈,發(fā)送字符0,表示關(guān)閉板載的LED1燈。同時(shí)在接收通道會(huì)有相應(yīng)的回饋信息,如下圖: