spi_nor not able to communicate with external flash / jedec id always returning 00 00 00 during boot up.

Spi_nor_capture.sal

The firmware always halts execution during boot after providing these logs:

26/05/22 10:38:33.925  89737.861    13892  0 E: Device id 00 00 00 does not match config 1f 16 01

26/05/22 10:38:33.929  89737.865        4  0 I: Starting bootloader

26/05/22 10:38:33.932  89737.868        3  0 E: Failed to open flash area ID 1 (image 0 slot 1): -19, cannot continue


I'm trying to connect to a 16 Mbit AT25EU0161A Renesas external flash. I probed the SCK, MOSI, CS, and MISO pins; however, I've never managed to see any signal on the MISO pin. 

I've attached the Logic Analyzer's capture for your reference. 


I've even added a 300us delay to create a settle-down time between the CS and the MOSI & SCK pulse, but that also did not work. 



Here are my configurations: 

&spi00 {
	status = "okay";
	cs-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
	pinctrl-0 = <&spi00_default>;
	pinctrl-1 = <&spi00_sleep>;
	pinctrl-names = "default", "sleep";

	at25eu0: at25eu0161a@0 {
		compatible = "jedec,spi-nor";
		status = "okay";
		reg = <0>;
		spi-max-frequency = <2000000>;
		jedec-id = [1f 16 01];
		size = <16777216>;
		has-dpd;
		t-enter-dpd = <10000>;
		t-exit-dpd = <35000>;
		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;
			slot1_partition: mcuboot_secondary: partition@0 {
				label = "image-1";
				reg = <0x0 0x143000>;
			};
		};
	};
};

	/omit-if-no-ref/ spi00_default: spi00_default {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 2, 6)>,
					<NRF_PSEL(SPIM_MOSI, 2, 8)>,
					<NRF_PSEL(SPIM_MISO, 2, 4)>;
		};
	};

	/omit-if-no-ref/ spi00_sleep: spi00_sleep {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 2, 6)>,
					<NRF_PSEL(SPIM_MOSI, 2, 8)>,
					<NRF_PSEL(SPIM_MISO, 2, 4)>;
			low-power-enable;
		};
	};


Theser are my prj.conf settings: 
# SPI config
CONFIG_SPI=y
CONFIG_SPI_NOR=y
CONFIG_SPI_NOR_SFDP_RUNTIME=y
CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096


These are my .conf files for the mcuboot: 
CONFIG_GPIO=y
CONFIG_MULTITHREADING=y
CONFIG_BOOT_MAX_IMG_SECTORS=512

# External SPIM flash for secondary slot
CONFIG_SPI=y
CONFIG_SPI_NRFX=y
CONFIG_SPI_NOR=y
CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096

CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y


SPI wiring:
CS -> nRF54L15 P2.05
SCK -> nRF54L15 P2.06
SI/MOSI -> nRF54L15 P2.08
SO/MISO -> nRF54L15 P2.04
HOLD/RESET -> nRF54L15 P2.03 pulled internally high. (also verified on hardware)
WP -> pulled high via an external 10K resistor.

The bootloader is MCUBoot v2.1.0-ncs3-3. The failure happens during MCUBoot/Zephyr spi_nor_configure(), where command 0x9F is sent correctly, but MISO returns 00 00 00 instead of 1F 16 01.

SPI mode is mode 0, SCK 2 MHz. As mentioned above, putting a CS delay did not solve the issue.



Parents
  • Hi,

     

    Is it correct that the flash device does not respond in other samples either, like with the zephyr/samples/drivers/spi_flash ?

    If yes, then it sounds like a problem with the physical connection between the nRF and the AT25eu flash IC.

    Have you checked the voltages of the external flash IC to see that they are as expected?

     

    Kind regards,

    Håkon

  • Hello Hakon, what do you mean by "other samples either"? Since the external flash is an SMD, I don't have access to the pins, but I could talk with the hardware team. Though, on which pins do you recommend I measure voltage? 

    Best regards, 

    Abel

  • Hi,

     

    Bello said:
    Hello Hakon, what do you mean by "other samples either"?

    For instance this sample:

    Håkon Alseth said:
    zephyr/samples/drivers/spi_flash

    Try running that with your overlay file.

     

    Bello said:
    Since the external flash is an SMD, I don't have access to the pins, but I could talk with the hardware team. Though, on which pins do you recommend I measure voltage? 

    Since MISO is not responding, it points towards a physical issue between the two devices.

    You can also check on more than one device to see if this is a pattern or if its isolated to a particular device.

     

    Kind regards,

    Håkon

Reply
  • Hi,

     

    Bello said:
    Hello Hakon, what do you mean by "other samples either"?

    For instance this sample:

    Håkon Alseth said:
    zephyr/samples/drivers/spi_flash

    Try running that with your overlay file.

     

    Bello said:
    Since the external flash is an SMD, I don't have access to the pins, but I could talk with the hardware team. Though, on which pins do you recommend I measure voltage? 

    Since MISO is not responding, it points towards a physical issue between the two devices.

    You can also check on more than one device to see if this is a pattern or if its isolated to a particular device.

     

    Kind regards,

    Håkon

Children
Related