Probability of receiving when writing falsh using QSPI: SOFTDEVICE ASSERTION FAILED error, causing device reboot.

Hello,

We use QSPI to operate the flash while ble is broadcasting. our software testers tested probabilistic reboots due to SOFTDEVICE: ASSERTION FAILED, pc = 0x0001786a or SOFTDEVICE: ASSERTION FAILED, pc = 0x00015074 or SOFTDEVICE: ASSERTION FAILED, pc = 0x00015a98. I read in the forum that RTOS turn off interrupts cannot turn off BLE interrupts and have done so, but the problem still occurs. when I write flash tests at 100ms, it goes to SOFTDEVICE in about 5 minutes: ASSERTION FAILED error.

Thank you in advance for helping me.

Best regards

Parents

  • //Open the QSPI code as follows:

    nrf_drv_qspi_config_t
    config; config.pins.csn_pin = FLASH_QSPI_CSN_NUMBER; config.pins.sck_pin = FLASH_QSPI_SCK_NUMBER; config.pins.io0_pin = FLASH_QSPI_IO0_NUMBER; config.pins.io1_pin = FLASH_QSPI_IO1_NUMBER; config.pins.io2_pin = FLASH_QSPI_IO2_NUMBER; config.pins.io3_pin = FLASH_QSPI_IO3_NUMBER; config.prot_if.readoc = NRF_QSPI_READOC_READ4O; config.prot_if.writeoc = NRF_QSPI_WRITEOC_PP4O; config.prot_if.addrmode = NRF_QSPI_ADDRMODE_24BIT; config.prot_if.dpmconfig = 0; config.phy_if.sck_delay = 0x05; config.phy_if.dpmen = 0; config.phy_if.spi_mode = NRF_QSPI_MODE_0; config.phy_if.sck_freq = FLASH_QSPI_HZ; // 16M config.irq_priority = 0x06; config.xip_offset = 0; int err_code = nrf_drv_qspi_init(&config, NULL, NULL); APP_ERROR_CHECK(err_code); GPIO_HIGH_DRIVER(FLASH_QSPI_CSN_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_SCK_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_IO0_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_IO1_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_IO2_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_IO3_NUMBER);





    // Close the QSPI code as follows:
    int err_code = nrf_drv_qspi_read(hal_read_buf, 1, 0);
            nrf_drv_qspi_uninit();
    
            nrf_gpio_cfg_output(FLASH_QSPI_CSN_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_SCK_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_IO0_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_IO1_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_IO2_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_IO3_NUMBER);
    
            nrf_gpio_cfg_output(FLASH_QSPI_CSN_NUMBER);
            nrf_gpio_pin_set(FLASH_QSPI_CSN_NUMBER);
     
Reply

  • //Open the QSPI code as follows:

    nrf_drv_qspi_config_t
    config; config.pins.csn_pin = FLASH_QSPI_CSN_NUMBER; config.pins.sck_pin = FLASH_QSPI_SCK_NUMBER; config.pins.io0_pin = FLASH_QSPI_IO0_NUMBER; config.pins.io1_pin = FLASH_QSPI_IO1_NUMBER; config.pins.io2_pin = FLASH_QSPI_IO2_NUMBER; config.pins.io3_pin = FLASH_QSPI_IO3_NUMBER; config.prot_if.readoc = NRF_QSPI_READOC_READ4O; config.prot_if.writeoc = NRF_QSPI_WRITEOC_PP4O; config.prot_if.addrmode = NRF_QSPI_ADDRMODE_24BIT; config.prot_if.dpmconfig = 0; config.phy_if.sck_delay = 0x05; config.phy_if.dpmen = 0; config.phy_if.spi_mode = NRF_QSPI_MODE_0; config.phy_if.sck_freq = FLASH_QSPI_HZ; // 16M config.irq_priority = 0x06; config.xip_offset = 0; int err_code = nrf_drv_qspi_init(&config, NULL, NULL); APP_ERROR_CHECK(err_code); GPIO_HIGH_DRIVER(FLASH_QSPI_CSN_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_SCK_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_IO0_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_IO1_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_IO2_NUMBER); GPIO_HIGH_DRIVER(FLASH_QSPI_IO3_NUMBER);





    // Close the QSPI code as follows:
    int err_code = nrf_drv_qspi_read(hal_read_buf, 1, 0);
            nrf_drv_qspi_uninit();
    
            nrf_gpio_cfg_output(FLASH_QSPI_CSN_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_SCK_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_IO0_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_IO1_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_IO2_NUMBER);
            nrf_gpio_cfg_output(FLASH_QSPI_IO3_NUMBER);
    
            nrf_gpio_cfg_output(FLASH_QSPI_CSN_NUMBER);
            nrf_gpio_pin_set(FLASH_QSPI_CSN_NUMBER);
     
Children
No Data