From abc79faf3bc483be45d73f924a8c92c401363cf0 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Mon, 28 Nov 2016 06:34:33 -1000 Subject: [PATCH] Chip Slect fixes for the ICM_20608_G The mapping of PX4_SPIDEV_ACCEL_MAG to PX4_SPIDEV_ICM is not a clean approach and the PX4_SPIDEV_MPU is already used by the mpu9250 leaving the only (and the correct) option to the use PX4_SPIDEV_ICM and make it map to the reused ACCEL_MAG_CS PC15 as 206080D_CS --- src/drivers/boards/auav-x21/auav_init.c | 2 +- src/drivers/boards/auav-x21/auav_spi.c | 20 ++++++++++---------- src/drivers/boards/auav-x21/board_config.h | 15 ++++++++------- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/drivers/boards/auav-x21/auav_init.c b/src/drivers/boards/auav-x21/auav_init.c index b5b6844ebc..5f790c3fcb 100644 --- a/src/drivers/boards/auav-x21/auav_init.c +++ b/src/drivers/boards/auav-x21/auav_init.c @@ -244,7 +244,7 @@ __EXPORT int nsh_archinitialize(void) SPI_SETFREQUENCY(spi1, 10000000); SPI_SETBITS(spi1, 8); SPI_SETMODE(spi1, SPIDEV_MODE3); - SPI_SELECT(spi1, PX4_SPIDEV_ACCEL_MAG, false); + SPI_SELECT(spi1, PX4_SPIDEV_ICM, false); SPI_SELECT(spi1, PX4_SPIDEV_BARO, false); SPI_SELECT(spi1, PX4_SPIDEV_MPU, false); up_udelay(20); diff --git a/src/drivers/boards/auav-x21/auav_spi.c b/src/drivers/boards/auav-x21/auav_spi.c index 10617f81b8..86477d1239 100644 --- a/src/drivers/boards/auav-x21/auav_spi.c +++ b/src/drivers/boards/auav-x21/auav_spi.c @@ -73,7 +73,7 @@ __EXPORT void stm32_spiinitialize(void) { #ifdef CONFIG_STM32_SPI1 - px4_arch_configgpio(GPIO_SPI_CS_ACCEL_MAG); + px4_arch_configgpio(GPIO_SPI_CS_ICM_20608_G); px4_arch_configgpio(GPIO_SPI_CS_BARO); px4_arch_configgpio(GPIO_SPI_CS_MPU); @@ -81,7 +81,7 @@ __EXPORT void stm32_spiinitialize(void) * required for some peripheral * state machines */ - px4_arch_gpiowrite(GPIO_SPI_CS_ACCEL_MAG, 1); + px4_arch_gpiowrite(GPIO_SPI_CS_ICM_20608_G, 1); px4_arch_gpiowrite(GPIO_SPI_CS_BARO, 1); px4_arch_gpiowrite(GPIO_SPI_CS_MPU, 1); @@ -102,23 +102,23 @@ __EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, switch (devid) { - case PX4_SPIDEV_ACCEL_MAG: + case PX4_SPIDEV_ICM: /* Making sure the other peripherals are not selected */ - px4_arch_gpiowrite(GPIO_SPI_CS_ACCEL_MAG, !selected); + px4_arch_gpiowrite(GPIO_SPI_CS_ICM_20608_G, !selected); px4_arch_gpiowrite(GPIO_SPI_CS_BARO, 1); px4_arch_gpiowrite(GPIO_SPI_CS_MPU, 1); break; case PX4_SPIDEV_BARO: /* Making sure the other peripherals are not selected */ - px4_arch_gpiowrite(GPIO_SPI_CS_ACCEL_MAG, 1); + px4_arch_gpiowrite(GPIO_SPI_CS_ICM_20608_G, 1); px4_arch_gpiowrite(GPIO_SPI_CS_BARO, !selected); px4_arch_gpiowrite(GPIO_SPI_CS_MPU, 1); break; case PX4_SPIDEV_MPU: /* Making sure the other peripherals are not selected */ - px4_arch_gpiowrite(GPIO_SPI_CS_ACCEL_MAG, 1); + px4_arch_gpiowrite(GPIO_SPI_CS_ICM_20608_G, 1); px4_arch_gpiowrite(GPIO_SPI_CS_BARO, 1); px4_arch_gpiowrite(GPIO_SPI_CS_MPU, !selected); break; @@ -152,11 +152,11 @@ __EXPORT uint8_t stm32_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devi __EXPORT void board_spi_reset(int ms) { /* disable SPI bus */ - px4_arch_configgpio(GPIO_SPI_CS_ACCEL_MAG_OFF); + px4_arch_configgpio(GPIO_SPI_CS_ICM_20608_G_OFF); px4_arch_configgpio(GPIO_SPI_CS_BARO_OFF); px4_arch_configgpio(GPIO_SPI_CS_MPU_OFF); - px4_arch_gpiowrite(GPIO_SPI_CS_ACCEL_MAG_OFF, 0); + px4_arch_gpiowrite(GPIO_SPI_CS_ICM_20608_G_OFF, 0); px4_arch_gpiowrite(GPIO_SPI_CS_BARO_OFF, 0); px4_arch_gpiowrite(GPIO_SPI_CS_MPU_OFF, 0); @@ -192,7 +192,7 @@ __EXPORT void board_spi_reset(int ms) /* reconfigure the SPI pins */ #ifdef CONFIG_STM32_SPI1 - px4_arch_configgpio(GPIO_SPI_CS_ACCEL_MAG); + px4_arch_configgpio(GPIO_SPI_CS_ICM_20608_G); px4_arch_configgpio(GPIO_SPI_CS_BARO); px4_arch_configgpio(GPIO_SPI_CS_MPU); @@ -200,7 +200,7 @@ __EXPORT void board_spi_reset(int ms) * required for some peripheral * state machines */ - px4_arch_gpiowrite(GPIO_SPI_CS_ACCEL_MAG, 1); + px4_arch_gpiowrite(GPIO_SPI_CS_ICM_20608_G, 1); px4_arch_gpiowrite(GPIO_SPI_CS_BARO, 1); px4_arch_gpiowrite(GPIO_SPI_CS_MPU, 1); diff --git a/src/drivers/boards/auav-x21/board_config.h b/src/drivers/boards/auav-x21/board_config.h index 20d8685997..7760f3946c 100644 --- a/src/drivers/boards/auav-x21/board_config.h +++ b/src/drivers/boards/auav-x21/board_config.h @@ -90,27 +90,28 @@ #define GPIO_SPI1_MOSI_OFF (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTA|GPIO_PIN7) /* SPI1 chip selects off */ -#define GPIO_SPI_CS_ACCEL_MAG_OFF (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_2MHz|GPIO_PORTC|GPIO_PIN15) +#define GPIO_SPI_CS_ICM_20608_G_OFF (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_2MHz|GPIO_PORTC|GPIO_PIN15) #define GPIO_SPI_CS_BARO_OFF (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_2MHz|GPIO_PORTD|GPIO_PIN7) #define GPIO_SPI_CS_MPU_OFF (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_2MHz|GPIO_PORTC|GPIO_PIN2) /* SPI chip selects */ -#define GPIO_SPI_CS_ACCEL_MAG (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN15) -#define GPIO_SPI_CS_BARO (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN7) -#define GPIO_SPI_CS_FRAM (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN10) -#define GPIO_SPI_CS_MPU (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN2) +#define GPIO_SPI_CS_ICM_20608_G (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN15) +#define GPIO_SPI_CS_BARO (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN7) +#define GPIO_SPI_CS_FRAM (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN10) +#define GPIO_SPI_CS_MPU (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN2) #define PX4_SPI_BUS_SENSORS 1 #define PX4_SPI_BUS_RAMTRON 2 #define PX4_SPI_BUS_BARO PX4_SPI_BUS_SENSORS /* Use these in place of the spi_dev_e enumeration to select a specific SPI device on SPI1 */ -#define PX4_SPIDEV_ACCEL_MAG 1 +#define PX4_SPIDEV_ICM 1 #define PX4_SPIDEV_BARO 2 #define PX4_SPIDEV_MPU 3 /* I2C busses */ -/* Ther is no I2C2 so there is not notion of internal / external*/ + +/* There is no I2C2 so there is not notion of internal / external*/ #define PX4_I2C_BUS_EXPANSION 1 #define PX4_I2C_BUS_ONBOARD 1 #define PX4_I2C_BUS_LED PX4_I2C_BUS_EXPANSION