nordic nrf5340 使用问题记录

  1. NCS2.9 使用SMP DFU服务实现OTA

ncs2.9中官方对底层驱动又做了升级,单独使用一个进程对SMP进行初始化,

在将BLE初始化为slave,并广播后,只需在prj中添加以下配置:

CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
  1. 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
  1. NVS与BLE同时使用时,NVS写入返回成功但实际写入失败?

论坛上也有相关问题记录:

https://devzone.nordicsemi.com/f/nordic-q-a/77781/problem-to-read-back-flash-with-nvs-when-concurrent-use-with-bluetooth

因为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;
}
  1. 使用NCS2.1.2,项目编译成功后带宽<5K

解决方法:在项目目录下添加child_image目录。并将该目录下的mcuboot文件中的KEY_FILE目录改成本地实际目录。再重新全编译一次。

  1. 使用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
  1. Nordic nrf5340使用内部晶振:

在app核和net核以及boot(如有)的prj中添加以下配置:

CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y
  1. 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
posted @ 2025-06-04 10:32  羊的第七章  阅读(27)  评论(0)    收藏  举报