qspi_nor error using SPI: JEDEC id [00 00 00] expect [c2 28 17]

Hi all!

I have a custom board with an nRF52840 and an SX1262. They communicate via SPI. When I use CONFIG_SPI=y, I get the following error when the board turns on: 

<err> qspi_nor: JEDEC id [00 00 00] expect [c2 28 17]

This is my prj.conf:

# Use GPIOs
CONFIG_GPIO=y

# Configs to use J-Link RTT
CONFIG_PRINTK=y
CONFIG_STDOUT_CONSOLE=y
# CONFIG_RTT_CONSOLE=n
CONFIG_RTT_CONSOLE=y

# BLE configs
CONFIG_BT=y
CONFIG_BT_CENTRAL=y
CONFIG_BT_SCAN=y
CONFIG_BT_FILTER_ACCEPT_LIST=y
CONFIG_HEAP_MEM_POOL_SIZE=4096
CONFIG_BT_GATT_CLIENT=y

# Assert
CONFIG_ASSERT=n

# Use serial
CONFIG_UART_ASYNC_API=y

# Log configs
CONFIG_LOG=y
CONFIG_LOG_BUFFER_SIZE=2048
CONFIG_LOG_BACKEND_UART=y
CONFIG_CBPRINTF_FP_SUPPORT=y
CONFIG_MCUBOOT_UTIL_LOG_LEVEL_INF=y
CONFIG_HWINFO_LOG_LEVEL_INF=y
CONFIG_LOG_MODE_MINIMAL=n
# CONFIG_USE_SEGGER_RTT=n
# CONFIG_LOG_BACKEND_RTT=n
CONFIG_USE_SEGGER_RTT=y
CONFIG_LOG_BACKEND_RTT=y

# Hardware info and log configs
CONFIG_HWINFO=y


# NVS configs
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_REBOOT=y

# use floating point
CONFIG_FPU=y

# use math functions
CONFIG_NEWLIB_LIBC=y

# use k_uptime_get
CONFIG_SYS_CLOCK_EXISTS=y

# DFU
CONFIG_BOOTLOADER_MCUBOOT=y

# Some command handlers require a large stack.
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_BT_RX_STACK_SIZE=4096

CONFIG_LED_BLINK_PERIOD=1000
CONFIG_MCUBOOT_IMAGE_VERSION="0.0.1"

CONFIG_IMG_MANAGER=y

# Use SPI to communicate with LR62E
CONFIG_SPI=y
CONFIG_SPI_NRFX=y
CONFIG_LORA=y
CONFIG_LORA_SX12XX=y

And this is my overlay file:

/ {
    aliases {
        led0 = &led0;
        sw0 = &button0;
        lora0 = &lora;
    };
    leds {
        compatible = "gpio-leds";
        led0: led_0 {
            gpios = <&gpio0 0x02 GPIO_ACTIVE_LOW>;
            label = "Meu LED vermelho";
        };
        led1: led_1 {
            gpios = <&gpio0 0x03 GPIO_ACTIVE_LOW>;
            label = "Meu LED amarelo";
        };
    };
    buttons {
        compatible = "gpio-keys";
        button0: button_0 {
            gpios = <&gpio0 0x10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
            label = "OTA button";
        };
    };
    pinctrl: pin-controller {
        spi0_default: spi0_default {
            phandle = <0xa>;
            group1 {
                psels = <NRF_PSEL(SPIM_MOSI, 0, 23)>,
                        <NRF_PSEL(SPIM_MISO, 0, 24)>,
                        <NRF_PSEL(SPIM_SCK, 0, 25)>;
            };
        };
        spi0_sleep: spi0_sleep {
            phandle = <0xb>;
            group1 {
                psels = <NRF_PSEL(SPIM_MOSI, 0, 23)>,
                        <NRF_PSEL(SPIM_MISO, 0, 24)>,
                        <NRF_PSEL(SPIM_SCK, 0, 25)>;
                low-power-enable;
            };
        };
    };
};

&spi0 {
    compatible = "nordic,nrf-spi";
    #address-cells = <0x1>;
    #size-cells = <0x0>;
    interrupts = <0x4 0x1>;
    max-frequency = <16000000>;
    status = "okay";
    pinctrl-0 = <&spi0_default>;
    pinctrl-1 = <&spi0_sleep>;
    pinctrl-names = "default", "sleep";
    lora: sx1262@0 {
        compatible = "semtech,sx1262";
        reg = <0>;
        dio1-gpios = <&gpio0 21 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
        reset-gpios = <&gpio0 20 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
        busy-gpios = <&gpio0 14 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
        spi-max-frequency = <16000000>;
    };
};

// &spi1 {
    //     compatible = "nordic,nrf-spi";
    //     #address-cells = <0x1>;
    //     #size-cells = <0x0>;
    //     reg = <0x40004000 0x1000>;
    //     interrupts = <0x4 0x1>;
    //     max-frequency = <0x7a1200>;
    //     status = "okay";
    //     pinctrl-0 = <&spi1_default>;
    //     pinctrl-1 = <&spi1_sleep>;
    //     pinctrl-names = "default", "sleep";
// };

// tentar colocar isso dentro de pinctrl: pin-controller (acima)
&pinctrl {
    uart0_default: uart0_default {
        group1 {
            psels = <NRF_PSEL(UART_TX, 0, 13)>,
                    <NRF_PSEL(UART_RTS, 0, 26)>;
        };
        group2 {
            psels = <NRF_PSEL(UART_RX, 0, 12)>,
                    <NRF_PSEL(UART_CTS, 0, 27)>;
            bias-pull-up;
        };
    };
    uart0_sleep: uart0_sleep {
        group1 {
            psels = <NRF_PSEL(UART_TX, 0, 13)>,
                    <NRF_PSEL(UART_RX, 0, 12)>,
                    <NRF_PSEL(UART_RTS, 0, 26)>,
                    <NRF_PSEL(UART_CTS, 0, 27)>;
            low-power-enable;
        };
    };
};

I have seen other issues related to this error on the Q&A but it seems that it's usually thrown when you try to interact with the flash via SPI, but it's not my case because I get the error upon initialization, without trying to directly use the SPI. My questions are:

  1. When do I have to worry about this error?
  2. How can I find out the origin of the error and solve it?

Thanks in advance.

Parents Reply Children
Related