nordic nrf5340 使用问题记录
- NCS2.9 使用SMP DFU服务实现OTA
ncs2.9中官方对底层驱动又做了升级,单独使用一个进程对SMP进行初始化,
在将BLE初始化为slave,并广播后,只需在prj中添加以下配置:
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
- NCS2.3 使用SMP DFU服务实现OTA
同上,在将BLE初始化为slave,并广播后
添加以下配置:
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP=y
CONFIG_NEWLIB_LIBC=y
#Enable SMP Server
CONFIG_MCUMGR=y
CONFIG_MCUMGR_GRP_IMG=y
# CONFIG_MCUMGR_GRP_IMG dependencies
CONFIG_IMG_MANAGER=y
CONFIG_MCUMGR_CMD_STAT_MGMT=y
- NVS与BLE同时使用时,NVS写入返回成功但实际写入失败?
论坛上也有相关问题记录:
因为BLE初始化时,NVS区域与用户区域重叠,导致写入失败。
解决方法:在根目录下新建一个pm_static.yml(flash区域分配文件),内容如下:
user_storage:
address: 0xfe000
size: 0x2000
end_address: 0x100000
placement:
before:
- end
region: flash_primary
在NVS初始化时,使用user_storage区域:
#define STORAGE_NODE_LABEL user_storage
static struct nvs_fs UserFs;
K_MUTEX_DEFINE(NvsWrite_Mutex);
K_MUTEX_DEFINE(NvsRead_Mutex);
//nvs driver initital
int nvs_driver_init(void)
{
int rc;
struct flash_pages_info info;
UserFs.flash_device = FLASH_AREA_DEVICE(STORAGE_NODE_LABEL);
if (!device_is_ready(UserFs.flash_device)) {
printk("Flash device %s is not ready\n", UserFs.flash_device->name);
return -EINVAL;
}
UserFs.offset = FLASH_AREA_OFFSET(STORAGE_NODE_LABEL);
rc = flash_get_page_info_by_offs(UserFs.flash_device, UserFs.offset, &info);
if (rc) {
printk("Unable to get page info\n");
return -EINVAL;
}
UserFs.sector_size = info.size;
UserFs.sector_count = 2U;
LOG_INF("NVS sector size=%d sector count=%d\n", UserFs.sector_size, UserFs.sector_count);
rc = nvs_mount(&UserFs);
if (rc)
{
LOG_ERR("NVS Init failed %d", rc);
return -EINVAL;
}
return 0;
}
- 使用NCS2.1.2,项目编译成功后带宽<5K
解决方法:在项目目录下添加child_image目录。并将该目录下的mcuboot文件中的KEY_FILE目录改成本地实际目录。再重新全编译一次。
- 使用NCS2.9带宽异常
解决方法:在网络核添加以下配置:
CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT=15000
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
CONFIG_BT_BUF_ACL_TX_SIZE=502
CONFIG_BT_BUF_ACL_RX_SIZE=502
CONFIG_BT_MAX_CONN=2
- Nordic nrf5340使用内部晶振:
在app核和net核以及boot(如有)的prj中添加以下配置:
CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y
- Nordic nrf5340修改内部负载电容容值:
CONFIG_SOC_HFXO_CAP_INT_VALUE_X2=20
CONFIG_SOC_HFXO_CAP_DEFAULT=n
CONFIG_SOC_HFXO_CAP_EXTERNAL=n
CONFIG_SOC_HFXO_CAP_INTERNAL=y

浙公网安备 33010602011771号