TShopping

 找回密碼
 註冊
搜索
查看: 7754|回復: 0
打印 上一主題 下一主題

[分享] nRF52840 Dongle 的SDK example修改及build

[複製鏈接]
跳轉到指定樓層
1#
發表於 2020-9-28 21:54:03 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook

今天買了nRF52840 Dongle (PCA10059) , 如下圖, 體積小, 便宜的類隨身碟裝置, 可支援藍牙5等多種協定  (a small, low-cost USB dongle that supports Bluetooth 5, Bluetooth mesh, Thread, ZigBee, 802.15.4, ANT and 2.4 GHz proprietary protocols.)

我主要是用來開發BLE協定的應用使用, 特別是Nordic nRF Connect for Desktop這套由Nordic官方開發的程式, 以前常常在手機上使用, 可以查看附近BLE裝置的Advertising封包, 也可以連入BLE裝置, 查看GATT的服務和特徵值並且可以進行讀取或寫入等動作。
這樣功能的應用程式, 想要在桌上型電腦上使用, 想來就非其桌上電腦版莫属, 不過在電腦上使用必須搭配Nordic的開發板, 而nRF52840 Dongle就是一個最合適的選擇! 因為便宜又不佔空間, 找個USB插座, 插下就可以使用了。


但除了拿來當工具使用, 它其實也是一張迷你的開發板, 只是沒有附J-Link的功能而已, 沒有J-Link的壞處就是不能做即時的除錯, 沒有逐步執行的功能。程式寫完不知道對不對, 只能直接燒到板子上的Flash去執行, 再看看行為對不對。這其實和Arduino Uno的開發模式一樣, 其實也是用得很開心。

要開發程式, 官方給了nRF5 SDK, 下載回來解壓縮後, 得到一個目錄, 其下有許多子目錄: components, config, documentation, examples, external, ... 。其中examples目錄下有802_15_4, ant, ble_central, ble_peripheral, connectivity, crypto, dfu, dtm, iot, peripheral, ...等目錄, 可以說大約是以協定來區分, 例如要BLE的範例程式, 那就找ble開頭的那幾個子目錄就對了, 如果只要看週邊IO動作的範例程式, 打開peripheral目錄就是了。

從最簡單的閃爍LED的程式來看, peripheral/blinky目錄打開後, 可以看到hex, pca10040, pca10040e, pca10056, pca10056e, pca10059等子目錄, 其中hex目錄裡面放的是已經編譯好的hex檔, 而且放了許多適用不同開發板的檔案。如果只是想試一下開發板的功能正不正常, 可以用這裡的hex檔直接燒錄, 再看板子上LED閃爍的狀況就能判斷了。其他pca開頭的目錄則是給這些開發板用的範例程式。以nRF52840 Dongle (PCA10059)這個開發板來說, 就是打開pca10059目錄就對了。




打開後看到mbr目錄, 再打開, 就看到arm4, arm5_no_packs, armgcc, config, iar, ses等目錄。這幾個目錄其實是給不同的開發工具使用的專案:

arm4 是ARM KEIL MDK version 4
arm5_no_packs 是ARM KEIL MDK version 5
armgcc 是GNU ARM EMBEDDED Toolchain
iar 是IAR Embedded Workbench
ses則是Segger Embedded Studio for ARM

當然大家就看自己想用那套就用那套吧!

只是奇怪的是, 對於nRF52840 Dongle (PCA10059)這個小開發板來說, 並不是每個範例裡都有這個板子的專案可用! 這真是令人又警又喜的, Nordic nRF SDK支援了這麼多的開發工具, 但是對PCA10059又這麼的不太給力.

不過, Nordic DevZone的文章nrf52840-dongle-programming-tutorial倒是給了我一個希望, 文章作者Einar Thorsrud說, 基本上只要改兩個地方就可以把pca10056的專案改成適合pca10059使用。
他以ses開發工具為例說明:

1. Preprocessor Definitions: 將BOARD_PCA10056改為BOARD_PCA10059


2. linker configuration:
FLASH_START=0x1000
FLASH_SIZE=0xDF000
RAM_START=0x20000008
RAM_SIZE=0x3FFF8



所以, 來看個實例: examples/peripheral/blinky_systick這個目錄下, 果真是沒有pca10059目錄的, 那麼我們就來跟著實作一下, 把pca10056目錄複製貼上, 並改名為pca10059。再進入pca10059目錄, 再進入blank目錄, 首先跟著Einar Thorsrud用Segger Embedded Studio做一次, 進入ses目錄, 找到其專案檔(blinky_systick_pca10056.emProject), 當然, 專案檔的檔名看不順眼, 可以自己先改一下名子, 再點擊打開, 然後在Segger Embedded Studio環境中, 點選功能表Project -> Options...出現的小視窗就和上面的兩個圖是一樣的。此時先到左上角的下拉選單, 先選成"Common", 然後就可以依上面所說的兩個要修改的地方去修改。

當你修改好, 編譯成功, 燒錄到板子上, 應該可以成功執行


燒錄到nRF52840 Dongle(SoftDevices必要)打開電腦nRF Connect 選 program
燒錄前找到SoftDevices目錄放入program
  1. SDK_X.X/nRF5SDK17009d13099\nRF5_SDK_17.0.0_9d13099\components\softdevice\s140\hex\s140_nrf52_7.0.1_softdevice.hex
複製代碼


並選blinky範例放入program
點選Write
  1. sdk_X.X\nRF5SDK17009d13099\nRF5_SDK_17.0.0_9d13099\examples\ble_peripheral\ble_app_blinky\pca10059\s140\ses\Output\Release\Exe\ble_app_blinky_pca10059_s140.hex
複製代碼
燒錄好後,訊息顯示reset nRF52840 Dongle



燒錄完成



手機打開nrf blinky就可連線了(應用程式的藍芽跟位置要確定是打開的)

參考文章


網頁設計,網站架設 ,網路行銷,網頁優化,SEO - NetYea 網頁設計




 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-24 20:13 , Processed in 0.118940 second(s), 25 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表