日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nRF51822 入门必备教程(一篇搞定nRF51)

發(fā)布時(shí)間:2024/3/24 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nRF51822 入门必备教程(一篇搞定nRF51) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

微雪 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ā)送字符Yy,如回顯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_exampleLED閃爍
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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。