I build project without problems, but this simple sample return zero results for read buffer. I return 5 zero from 5 zeros.
I have right names for overlays files. nrf9160_pca10090ns.overlay AND nrf9160_pca10090.overlay But it not correct work for me.
Main.c
#include <zephyr.h> #include <sys/printk.h> #include <drivers/spi.h> static const struct spi_config spi_cfg = { .operation = SPI_WORD_SET(8) | SPI_TRANSFER_MSB | SPI_MODE_CPOL | SPI_MODE_CPHA, .frequency = 4000000, .slave = 0, }; struct device * spi_dev; static void spi_init(void) { const char* const spiName = "SPI_3"; spi_dev = device_get_binding(spiName); if (spi_dev == NULL) { printk("Could not get %s device\n", spiName); return; } } void spi_test_send(void) { int err_write; int err_read; u8_t tx_buffer[1]={'A'}; u8_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 }; printk("new iteration\n"); err_write = spi_write(spi_dev, &spi_cfg,&tx);//spi_transceive(spi_dev, &spi_cfg, &tx, &rx); err_read = spi_read(spi_dev, &spi_cfg,&rx); if (err_write||err_read) { printk("SPI error_write: %d\n", err_write); printk("SPI error_read: %d\n", err_read); } else { /* Connect MISO to MOSI for loopback */ printk("TX sent: %x\n", tx_buffer[0]); printk("RX recv: %x\n", rx_buffer[0]); //tx_buffer[0]++; } } void main(void) { printk("SPIM Example\n"); //spi_init(); int counter= 0; while (counter < 5) { spi_test_send(); k_sleep(1000); counter++; } }
overlay file
&spi3 { status = "ok"; sck-pin = <10>; mosi-pin = <11>; miso-pin = <12>; ss-pin = <13>; spi-max-frequency = <4000000>; };
prj file
CONFIG_SERIAL=y CONFIG_TRUSTED_EXECUTION_NONSECURE=y CONFIG_UART_INTERRUPT_DRIVEN=y #CONFIG_UART_0_NRF_UARTE=y # LTE link control CONFIG_LTE_LINK_CONTROL=n CONFIG_LTE_AUTO_INIT_AND_CONNECT=n # BSD library CONFIG_BSD_LIBRARY=y CONFIG_BSD_LIBRARY_TRACE_ENABLED=n # network CONFIG_TEST_RANDOM_GENERATOR=y CONFIG_NETWORKING=y CONFIG_NET_BUF_USER_DATA_SIZE=1 CONFIG_NET_SOCKETS_OFFLOAD=y CONFIG_NET_SOCKETS=y CONFIG_NET_SOCKETS_POSIX_NAMES=y #CONFIG_NET_RAW_MODE=y CONFIG_HEAP_MEM_POOL_SIZE=1024 # SPI CONFIG_SPI=y CONFIG_SPI_3=y #CONFIG_SPI_3_NRF_SPIM=y #CONFIG_SPI_3=y CONFIG_SPI_NRFX=y CONFIG_MAIN_STACK_SIZE=4096 CONFIG_LEGACY_TIMEOUT_API=y