上家公司不出意外的财务问题,裁员了,拿了4w多的补偿金果断跑路,美滋滋
跑题了,新公司看着做ble的经验招了进来,第一个项目是做NRF52811的,NRF52811是nordic比较新的soc,还支持了AOA/AOD(代理说不支持,芯片说支持,鬼知道呢)
然后移植工程遇到了很多问题,在此记录一下
首先工程用的还是老SDK S112+SDK17(NSC去死系列)
先说说移植的步骤吧,这里大量参考了一位大佬的内容,传送楼如下
【Nordic】nRF52810 BLE Central移植_ZHONGCAI0901的博客-CSDN博客_从nrf51822移植到nrf52810
大佬使用PCA10400做的,我们这里用PCA10100e做(我也试过PCA10400,没成功呜呜呜)
PCA10100e是NRF52820的,基本的改target就不用说了,主要是rom和ram大小
0x19000,使用nrfgo studio参考的
大小则是用0x30000-0x19000计算,ram则是参考log修改即可
ram的话,我随便找了一个工程参考,后面用log看着修改
C++那页的参数修改,不详细解释(主要是我也不全部都知道原理,直接放出结果,有大佬知道欢迎指正)
原内容:
APP_TIMER_V2 APP_TIMER_V2_RTC1_ENABLED BOARD_PCA10100 CONFIG_GPIO_AS_PINRESET DEVELOP_IN_NRF52833 FLOAT_ABI_SOFT NRF52820_XXAA NRFX_COREDEP_DELAY_US_LOOP_CYCLES=3 NRF_SD_BLE_API_VERSION=7 S112 SOFTDEVICE_PRESENT __HEAP_SIZE=4096 __STACK_SIZE=4096
修改后内容:
DEBUG APP_TIMER_V2 APP_TIMER_V2_RTC1_ENABLED BOARD_PCA10100 CONFIG_GPIO_AS_PINRESET DEVELOP_IN_NRF52811 FLOAT_ABI_SOFT NRF52811_XXAA NRFX_COREDEP_DELAY_US_LOOP_CYCLES=3 NRF_SD_BLE_API_VERSION=7 S112 SOFTDEVICE_PRESENT __HEAP_SIZE=4096 __STACK_SIZE=4096
加了DEBUG宏主要为了后面修改ram用
然后默认的外部晶振启动失败,卡死在协议栈启动,因为那会儿不确定模块是不是带了外部晶振,就改了内部晶振
// <0=> NRF_CLOCK_LF_SRC_RC
// <1=> NRF_CLOCK_LF_SRC_XTAL
// <2=> NRF_CLOCK_LF_SRC_SYNTH
#ifndef NRF_SDH_CLOCK_LF_SRC
#define NRF_SDH_CLOCK_LF_SRC 0
#endif
但是还是出了错误
折腾了半天,觉得还是时钟参数的问题,搜了一下,原因是这个
关于nrf52832配置低频时钟来源 | 码农家园 (codenong.com)
所以修改了时钟源的几个宏,就可以正常启动了
之前外部晶振起振失败,怀疑也是精度的问题,改天验证一下发出来
最后贴上一个debug的好用方法
NRF52832 SDK15.2.0致命错误debug排查定位_仙剑情缘的博客-CSDN博客_nrf52832 fatal error
本人基本都按这个搞,非常好用
这次用52811主要是用到long range,后续应该还有开坑和填坑比较,如果没有,大概就是一次性搞定了