nRF52832 開發記錄(一) - 入門及相關小問題的處理

前言

近段時間因項目須要開始接觸藍牙芯片 nRF52832,官方的文檔和 SDK 確實至關完善和易於上手,最開始是在 nRF5 SDK v15.3.0 作開發,不久前官方更新了 nRF5 SDK v16.0.0,後續文章也會以這個版本作記錄。git

開發環境安裝和配置

Keil MDK-ARM 5.29 下載連接 nRF Command Line Tools 10.5.0 包含 nRF 開發經常使用的工具和 J-Link 驅動 下載連接 ARM.CMSIS.4.5.0 下載連接 NordicSemiconductor.nRF_DeviceFamilyPack.8.27.1 下載連接 nRF5 SDK v16.0.0 下載連接 下載安裝 Keil 完成後,打開 Keil 中的 Pack Installer 手動導入 ARM.CMSIS.4.5.0 和 NordicSemiconductor.nRF_DeviceFamilyPack.8.27.1github

修改 nRF5 SDK v16.0.0 中例程爲 nRF_DeviceFamilyPack.8.27.1

SDK v16.0.0 中的例程 examples 依賴於 nRF_DeviceFamilyPack.8.27.0,而這個版本由於有 bug 已被撤回,因此須要手動修改成 nRF_DeviceFamilyPack.8.27.1,以 examples\ble_peripheral\ble_app_template 爲例,其中 pca10040 表明 nRF52832,打開 arm5_no_packswindows

提示安裝 nRF_DeviceFamilyPack.8.27.0 點擊取消app

點擊 Select Software Packs工具

將下面兩項分別修改spa

肯定後會彈出 Manage Run-Time Environment,去掉 Device 中 Startup 的勾並肯定.net

點擊 Manage Run-Time Environment,勾選 Startup 爲 8.27.1 並肯定,修改完成blog

Flash 分區的劃分

nRF52832 有 512KB 的 Flash 空間,以 4KB 爲一個頁,即爲分區和擦除的最小單位。按照功能可分爲如下幾種:ip

**不帶協議棧,不帶 bootloader **開發

分區 地址 大小
App + Free Space 0x0001 0000 - 0x0007 FFFF 508KB
MBR 0x0000 0000 - 0x0000 0FFF 4KB

**帶協議棧,不帶 bootloader **

分區 地址 大小
App + Free Space 0x0002 6000 - 0x0007 FFFF 360KB
SoftDevice 0x0000 1000 - 0x0002 5FFF 148KB
MBR 0x0000 0000 - 0x0000 0FFF 4KB

**帶協議棧和 bootloader **

分區 地址 大小
BL Settings 0x0007 F000 - 0x0007 FFFF 4KB
MBR Params 0x0007 E000 - 0x0007 EFFF 4KB
Bootloader 0x0007 8000 - 0x0007 DFFF 24KB
App + Free Space 0x0002 6000 - 0x0007 7FFF 328KB
SoftDevice 0x0000 1000 - 0x0002 5FFF 148KB
MBR 0x0000 0000 - 0x0000 0FFF 4KB

使用了協議棧 SoftDevice 的項目工程須要燒錄一次 SoftDevice,再燒錄用戶程序,即選擇 flash_s132_nrf52_7.0.1_softdevice 點 Download 燒錄後,再切換回 nrf52832_xxaa 燒錄用戶程序,通常協議棧只需燒錄一次

燒錄協議棧後該區域會被鎖定,出現沒法再次下載的錯誤,此時可用 J-Link 驅動中的 SEGGER J-Flash Lite 的 Erase Chip 進行整片擦除

相關文章
相關標籤/搜索