从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 需要注意的一些差别

  1. DMA的长度。nRF52832的外设DMA长度只有8bit,而52810是10bit。

 

 

 

发表评论