芯片:DA 14580
SDK: 5.0.4
路径: 5.0.4\projects\target_apps\ble_examples\prox_reporter
发现问题:
程序编译仿真时,总会中断在此: nmi_handler.c/
if ((GetWord16(SYS_STAT_REG) & DBG_IS_UP) == DBG_IS_UP)
__asm("BKPT #0\n");
原因:
芯片只焊了一个16M的主晶振,有32K的 外部晶振, 需要做如下设置:
da1458x_config_advanced.h中: 45行
LP_CLK_XTAL32是外部32k晶振
LP_CLK_RCX20选择内部RC;
改为内部晶振后文件解决。
Dialog 官方针对3种不同的Demo板,
在da1458x_periph_setup.h 配置中,做了不同的选项:
<1=> Basic 基本版
<2=> Pro 升级版
<3=> Expert 专家版
而针对 Pro 升级版 和 其他两种的 板 做了不同的
芯片内部电容的值调整:
在arch_system.c 做校准设置
DEFAULT_XTAL16M_TRIM_VALUE :调整芯片内部电容的值,用来匹配外部16M的晶振。目的在于准确输出16M
参考:https://support.dialog-semiconductor.com/comment/8411