Open meishaoming opened 5 years ago
/usr/local/
下。下载地址MacOS 下安装 nordic-nrf5x-command-line-tools
:
brew cask install nordic-nrf5x-command-line-tools
nordic-nrf5x-command-line-tools 里面有几个工具:
program
芯片使用手册 nRF5x Command Line Tools v9.4.0 User Guide v1.3
跑 blink 例子,我手上有一块开发板正好与 PCA10040 兼容。插好 JLink 之后,使用 nrfjprog
烧写:
cd nRF5_SDK_15.2.0_9412b96/examples/peripheral/blinky/hex
nrfjprog -f nrf52 --program blinky_pca10040.hex --sectorerase
nrfjprog -f nrf52 --reset
nrfjprog -f nrf52 --program s132_nrf52_6.1.0_softdevice.hex --sectorerase
后边带的参数:
--chiperase
先擦除整个芯片--sectorerase
先擦除需要烧写的区域--sectoranduicrerase
先擦除需要烧写的区域和 UICR 区域UICR - user information configuration registers
编译
cd /opt/nRF5_SDK/nRF5_SDK_15.2.0_9412b96/examples/ble_peripheral/ble_app_blinky/pca10040/s132/armgcc
make -j8
# 烧写协议栈,只需要烧写一次
make flash_softdevice
# 烧写 blinky 应用
make flash
nRF Connect
nRF Connect
,搜索到 Nordic_Blinky
设备,点击 Connect
LED Button Service
, 使能 Nordic Blinky Button
的 Nofitication。板子上按键会看到 Value 改变Nordic Blinky LED
写入 0x00 板子灯灭,写入 0x01 板子灯亮修改代码使能 RTT 打印输出。编辑头文件:
/opt/nRF5_SDK/nRF5_SDK_15.2.0_9412b96/examples/ble_peripheral/ble_app_blinky/pca10040/s132/config/sdk_config.h
找到 NRF_LOG_BACKEND_RTT_ENABLED
的一行,改成:
#define NRF_LOG_BACKEND_RTT_ENABLED 1
重新编译,烧写应用(只需要 make flash
)。
开两个终端,一个终端运行 JLinkExe:
JLinkExe -SelectEmuBySN 30000299 -If SWD -Device nRF52 -AutoConnect 1 -RTTTelnetPort 19021 -Speed 10000
另一个终端运行 JLinkRTTClient 接收 log:
JLinkRTTClient -RTTTelnetPort 19021
nordic 的 nRF52 系列有三款产品。这三款 MCU 分别定位 低、中、高端,见 nRF52 Series 介绍页面
SoftDevice
SoftDevice 是跑在 MCU 上的无线协议栈。命名规则:
这里我要用到的 S132 就是 BLE,主+从,nRF52。(另外有一个 S140 是 nRF52840 专用)。
S132 SoftDevice 当前最新版本 v6.2
nRF5 SDK
nRF5 SDK 也有三种:
我使用 nRF5 SDK,最新版本 v15.2。
SDK 下载解压后,其中带有 SoftDevice。nRF5 SDK v15.2.0 内置 S132 SoftDevice v6.1.0 。
以前踩过编译器版本的坑,特意注意了下 SDK 描述的编译器版本 GCC: GCC ARM Embedded 6.3 2017-q2-update,下载地址 。
这个版本 SDK 支持的板子:
nRF52832
总共 48 个引脚,除去 16 个特殊功能(如电源、调试、天线等)的引脚,余下的 32 个引脚都可作 GPIO 使用,编号为:P0.00 ~ P0.31。
各种封装型号:
内存布局: