I am trying to interface winbond flash with the 33 board using ncs and VS code , I am able to get the code to compile and not receiving any errors , it is working and no matter what i send i am getting FF as a response
I have referred to Case ID: 261312
But As mentioned in the first link provided to change the .dts file . I cannot put in any pin configurations , if i do it is showing me a assert error for not having pin control in it , even when i try changing the pin numbers in the .overlay file I am getting the same issues .
/* * Copyright (c) 2012-2014 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 */ #include <zephyr.h> #include <sys/printk.h> #include <device.h> #include <drivers/spi.h> #include <hal/nrf_gpio.h> #define MY_SPI DT_NODELABEL(spi3) #define CS_PIN 16 #define SPI_MODE_CPOL 0 #define SPI_MODE_CPHA 0 static const struct spi_config spi_cfg = { .operation = SPI_WORD_SET(8) | SPI_TRANSFER_MSB | SPI_MODE_CPOL | SPI_MODE_CPHA, .frequency = 50000000, .slave = 1, }; static const struct spi_cs_control cs_pin = { .gpio_pin=16, }; const struct spi_dt_spec *spi_dev = DEVICE_DT_GET(MY_SPI); static void spi_init(void) { if (!device_is_ready(spi_dev)) { printk("Could not get device\n"); } } void spi_test_send(void) { int err; static uint8_t tx_buffer[1]; static uint8_t rx_buffer[1]; const struct spi_buf tx_buf = { .buf = tx_buffer, .len = sizeof(tx_buffer) }; const struct spi_buf_set tx = { .buffers = &tx_buf, .count = 1 }; struct spi_buf rx_buf = { .buf = rx_buffer, .len = sizeof(rx_buffer), }; const struct spi_buf_set rx = { .buffers = &rx_buf, .count = 1 }; nrf_gpio_cfg_output(&cs_pin); // GPIO_SetBits(SPI_CS_MS_DEMO_PIN); nrf_gpio_pin_set(&cs_pin); k_busy_wait(100000); // GPIO_ResetBits(SPI_CS_MS_DEMO_PIN); nrf_gpio_pin_clear(&cs_pin); tx_buffer[0]=0x9F; // SPI_Send_Receive_Data(&a, &a1); err = spi_transceive(spi_dev, &spi_cfg, &tx, &rx); //k_busy_wait(1000); if (err) { printk("SPI error: %d\n", err); }else{ printk("TX sent: %x\n", tx_buffer[0]); printk("RX recv: %x\n", rx_buffer[0]); } rx_buffer[0]=0x00; tx_buffer[0]=0x00; // b1=SPI_Send_Receive_Data(&a, &a1); err = spi_transceive(spi_dev, &spi_cfg, &tx, &rx); if (err) { printk("SPI error: %d\n", err); }else{ printk("TX sent: %x\n", tx_buffer[0]); printk("RX recv: %x\n", rx_buffer[0]); } rx_buffer[0]=0x00; tx_buffer[0]=0x00; // b2=SPI_Send_Receive_Data(&a, &a1); err = spi_transceive(spi_dev, &spi_cfg, &tx, &rx); if (err) { printk("SPI error: %d\n", err); }else{ printk("TX sent: %x\n", tx_buffer[0]); printk("RX recv: %x\n", rx_buffer[0]); } rx_buffer[0]=0x00; tx_buffer[0]=0x00; // b3=SPI_Send_Receive_Data(&a, &a1); err = spi_transceive(spi_dev, &spi_cfg, &tx, &rx); if (err) { printk("SPI error: %d\n", err); }else{ printk("TX sent: %x\n", tx_buffer[0]); printk("RX recv: %x\n", rx_buffer[0]); } // GPIO_SetBits(SPI_CS_MS_DEMO_PIN); nrf_gpio_pin_set(CS_PIN); } void main(void) { printk("SPIM Example\n"); spi_init(); while (1) { spi_test_send(); k_sleep(K_SECONDS(1)); } }
&spi3 { compatible = "nordic,nrf-spim"; status = "okay"; //sck-pin = <11>; // mosi-pin = <10>; //miso-pin = <12>; }; this works and only gives me read values as FF