#include #include #include #include #include static struct device *gpio_dev; static struct device *spi; static struct spi_config spi_cfg; static struct spi_buf_set spi_buf_set_tx; static struct spi_buf_set spi_buf_set_rx; static struct spi_buf spi_buf_tx; static struct spi_buf spi_buf_rx; static uint8_t tx_buf[255]; static uint8_t rx_buf[255]; #define MY_SPI DT_NODELABEL(spi2) int main(void) { gpio_dev = device_get_binding("GPIO_0"); gpio_pin_configure(gpio_dev, 14, GPIO_OUTPUT_ACTIVE); gpio_pin_configure(gpio_dev, 22, GPIO_OUTPUT_ACTIVE); gpio_pin_configure(gpio_dev, 24, GPIO_OUTPUT_ACTIVE); gpio_pin_configure(gpio_dev, 30, GPIO_OUTPUT_ACTIVE); gpio_pin_configure(gpio_dev, 31, GPIO_OUTPUT_ACTIVE); gpio_pin_set(gpio_dev, 14, 0); gpio_pin_set(gpio_dev, 22, 0); gpio_pin_set(gpio_dev, 24, 0); gpio_pin_set(gpio_dev, 30, 0); gpio_pin_set(gpio_dev, 31, 0); k_msleep(1000); gpio_pin_set(gpio_dev, 24, 1); spi = device_get_binding(DT_LABEL(MY_SPI)); if (!spi) { printk("Could not find SPI driver\n"); return -1; } printk("SPI: 0x%X\n", (unsigned int)spi); spi_cfg.operation = SPI_WORD_SET(8); spi_cfg.frequency = 125000; spi_buf_tx.buf = tx_buf; spi_buf_tx.len = 5; spi_buf_rx.buf = rx_buf; spi_buf_rx.len = 5; spi_buf_set_tx.buffers = &spi_buf_tx; spi_buf_set_tx.count = 1; spi_buf_set_rx.buffers = &spi_buf_rx; spi_buf_set_rx.count = 1; uint32_t cnt=0; while(1){ memset(&tx_buf[0], 0, 255); memset(&rx_buf[0], 0, 255); spi_transceive(spi, &spi_cfg, &spi_buf_set_tx, &spi_buf_set_rx); printk("0x%x %d\n", *((uint32_t*)(rx_buf+1)), cnt++); k_msleep(1000); } }