I've been using the following SPI2S pins and they've been working:
CLK -> P0.16
MOSI -> P0.17
MISO -> P0.19
CS -> P0.18
I want to use SPI1 instead but when I replace SPI2 with SPI1 I get a bus fault:
00:00:00.297,332] <err> os: ***** BUS FAULT ***** [00:00:00.297,332] <err> os: Precise data bus error [00:00:00.297,363] <err> os: BFAR Address: 0x0 [00:00:00.297,363] <err> os: r0/a1: 0x00012d44 r1/a2: 0x00012d54 r2/a3: 0x40009000 [00:00:00.297,393] <err> os: r3/a4: 0x00000010 r12/ip: 0x40842500 r14/lr: 0xfffcf8f0 [00:00:00.297,393] <err> os: xpsr: 0x81000000 [00:00:00.297,393] <err> os: Faulting instruction address (r15/pc): 0x0000af1a [00:00:00.297,424] <err> os: >>> ZEPHYR FATAL ERROR 25: Unknown error on CPU 0 [00:00:00.297,454] <err> os: Current thread: 0x2000cd80 (unknown) [00:00:00.358,886] <err> os: Halting system
My device tree:
/* Disable unused peripherals */ &i2c0 { status = "disabled";}; &spi0 { status = "disabled";}; &i2c1 { status = "disabled";}; &uart1 { status = "disabled";}; // Configure spi1 on Arduino header of dev kit &pinctrl { spi1_default: spi1_default { group1 { psels = <NRF_PSEL(SPIS_SCK, 0, 16)>, <NRF_PSEL(SPIS_MOSI, 0, 17)>, <NRF_PSEL(SPIS_MISO, 0, 18)>, <NRF_PSEL(SPIS_CSN, 0, 19)>; }; }; spi1_sleep: spi1_sleep { group1 { psels = <NRF_PSEL(SPIS_SCK, 0, 16)>, <NRF_PSEL(SPIS_MOSI, 0, 17)>, <NRF_PSEL(SPIS_MISO, 0, 18)>, <NRF_PSEL(SPIS_CSN, 0, 19)>; low-power-enable; }; }; }; spi_test: &spi1 { compatible = "nordic,nrf-spis"; status = "okay"; pinctrl-0 = <&spi1_default>; pinctrl-1 = <&spi1_sleep>; pinctrl-names = "default", "sleep"; def-char = <0xCD>; };
My project config is the same between both SPI1 and SPI2 setting:
CONFIG_GPIO=y CONFIG_SPI=y CONFIG_SPI_SLAVE=y CONFIG_LOG=y