NORDIC BLE SoC 软件入门-52810开发注意事项
从SDK14.1.0开始,SDK支持在使用nRF52832的PCA10040板上开发nRF52810 SoC。nRF52810 IC是nRF52832的子集,具有较小的RAM和闪存,并且具有较少的外围资源。用户可以使用nRF52832来模拟nRF52810的功能。
用户可以使用SDK15.3(建议SDK15.3及以后版本)为nRF52810开发自己的应用程序。
其SDK中的项目名称为:“ pca10040e”,默认例程实际运行的板子为PCA10040(上面的芯片是52832哦,用来模拟52810的!)
下面以SDK16.0为例进行介绍。
如SDK16的examples\ble_peripheral\ble_app_uart\pca10040e\s112 项目打开之后,再打开option选项,我们可以看到它已经是nRF52810的项目了。(KEIL为例)
但是,(再强调一次)开发板pca10040e的项目的硬件是基于nRF52832(pca10040板)运行的,只是项目中修改了一些配置使nRF52832来兼容。
如果将开发板pca10040上的nRF52832-QFAA替换为nRF52810-QFAA,则实际运行起来会存在一些问题。为了能让项目在nRF52810上运行起来,需要经过一些修改。
1.去除全局宏定义:DEVELOP_IN_NRF52832 ,NRF52,NRFX_COREDEP_DELAY_US_LOOP_CYCLES=3 。比如可以在宏定义前面加上一个字符使其无效,如下图中加入小写字符‘x’。
注意需要修改在C/C++C和Asm两种文件格式的宏定义。如下图是KEIL中的选项,Segger Embedded Studio的修改的位置参考:NORDIC BLE SoC 开发环境 – 编译器。
NRFX_COREDEP_DELAY_US_LOOP_CYCLES 宏定义的作用主要体现在delay的准确度上,SDK的代码中做了一些处理,如下图所示,即使完全删除也没关系。不放心的用户可以将宏定义改成NRFX_COREDEP_DELAY_US_LOOP_CYCLES=7 。
2.确认RAM和Flash的起始地址和使用大小。如SDK16的examples\ble_peripheral\ble_app_uart\pca10040e\s112例程的配置是默认正确的。
但如果使用其他工程/SDK,请检查配置,如果不符合52810的空间配置,请修改。
0x19000是应用层Flash起始地址,0x17000是应用程序的Flash空间限制,加起来刚好192KB。
0x200022c8是应用层RAM的起始地址,0x3D38是应用程序的RAM空间限制,加起来刚好24KB。
3.检查启动文件是否正确。如SDK16的examples\ble_peripheral\ble_app_uart\pca10040e\s112例程的启动文件为“arm_startup_nrf52810.s” 和 “system_nrf52810.c” ,默认是正确的。
但如果使用其他工程/SDK,请检查配置。
nRF52832 与 nRF52810 需要注意的一些差别
- DMA的长度。nRF52832的外设DMA长度只有8bit,而52810是10bit。