nrf52810为nordic支持蓝牙 5.0性价比最高的一款芯片,不过这个芯片的rom不得不吐槽下,只有192KB,不知道为什么定了个192,而不是大家所熟悉的256KB,估计价格是个原因吧,15.2的协议栈中S112 softdevice占用了100KB,只剩92KB了,后面还要减掉bootloader的大小,所以给用户使用的空间并不大,15.2中pca10040e为52810的工程
1,需要用到的工具
(1)GCC,下载路径 https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads/6-2017-q2-update
软件安装好,需要把安装路径下bin的路径,添加到环境变量中,根据自己安装的路径找到添加C:\ProgramFiles (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin
(2) 安装make,下载路径 https://www.gnu.org/software/make/
软件安装好,需要把安装路径下bin的路径,添加到环境变量中,根据自己安装的路径找到添加C:\ProgramFiles (x86)\GnuWin32\bin
(3)python-2.7.12.amd64.msi下载路径 https://www.python.org/downloads/
双击python-2.7.12.amd64.msi安装 ,安装完毕后,把python的路径加入到环境变量中
-
C:\Python27\
-
C:\Python27\Scripts
(4)
以下软件:nrfjprog.exe,mergehex.exe 这两个软件需要安装 nRFgo Studio的安装目录下找到
C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin
2,
进入命令行窗口,并到Python路径,输入python -m pip install nrfutil
nrfutil会被安装到C:\Python27\Scripts目录下, 我安装的nrfutil版本是4.0.0,后面安装可能会更新
3,缺少uECC.h
下载micro-ecc:到官网下载micro-ecc :https://github.com/kmackay/micro-ecc
把micro-ecc文件夹复制到
nRF5_SDK_15.2.0_9412b96\external\micro-ecc目录下
4,缺少micro_ecc_lib_nrf52.lib
双击批处理文件nRF5_SDK_15.2.0_9412b96\external\micro-ecc\build_all.bat即可生成lib文件;
把生成的micro_ecc_lib_nrf52.lib添加到工程即可,
5,编译报错
#error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it",
缺少秘钥造成的,需要大家添加一个秘钥上去
写一个批处理文件
nrfutil.exe keys generate private.pem
nrfutil.exe keys display --key pk --format code private.pem --out_file dfu_public_key.c
将nRF5_SDK_15.2.0_9412b96\examples\dfu目录下的dfu_public_key.c直接替换掉
6,烧录协议栈,APP,bootloader
app为nRF5_SDK_15.2.0_9412b96\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040e\s112\arm5_no_packs目录下的工程,大家直接编译就OK了
(1) 先要生成bootloader setting
执行nrfutil.exe settings generate --family NRF52810 --application nrf52810_xxaa.hex --application-version 3 --bootloader- version 2 --bl-settings-version 1 bootloader_settings.hex
(2)合并bootloader和协议栈
mergehex.exe --merge nrf52810_xxaa_bootloader_s112.hex s112_nrf52_6.1.0_softdevice.hex --output btAndSd.hex
(3)合并 btAndSd.hex和APP
mergehex.exe --merge btAndSd.hex nrf52810_xxaa.hex --output btAndSdAndApp.hex
(4)合并btAndSdAndApp.hex和bootloader_settings.hex
mergehex.exe --merge btAndSdAndApp.hex bootloader_settings.hex --output burn.hex
(5)烧录
nrfjprog -f NRF52 --eraseall
nrfjprog --program "burn.hex" --verify
nrfjprog -f NRF52 --reset
pause
烧录完成后拿手机搜索下,可以看到如下设备的广播
7,生成空升文件
nrfutil pkg generate --hw-version 52 --sd-req 0xb0 --application-version 0xff --application nrf52810_xxaa.hex --key-file private.pem nrf52810_xxaa.zip
private.pem文件为第5步中生成的
8,开始用手机空升设备
(1)连接蓝牙
(2)点击图示地方
(3)继续点击图示
(4)点击send
此时手机蓝牙会自动断开,从新搜索会看到名为DFUTARG的设备,连接成功后点击右上角的DFU图标
然后选择空升文件,开始升级
如果安卓升及失败请用最新4.2及以为的nrf connect,4.1版本会升级失败
烧录及生成各种文件下载地址:
https://download.csdn.net/download/htaijqq/10792989
nrf connect 4.2下载地址