void main(void) { struct spi_config config = { 0 }; struct device *spi_mst_0 = device_get_binding("SPI_0"); uint8_t id; int err; printk("SPI Example application\n"); if (!spi_mst_0) return; config.config = SPI_MODE_CPOL | SPI_MODE_CPHA | SPI_WORD(16); config.max_sys_freq = 256; err = spi_configure(spi_mst_0, &config); if (err) { printk("Could not configure SPI device\n"); return; } err = spi_slave_select(spi_mst_0, 1); if (err) { printk("Could not select SPI slave\n"); return; } id = lsm9ds0_read_whoami_g(spi_mst_0); printk("LSM9DS0 Who Am I: 0x%x\n", id); }
int main(void) { struct spi_config config = { 0 }; struct device *spi_mst_0 = device_get_binding("SPI_0"); uint8_t manufacturer, device_id; int err; printk("SPI Example application\n"); if (!spi_mst_0) return -EIO; config.config = SPI_MODE_CPOL | SPI_MODE_CPHA | SPI_WORD(8); config.max_sys_freq = 256; err = spi_configure(spi_mst_0, &config); if (err) { printk("Could not configure SPI device\n"); return -EIO; } err = spi_slave_select(spi_mst_0, 1); if (err) { printk("Could not select SPI slave\n"); return -EIO; } err = w25q80bl_read_id(spi_mst_0, &manufacturer, &device_id); if (err) { printk("Could not get Manufacturer and Device ID from SPI Flash\n"); return -EIO; } printk("SPI Flash Manufacturer %x Device Id %x\n", manufacturer, device_id); return 0; }
static int bmi160_transceive(struct device *dev, uint8_t *tx_buf, uint8_t tx_buf_len, uint8_t *rx_buf, uint8_t rx_buf_len) { struct bmi160_device_config *dev_cfg = dev->config->config_info; struct bmi160_device_data *bmi160 = dev->driver_data; struct spi_config spi_cfg; spi_cfg.config = SPI_WORD(8); spi_cfg.max_sys_freq = dev_cfg->spi_freq; if (spi_configure(bmi160->spi, &spi_cfg) < 0) { SYS_LOG_DBG("Cannot configure SPI bus."); return -EIO; } if (spi_slave_select(bmi160->spi, dev_cfg->spi_slave) < 0) { SYS_LOG_DBG("Cannot select slave."); return -EIO; } return spi_transceive(bmi160->spi, tx_buf, tx_buf_len, rx_buf, rx_buf_len); }
#if defined(CONFIG_BLUETOOTH_SPI_BLUENRG) static struct device *cs_dev; #endif /* CONFIG_BLUETOOTH_SPI_BLUENRG */ static struct device *irq_dev; static struct device *rst_dev; static struct gpio_callback gpio_cb; static K_SEM_DEFINE(sem_initialised, 0, 1); static K_SEM_DEFINE(sem_request, 0, 1); static K_SEM_DEFINE(sem_busy, 1, 1); static BT_STACK_NOINIT(rx_stack, 448); static struct spi_config spi_conf = { .config = SPI_WORD(8), .max_sys_freq = CONFIG_BLUETOOTH_SPI_MAX_CLK_FREQ, }; #if defined(CONFIG_BLUETOOTH_DEBUG_HCI_DRIVER) #include <misc/printk.h> static inline void spi_dump_message(const u8_t *pre, u8_t *buf, u8_t size) { u8_t i, c; printk("%s (%d): ", pre, size); for (i = 0; i < size; i++) { c = buf[i]; printk("%x ", c); if (c >= 31 && c <= 126) {