forked from Archive/PX4-Autopilot
commit
fb57c28546
|
@ -268,6 +268,10 @@
|
||||||
#define GPIO_SPI2_MOSI (GPIO_SPI2_MOSI_1|GPIO_SPEED_50MHz)
|
#define GPIO_SPI2_MOSI (GPIO_SPI2_MOSI_1|GPIO_SPEED_50MHz)
|
||||||
#define GPIO_SPI2_SCK (GPIO_SPI2_SCK_2|GPIO_SPEED_50MHz)
|
#define GPIO_SPI2_SCK (GPIO_SPI2_SCK_2|GPIO_SPEED_50MHz)
|
||||||
|
|
||||||
|
#define GPIO_SPI4_MISO (GPIO_SPI4_MISO_1|GPIO_SPEED_50MHz)
|
||||||
|
#define GPIO_SPI4_MOSI (GPIO_SPI4_MOSI_1|GPIO_SPEED_50MHz)
|
||||||
|
#define GPIO_SPI4_SCK (GPIO_SPI4_SCK_1|GPIO_SPEED_50MHz)
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* Public Data
|
* Public Data
|
||||||
************************************************************************************/
|
************************************************************************************/
|
||||||
|
|
|
@ -235,7 +235,7 @@ CONFIG_STM32_SDIO=y
|
||||||
CONFIG_STM32_SPI1=y
|
CONFIG_STM32_SPI1=y
|
||||||
CONFIG_STM32_SPI2=y
|
CONFIG_STM32_SPI2=y
|
||||||
# CONFIG_STM32_SPI3 is not set
|
# CONFIG_STM32_SPI3 is not set
|
||||||
# CONFIG_STM32_SPI4 is not set
|
CONFIG_STM32_SPI4=y
|
||||||
# CONFIG_STM32_SPI5 is not set
|
# CONFIG_STM32_SPI5 is not set
|
||||||
# CONFIG_STM32_SPI6 is not set
|
# CONFIG_STM32_SPI6 is not set
|
||||||
CONFIG_STM32_SYSCFG=y
|
CONFIG_STM32_SYSCFG=y
|
||||||
|
|
|
@ -86,6 +86,7 @@ __BEGIN_DECLS
|
||||||
#define GPIO_SPI_CS_SDCARD (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN4)
|
#define GPIO_SPI_CS_SDCARD (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN4)
|
||||||
|
|
||||||
#define PX4_SPI_BUS_SENSORS 1
|
#define PX4_SPI_BUS_SENSORS 1
|
||||||
|
#define PX4_SPI_BUS_EXT 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use these in place of the spi_dev_e enumeration to
|
* Use these in place of the spi_dev_e enumeration to
|
||||||
|
@ -98,7 +99,7 @@ __BEGIN_DECLS
|
||||||
/*
|
/*
|
||||||
* Optional devices on IO's external port
|
* Optional devices on IO's external port
|
||||||
*/
|
*/
|
||||||
#define PX4_SPIDEV_ACCEL_MAG 2
|
#define PX4_SPIDEV_ACCEL_MAG 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* I2C busses
|
* I2C busses
|
||||||
|
|
|
@ -106,8 +106,11 @@ __BEGIN_DECLS
|
||||||
#define GPIO_SPI_CS_BARO (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN7)
|
#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_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_MPU (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN2)
|
||||||
|
#define GPIO_SPI_CS_EXT0 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN4)
|
||||||
|
#define GPIO_SPI_CS_EXT1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN14)
|
||||||
|
|
||||||
#define PX4_SPI_BUS_SENSORS 1
|
#define PX4_SPI_BUS_SENSORS 1
|
||||||
|
#define PX4_SPI_BUS_EXT 4
|
||||||
|
|
||||||
/* Use these in place of the spi_dev_e enumeration to select a specific SPI device on SPI1 */
|
/* Use these in place of the spi_dev_e enumeration to select a specific SPI device on SPI1 */
|
||||||
#define PX4_SPIDEV_GYRO 1
|
#define PX4_SPIDEV_GYRO 1
|
||||||
|
@ -115,6 +118,10 @@ __BEGIN_DECLS
|
||||||
#define PX4_SPIDEV_BARO 3
|
#define PX4_SPIDEV_BARO 3
|
||||||
#define PX4_SPIDEV_MPU 4
|
#define PX4_SPIDEV_MPU 4
|
||||||
|
|
||||||
|
/* External bus */
|
||||||
|
#define PX4_SPIDEV_EXT0 1
|
||||||
|
#define PX4_SPIDEV_EXT1 2
|
||||||
|
|
||||||
/* I2C busses */
|
/* I2C busses */
|
||||||
#define PX4_I2C_BUS_EXPANSION 1
|
#define PX4_I2C_BUS_EXPANSION 1
|
||||||
#define PX4_I2C_BUS_LED 2
|
#define PX4_I2C_BUS_LED 2
|
||||||
|
|
|
@ -192,6 +192,7 @@ stm32_boardinitialize(void)
|
||||||
|
|
||||||
static struct spi_dev_s *spi1;
|
static struct spi_dev_s *spi1;
|
||||||
static struct spi_dev_s *spi2;
|
static struct spi_dev_s *spi2;
|
||||||
|
static struct spi_dev_s *spi4;
|
||||||
static struct sdio_dev_s *sdio;
|
static struct sdio_dev_s *sdio;
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@ -305,6 +306,17 @@ __EXPORT int nsh_archinitialize(void)
|
||||||
|
|
||||||
message("[boot] Initialized SPI port 2 (RAMTRON FRAM)\n");
|
message("[boot] Initialized SPI port 2 (RAMTRON FRAM)\n");
|
||||||
|
|
||||||
|
spi4 = up_spiinitialize(4);
|
||||||
|
|
||||||
|
/* Default SPI4 to 1MHz and de-assert the known chip selects. */
|
||||||
|
SPI_SETFREQUENCY(spi4, 10000000);
|
||||||
|
SPI_SETBITS(spi4, 8);
|
||||||
|
SPI_SETMODE(spi4, SPIDEV_MODE3);
|
||||||
|
SPI_SELECT(spi4, PX4_SPIDEV_EXT0, false);
|
||||||
|
SPI_SELECT(spi4, PX4_SPIDEV_EXT1, false);
|
||||||
|
|
||||||
|
message("[boot] Initialized SPI port 4\n");
|
||||||
|
|
||||||
#ifdef CONFIG_MMCSD
|
#ifdef CONFIG_MMCSD
|
||||||
/* First, get an instance of the SDIO interface */
|
/* First, get an instance of the SDIO interface */
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,13 @@ __EXPORT void weak_function stm32_spiinitialize(void)
|
||||||
stm32_configgpio(GPIO_SPI_CS_FRAM);
|
stm32_configgpio(GPIO_SPI_CS_FRAM);
|
||||||
stm32_gpiowrite(GPIO_SPI_CS_FRAM, 1);
|
stm32_gpiowrite(GPIO_SPI_CS_FRAM, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_STM32_SPI4
|
||||||
|
stm32_configgpio(GPIO_SPI_CS_EXT0);
|
||||||
|
stm32_configgpio(GPIO_SPI_CS_EXT1);
|
||||||
|
stm32_gpiowrite(GPIO_SPI_CS_EXT0, 1);
|
||||||
|
stm32_gpiowrite(GPIO_SPI_CS_EXT1, 1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
__EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
__EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||||
|
@ -157,3 +164,31 @@ __EXPORT uint8_t stm32_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devi
|
||||||
return SPI_STATUS_PRESENT;
|
return SPI_STATUS_PRESENT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
__EXPORT void stm32_spi4select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||||
|
{
|
||||||
|
/* SPI select is active low, so write !selected to select the device */
|
||||||
|
|
||||||
|
switch (devid) {
|
||||||
|
case PX4_SPIDEV_EXT0:
|
||||||
|
/* Making sure the other peripherals are not selected */
|
||||||
|
stm32_gpiowrite(GPIO_SPI_CS_EXT0, !selected);
|
||||||
|
stm32_gpiowrite(GPIO_SPI_CS_EXT1, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PX4_SPIDEV_EXT1:
|
||||||
|
/* Making sure the other peripherals are not selected */
|
||||||
|
stm32_gpiowrite(GPIO_SPI_CS_EXT1, !selected);
|
||||||
|
stm32_gpiowrite(GPIO_SPI_CS_EXT0, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__EXPORT uint8_t stm32_spi4status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||||
|
{
|
||||||
|
return SPI_STATUS_PRESENT;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue