#include #include #include #include #include static struct device *gpio_dev; static struct device *spi; static struct spi_cs_control spi_cs_ctrl; 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"); 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_cs_ctrl.gpio_dev = gpio_dev; spi_cs_ctrl.gpio_pin = 17; spi_cfg.operation = SPI_WORD_SET(8); spi_cfg.frequency = 125000; spi_cfg.cs = &spi_cs_ctrl; 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], 0xFE, 255); spi_transceive(spi, &spi_cfg, &spi_buf_set_tx, &spi_buf_set_rx); for(int i=0; i<10; i++){ printk("0x%x ", *(rx_buf+i)); } printk("%d \n", cnt++); k_msleep(1000); } }