mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-23 16:25:26 +03:00
[SPI] Lazy SPI init; Per-device SPI settings; Allow SDCARD/SPIFLASH bus sharing (init time)
This commit is contained in:
parent
547858a800
commit
1873c20e74
34 changed files with 88 additions and 180 deletions
|
@ -90,7 +90,9 @@ static bool busDevInit_SPI(busDevice_t * dev, const busDeviceDescriptor_t * desc
|
||||||
dev->irqPin = IOGetByTag(descriptor->irqPin);
|
dev->irqPin = IOGetByTag(descriptor->irqPin);
|
||||||
dev->busdev.spi.spiBus = descriptor->busdev.spi.spiBus;
|
dev->busdev.spi.spiBus = descriptor->busdev.spi.spiBus;
|
||||||
dev->busdev.spi.csnPin = IOGetByTag(descriptor->busdev.spi.csnPin);
|
dev->busdev.spi.csnPin = IOGetByTag(descriptor->busdev.spi.csnPin);
|
||||||
if (dev->busdev.spi.csnPin) {
|
|
||||||
|
if (dev->busdev.spi.csnPin && spiBusInitHost(dev)) {
|
||||||
|
// Init CSN pin
|
||||||
IOInit(dev->busdev.spi.csnPin, owner, RESOURCE_SPI_CS, 0);
|
IOInit(dev->busdev.spi.csnPin, owner, RESOURCE_SPI_CS, 0);
|
||||||
IOConfigGPIO(dev->busdev.spi.csnPin, SPI_IO_CS_CFG);
|
IOConfigGPIO(dev->busdev.spi.csnPin, SPI_IO_CS_CFG);
|
||||||
IOHi(dev->busdev.spi.csnPin);
|
IOHi(dev->busdev.spi.csnPin);
|
||||||
|
|
|
@ -269,6 +269,7 @@ bool i2cBusWriteRegister(const busDevice_t * dev, uint8_t reg, uint8_t data);
|
||||||
bool i2cBusReadBuffer(const busDevice_t * dev, uint8_t reg, uint8_t * data, uint8_t length);
|
bool i2cBusReadBuffer(const busDevice_t * dev, uint8_t reg, uint8_t * data, uint8_t length);
|
||||||
bool i2cBusReadRegister(const busDevice_t * dev, uint8_t reg, uint8_t * data);
|
bool i2cBusReadRegister(const busDevice_t * dev, uint8_t reg, uint8_t * data);
|
||||||
|
|
||||||
|
bool spiBusInitHost(const busDevice_t * dev);
|
||||||
bool spiBusIsBusy(const busDevice_t * dev);
|
bool spiBusIsBusy(const busDevice_t * dev);
|
||||||
void spiBusSetSpeed(const busDevice_t * dev, busSpeed_e speed);
|
void spiBusSetSpeed(const busDevice_t * dev, busSpeed_e speed);
|
||||||
bool spiBusTransfer(const busDevice_t * dev, uint8_t * rxBuf, const uint8_t * txBuf, int length);
|
bool spiBusTransfer(const busDevice_t * dev, uint8_t * rxBuf, const uint8_t * txBuf, int length);
|
||||||
|
|
|
@ -29,6 +29,12 @@
|
||||||
#include "drivers/bus_spi.h"
|
#include "drivers/bus_spi.h"
|
||||||
#include "drivers/time.h"
|
#include "drivers/time.h"
|
||||||
|
|
||||||
|
bool spiBusInitHost(const busDevice_t * dev)
|
||||||
|
{
|
||||||
|
const bool spiLeadingEdge = (dev->flags & DEVFLAGS_SPI_MODE_0);
|
||||||
|
return spiInitDevice(dev->busdev.spi.spiBus, spiLeadingEdge);
|
||||||
|
}
|
||||||
|
|
||||||
void spiBusSelectDevice(const busDevice_t * dev)
|
void spiBusSelectDevice(const busDevice_t * dev)
|
||||||
{
|
{
|
||||||
IOLo(dev->busdev.spi.csnPin);
|
IOLo(dev->busdev.spi.csnPin);
|
||||||
|
|
|
@ -72,22 +72,6 @@
|
||||||
#define SPI3_NSS_PIN NONE
|
#define SPI3_NSS_PIN NONE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SPI1_CLOCK_LEADING_EDGE
|
|
||||||
# define SPI1_LEADING_EDGE true
|
|
||||||
#else
|
|
||||||
# define SPI1_LEADING_EDGE false
|
|
||||||
#endif
|
|
||||||
#ifdef SPI2_CLOCK_LEADING_EDGE
|
|
||||||
# define SPI2_LEADING_EDGE true
|
|
||||||
#else
|
|
||||||
# define SPI2_LEADING_EDGE false
|
|
||||||
#endif
|
|
||||||
#ifdef SPI3_CLOCK_LEADING_EDGE
|
|
||||||
# define SPI3_LEADING_EDGE true
|
|
||||||
#else
|
|
||||||
# define SPI3_LEADING_EDGE false
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(STM32F3)
|
#if defined(STM32F3)
|
||||||
static const uint16_t spiDivisorMapFast[] = {
|
static const uint16_t spiDivisorMapFast[] = {
|
||||||
SPI_BaudRatePrescaler_256, // SPI_CLOCK_INITIALIZATON 281.25 KBits/s
|
SPI_BaudRatePrescaler_256, // SPI_CLOCK_INITIALIZATON 281.25 KBits/s
|
||||||
|
@ -106,9 +90,22 @@ static const uint16_t spiDivisorMapSlow[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static spiDevice_t spiHardwareMap[] = {
|
static spiDevice_t spiHardwareMap[] = {
|
||||||
{ .dev = SPI1, .nss = IO_TAG(SPI1_NSS_PIN), .sck = IO_TAG(SPI1_SCK_PIN), .miso = IO_TAG(SPI1_MISO_PIN), .mosi = IO_TAG(SPI1_MOSI_PIN), .rcc = RCC_APB2(SPI1), .af = GPIO_AF_SPI1, .leadingEdge = SPI1_LEADING_EDGE, .divisorMap = spiDivisorMapFast },
|
#ifdef USE_SPI_DEVICE_1
|
||||||
{ .dev = SPI2, .nss = IO_TAG(SPI2_NSS_PIN), .sck = IO_TAG(SPI2_SCK_PIN), .miso = IO_TAG(SPI2_MISO_PIN), .mosi = IO_TAG(SPI2_MOSI_PIN), .rcc = RCC_APB1(SPI2), .af = GPIO_AF_SPI2, .leadingEdge = SPI2_LEADING_EDGE, .divisorMap = spiDivisorMapSlow },
|
{ .dev = SPI1, .nss = IO_TAG(SPI1_NSS_PIN), .sck = IO_TAG(SPI1_SCK_PIN), .miso = IO_TAG(SPI1_MISO_PIN), .mosi = IO_TAG(SPI1_MOSI_PIN), .rcc = RCC_APB2(SPI1), .af = GPIO_AF_SPI1, .divisorMap = spiDivisorMapFast },
|
||||||
{ .dev = SPI3, .nss = IO_TAG(SPI3_NSS_PIN), .sck = IO_TAG(SPI3_SCK_PIN), .miso = IO_TAG(SPI3_MISO_PIN), .mosi = IO_TAG(SPI3_MOSI_PIN), .rcc = RCC_APB1(SPI3), .af = GPIO_AF_SPI3, .leadingEdge = SPI3_LEADING_EDGE, .divisorMap = spiDivisorMapSlow }
|
#else
|
||||||
|
{ .dev = NULL }, // No SPI1
|
||||||
|
#endif
|
||||||
|
#ifdef USE_SPI_DEVICE_2
|
||||||
|
{ .dev = SPI2, .nss = IO_TAG(SPI2_NSS_PIN), .sck = IO_TAG(SPI2_SCK_PIN), .miso = IO_TAG(SPI2_MISO_PIN), .mosi = IO_TAG(SPI2_MOSI_PIN), .rcc = RCC_APB1(SPI2), .af = GPIO_AF_SPI2, .divisorMap = spiDivisorMapSlow },
|
||||||
|
#else
|
||||||
|
{ .dev = NULL }, // No SPI2
|
||||||
|
#endif
|
||||||
|
#ifdef USE_SPI_DEVICE_3
|
||||||
|
{ .dev = SPI3, .nss = IO_TAG(SPI3_NSS_PIN), .sck = IO_TAG(SPI3_SCK_PIN), .miso = IO_TAG(SPI3_MISO_PIN), .mosi = IO_TAG(SPI3_MOSI_PIN), .rcc = RCC_APB1(SPI3), .af = GPIO_AF_SPI3, .divisorMap = spiDivisorMapSlow },
|
||||||
|
#else
|
||||||
|
{ .dev = NULL }, // No SPI3
|
||||||
|
#endif
|
||||||
|
{ .dev = NULL }, // No SPI4
|
||||||
};
|
};
|
||||||
#elif defined(STM32F4)
|
#elif defined(STM32F4)
|
||||||
static const uint16_t spiDivisorMapFast[] = {
|
static const uint16_t spiDivisorMapFast[] = {
|
||||||
|
@ -128,9 +125,22 @@ static const uint16_t spiDivisorMapSlow[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static spiDevice_t spiHardwareMap[] = {
|
static spiDevice_t spiHardwareMap[] = {
|
||||||
{ .dev = SPI1, .nss = IO_TAG(SPI1_NSS_PIN), .sck = IO_TAG(SPI1_SCK_PIN), .miso = IO_TAG(SPI1_MISO_PIN), .mosi = IO_TAG(SPI1_MOSI_PIN), .rcc = RCC_APB2(SPI1), .af = GPIO_AF_SPI1, .leadingEdge = SPI1_LEADING_EDGE, .divisorMap = spiDivisorMapFast },
|
#ifdef USE_SPI_DEVICE_1
|
||||||
{ .dev = SPI2, .nss = IO_TAG(SPI2_NSS_PIN), .sck = IO_TAG(SPI2_SCK_PIN), .miso = IO_TAG(SPI2_MISO_PIN), .mosi = IO_TAG(SPI2_MOSI_PIN), .rcc = RCC_APB1(SPI2), .af = GPIO_AF_SPI2, .leadingEdge = SPI2_LEADING_EDGE, .divisorMap = spiDivisorMapSlow },
|
{ .dev = SPI1, .nss = IO_TAG(SPI1_NSS_PIN), .sck = IO_TAG(SPI1_SCK_PIN), .miso = IO_TAG(SPI1_MISO_PIN), .mosi = IO_TAG(SPI1_MOSI_PIN), .rcc = RCC_APB2(SPI1), .af = GPIO_AF_SPI1, .divisorMap = spiDivisorMapFast },
|
||||||
{ .dev = SPI3, .nss = IO_TAG(SPI3_NSS_PIN), .sck = IO_TAG(SPI3_SCK_PIN), .miso = IO_TAG(SPI3_MISO_PIN), .mosi = IO_TAG(SPI3_MOSI_PIN), .rcc = RCC_APB1(SPI3), .af = GPIO_AF_SPI3, .leadingEdge = SPI3_LEADING_EDGE, .divisorMap = spiDivisorMapSlow }
|
#else
|
||||||
|
{ .dev = NULL }, // No SPI1
|
||||||
|
#endif
|
||||||
|
#ifdef USE_SPI_DEVICE_2
|
||||||
|
{ .dev = SPI2, .nss = IO_TAG(SPI2_NSS_PIN), .sck = IO_TAG(SPI2_SCK_PIN), .miso = IO_TAG(SPI2_MISO_PIN), .mosi = IO_TAG(SPI2_MOSI_PIN), .rcc = RCC_APB1(SPI2), .af = GPIO_AF_SPI2, .divisorMap = spiDivisorMapSlow },
|
||||||
|
#else
|
||||||
|
{ .dev = NULL }, // No SPI2
|
||||||
|
#endif
|
||||||
|
#ifdef USE_SPI_DEVICE_3
|
||||||
|
{ .dev = SPI3, .nss = IO_TAG(SPI3_NSS_PIN), .sck = IO_TAG(SPI3_SCK_PIN), .miso = IO_TAG(SPI3_MISO_PIN), .mosi = IO_TAG(SPI3_MOSI_PIN), .rcc = RCC_APB1(SPI3), .af = GPIO_AF_SPI3, .divisorMap = spiDivisorMapSlow },
|
||||||
|
#else
|
||||||
|
{ .dev = NULL }, // No SPI3
|
||||||
|
#endif
|
||||||
|
{ .dev = NULL }, // No SPI4
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
#error "Invalid CPU"
|
#error "Invalid CPU"
|
||||||
|
@ -150,10 +160,18 @@ SPIDevice spiDeviceByInstance(SPI_TypeDef *instance)
|
||||||
return SPIINVALID;
|
return SPIINVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
void spiInitDevice(SPIDevice device)
|
bool spiInitDevice(SPIDevice device, bool leadingEdge)
|
||||||
{
|
{
|
||||||
spiDevice_t *spi = &(spiHardwareMap[device]);
|
spiDevice_t *spi = &(spiHardwareMap[device]);
|
||||||
|
|
||||||
|
if (!spi->dev) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (spi->initDone) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Enable SPI clock
|
// Enable SPI clock
|
||||||
RCC_ClockCmd(spi->rcc, ENABLE);
|
RCC_ClockCmd(spi->rcc, ENABLE);
|
||||||
RCC_ResetCmd(spi->rcc, ENABLE);
|
RCC_ResetCmd(spi->rcc, ENABLE);
|
||||||
|
@ -163,7 +181,7 @@ void spiInitDevice(SPIDevice device)
|
||||||
IOInit(IOGetByTag(spi->mosi), OWNER_SPI, RESOURCE_SPI_MOSI, device + 1);
|
IOInit(IOGetByTag(spi->mosi), OWNER_SPI, RESOURCE_SPI_MOSI, device + 1);
|
||||||
|
|
||||||
#if defined(STM32F3) || defined(STM32F4)
|
#if defined(STM32F3) || defined(STM32F4)
|
||||||
if (spi->leadingEdge) {
|
if (leadingEdge) {
|
||||||
IOConfigGPIOAF(IOGetByTag(spi->sck), SPI_IO_AF_SCK_CFG, spi->af);
|
IOConfigGPIOAF(IOGetByTag(spi->sck), SPI_IO_AF_SCK_CFG, spi->af);
|
||||||
IOConfigGPIOAF(IOGetByTag(spi->miso), SPI_IO_AF_MISO_CFG, spi->af);
|
IOConfigGPIOAF(IOGetByTag(spi->miso), SPI_IO_AF_MISO_CFG, spi->af);
|
||||||
IOConfigGPIOAF(IOGetByTag(spi->mosi), SPI_IO_AF_CFG, spi->af);
|
IOConfigGPIOAF(IOGetByTag(spi->mosi), SPI_IO_AF_CFG, spi->af);
|
||||||
|
@ -190,7 +208,7 @@ void spiInitDevice(SPIDevice device)
|
||||||
spiInit.SPI_CRCPolynomial = 7;
|
spiInit.SPI_CRCPolynomial = 7;
|
||||||
spiInit.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
|
spiInit.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
|
||||||
|
|
||||||
if (spi->leadingEdge) {
|
if (leadingEdge) {
|
||||||
// SPI_MODE0
|
// SPI_MODE0
|
||||||
spiInit.SPI_CPOL = SPI_CPOL_Low;
|
spiInit.SPI_CPOL = SPI_CPOL_Low;
|
||||||
spiInit.SPI_CPHA = SPI_CPHA_1Edge;
|
spiInit.SPI_CPHA = SPI_CPHA_1Edge;
|
||||||
|
@ -212,43 +230,9 @@ void spiInitDevice(SPIDevice device)
|
||||||
// Drive NSS high to disable connected SPI device.
|
// Drive NSS high to disable connected SPI device.
|
||||||
IOHi(IOGetByTag(spi->nss));
|
IOHi(IOGetByTag(spi->nss));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
bool spiInit(SPIDevice device)
|
spi->initDone = true;
|
||||||
{
|
return true;
|
||||||
switch (device) {
|
|
||||||
case SPIINVALID:
|
|
||||||
return false;
|
|
||||||
case SPIDEV_1:
|
|
||||||
#ifdef USE_SPI_DEVICE_1
|
|
||||||
spiInitDevice(device);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case SPIDEV_2:
|
|
||||||
#ifdef USE_SPI_DEVICE_2
|
|
||||||
spiInitDevice(device);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case SPIDEV_3:
|
|
||||||
#if defined(USE_SPI_DEVICE_3) && (defined(STM32F303xC) || defined(STM32F4))
|
|
||||||
spiInitDevice(device);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case SPIDEV_4:
|
|
||||||
#if defined(USE_SPI_DEVICE_4)
|
|
||||||
spiInitDevice(device);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t spiTimeoutUserCallback(SPI_TypeDef *instance)
|
uint32_t spiTimeoutUserCallback(SPI_TypeDef *instance)
|
||||||
|
|
|
@ -70,12 +70,12 @@ typedef struct SPIDevice_s {
|
||||||
ioTag_t miso;
|
ioTag_t miso;
|
||||||
rccPeriphTag_t rcc;
|
rccPeriphTag_t rcc;
|
||||||
uint8_t af;
|
uint8_t af;
|
||||||
bool leadingEdge;
|
|
||||||
const uint16_t * divisorMap;
|
const uint16_t * divisorMap;
|
||||||
volatile uint16_t errorCount;
|
volatile uint16_t errorCount;
|
||||||
|
bool initDone;
|
||||||
} spiDevice_t;
|
} spiDevice_t;
|
||||||
|
|
||||||
bool spiInit(SPIDevice device);
|
bool spiInitDevice(SPIDevice device, bool leadingEdge);
|
||||||
bool spiIsBusBusy(SPI_TypeDef *instance);
|
bool spiIsBusBusy(SPI_TypeDef *instance);
|
||||||
void spiSetSpeed(SPI_TypeDef *instance, SPIClockSpeed_e speed);
|
void spiSetSpeed(SPI_TypeDef *instance, SPIClockSpeed_e speed);
|
||||||
uint8_t spiTransferByte(SPI_TypeDef *instance, uint8_t in);
|
uint8_t spiTransferByte(SPI_TypeDef *instance, uint8_t in);
|
||||||
|
|
|
@ -68,27 +68,6 @@
|
||||||
#define SPI4_NSS_PIN NONE
|
#define SPI4_NSS_PIN NONE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SPI1_CLOCK_LEADING_EDGE
|
|
||||||
# define SPI1_LEADING_EDGE true
|
|
||||||
#else
|
|
||||||
# define SPI1_LEADING_EDGE false
|
|
||||||
#endif
|
|
||||||
#ifdef SPI2_CLOCK_LEADING_EDGE
|
|
||||||
# define SPI2_LEADING_EDGE true
|
|
||||||
#else
|
|
||||||
# define SPI2_LEADING_EDGE false
|
|
||||||
#endif
|
|
||||||
#ifdef SPI3_CLOCK_LEADING_EDGE
|
|
||||||
# define SPI3_LEADING_EDGE true
|
|
||||||
#else
|
|
||||||
# define SPI3_LEADING_EDGE false
|
|
||||||
#endif
|
|
||||||
#ifdef SPI4_CLOCK_LEADING_EDGE
|
|
||||||
# define SPI4_LEADING_EDGE true
|
|
||||||
#else
|
|
||||||
# define SPI4_LEADING_EDGE false
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const uint16_t spiDivisorMapFast[] = {
|
static const uint16_t spiDivisorMapFast[] = {
|
||||||
LL_SPI_BAUDRATEPRESCALER_DIV256, // SPI_CLOCK_INITIALIZATON 421.875 KBits/s
|
LL_SPI_BAUDRATEPRESCALER_DIV256, // SPI_CLOCK_INITIALIZATON 421.875 KBits/s
|
||||||
LL_SPI_BAUDRATEPRESCALER_DIV32, // SPI_CLOCK_SLOW 843.75 KBits/s
|
LL_SPI_BAUDRATEPRESCALER_DIV32, // SPI_CLOCK_SLOW 843.75 KBits/s
|
||||||
|
@ -105,10 +84,26 @@ static const uint16_t spiDivisorMapSlow[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static spiDevice_t spiHardwareMap[] = {
|
static spiDevice_t spiHardwareMap[] = {
|
||||||
{ .dev = SPI1, .nss = IO_TAG(SPI1_NSS_PIN), .sck = IO_TAG(SPI1_SCK_PIN), .miso = IO_TAG(SPI1_MISO_PIN), .mosi = IO_TAG(SPI1_MOSI_PIN), .rcc = RCC_APB2(SPI1), .af = GPIO_AF5_SPI1, .leadingEdge = SPI1_LEADING_EDGE, .divisorMap = spiDivisorMapFast },
|
#ifdef USE_SPI_DEVICE_1
|
||||||
{ .dev = SPI2, .nss = IO_TAG(SPI2_NSS_PIN), .sck = IO_TAG(SPI2_SCK_PIN), .miso = IO_TAG(SPI2_MISO_PIN), .mosi = IO_TAG(SPI2_MOSI_PIN), .rcc = RCC_APB1(SPI2), .af = GPIO_AF5_SPI2, .leadingEdge = SPI2_LEADING_EDGE, .divisorMap = spiDivisorMapSlow },
|
{ .dev = SPI1, .nss = IO_TAG(SPI1_NSS_PIN), .sck = IO_TAG(SPI1_SCK_PIN), .miso = IO_TAG(SPI1_MISO_PIN), .mosi = IO_TAG(SPI1_MOSI_PIN), .rcc = RCC_APB2(SPI1), .af = GPIO_AF5_SPI1, .divisorMap = spiDivisorMapFast },
|
||||||
{ .dev = SPI3, .nss = IO_TAG(SPI3_NSS_PIN), .sck = IO_TAG(SPI3_SCK_PIN), .miso = IO_TAG(SPI3_MISO_PIN), .mosi = IO_TAG(SPI3_MOSI_PIN), .rcc = RCC_APB1(SPI3), .af = GPIO_AF6_SPI3, .leadingEdge = SPI3_LEADING_EDGE, .divisorMap = spiDivisorMapSlow },
|
#else
|
||||||
{ .dev = SPI4, .nss = IO_TAG(SPI4_NSS_PIN), .sck = IO_TAG(SPI4_SCK_PIN), .miso = IO_TAG(SPI4_MISO_PIN), .mosi = IO_TAG(SPI4_MOSI_PIN), .rcc = RCC_APB2(SPI4), .af = GPIO_AF5_SPI4, .leadingEdge = SPI4_LEADING_EDGE, .divisorMap = spiDivisorMapSlow }
|
{ .dev = NULL }, // No SPI1
|
||||||
|
#endif
|
||||||
|
#ifdef USE_SPI_DEVICE_2
|
||||||
|
{ .dev = SPI2, .nss = IO_TAG(SPI2_NSS_PIN), .sck = IO_TAG(SPI2_SCK_PIN), .miso = IO_TAG(SPI2_MISO_PIN), .mosi = IO_TAG(SPI2_MOSI_PIN), .rcc = RCC_APB1(SPI2), .af = GPIO_AF5_SPI2, .divisorMap = spiDivisorMapSlow },
|
||||||
|
#else
|
||||||
|
{ .dev = NULL }, // No SPI2
|
||||||
|
#endif
|
||||||
|
#ifdef USE_SPI_DEVICE_3
|
||||||
|
{ .dev = SPI3, .nss = IO_TAG(SPI3_NSS_PIN), .sck = IO_TAG(SPI3_SCK_PIN), .miso = IO_TAG(SPI3_MISO_PIN), .mosi = IO_TAG(SPI3_MOSI_PIN), .rcc = RCC_APB1(SPI3), .af = GPIO_AF6_SPI3, .divisorMap = spiDivisorMapSlow },
|
||||||
|
#else
|
||||||
|
{ .dev = NULL }, // No SPI3
|
||||||
|
#endif
|
||||||
|
#ifdef USE_SPI_DEVICE_4
|
||||||
|
{ .dev = SPI4, .nss = IO_TAG(SPI4_NSS_PIN), .sck = IO_TAG(SPI4_SCK_PIN), .miso = IO_TAG(SPI4_MISO_PIN), .mosi = IO_TAG(SPI4_MOSI_PIN), .rcc = RCC_APB2(SPI4), .af = GPIO_AF5_SPI4, .divisorMap = spiDivisorMapSlow }
|
||||||
|
#else
|
||||||
|
{ .dev = NULL } // No SPI4
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
SPIDevice spiDeviceByInstance(SPI_TypeDef *instance)
|
SPIDevice spiDeviceByInstance(SPI_TypeDef *instance)
|
||||||
|
@ -138,12 +133,16 @@ void spiTimeoutUserCallback(SPI_TypeDef *instance)
|
||||||
spiHardwareMap[device].errorCount++;
|
spiHardwareMap[device].errorCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void spiInitDevice(SPIDevice device)
|
bool spiInitDevice(SPIDevice device, bool leadingEdge)
|
||||||
{
|
{
|
||||||
spiDevice_t *spi = &(spiHardwareMap[device]);
|
spiDevice_t *spi = &(spiHardwareMap[device]);
|
||||||
|
|
||||||
if (!spi->dev) {
|
if (!spi->dev) {
|
||||||
return;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (spi->initDone) {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable SPI clock
|
// Enable SPI clock
|
||||||
|
@ -154,7 +153,7 @@ void spiInitDevice(SPIDevice device)
|
||||||
IOInit(IOGetByTag(spi->miso), OWNER_SPI, RESOURCE_SPI_MISO, device + 1);
|
IOInit(IOGetByTag(spi->miso), OWNER_SPI, RESOURCE_SPI_MISO, device + 1);
|
||||||
IOInit(IOGetByTag(spi->mosi), OWNER_SPI, RESOURCE_SPI_MOSI, device + 1);
|
IOInit(IOGetByTag(spi->mosi), OWNER_SPI, RESOURCE_SPI_MOSI, device + 1);
|
||||||
|
|
||||||
if (spi->leadingEdge == true) {
|
if (leadingEdge) {
|
||||||
IOConfigGPIOAF(IOGetByTag(spi->sck), SPI_IO_AF_SCK_CFG_LOW, spi->af);
|
IOConfigGPIOAF(IOGetByTag(spi->sck), SPI_IO_AF_SCK_CFG_LOW, spi->af);
|
||||||
} else {
|
} else {
|
||||||
IOConfigGPIOAF(IOGetByTag(spi->sck), SPI_IO_AF_SCK_CFG_HIGH, spi->af);
|
IOConfigGPIOAF(IOGetByTag(spi->sck), SPI_IO_AF_SCK_CFG_HIGH, spi->af);
|
||||||
|
@ -175,8 +174,8 @@ void spiInitDevice(SPIDevice device)
|
||||||
.TransferDirection = SPI_DIRECTION_2LINES,
|
.TransferDirection = SPI_DIRECTION_2LINES,
|
||||||
.Mode = SPI_MODE_MASTER,
|
.Mode = SPI_MODE_MASTER,
|
||||||
.DataWidth = SPI_DATASIZE_8BIT,
|
.DataWidth = SPI_DATASIZE_8BIT,
|
||||||
.ClockPolarity = spi->leadingEdge ? SPI_POLARITY_LOW : SPI_POLARITY_HIGH,
|
.ClockPolarity = leadingEdge ? SPI_POLARITY_LOW : SPI_POLARITY_HIGH,
|
||||||
.ClockPhase = spi->leadingEdge ? SPI_PHASE_1EDGE : SPI_PHASE_2EDGE,
|
.ClockPhase = leadingEdge ? SPI_PHASE_1EDGE : SPI_PHASE_2EDGE,
|
||||||
.NSS = SPI_NSS_SOFT,
|
.NSS = SPI_NSS_SOFT,
|
||||||
.BaudRate = SPI_BAUDRATEPRESCALER_8,
|
.BaudRate = SPI_BAUDRATEPRESCALER_8,
|
||||||
.BitOrder = SPI_FIRSTBIT_MSB,
|
.BitOrder = SPI_FIRSTBIT_MSB,
|
||||||
|
@ -193,44 +192,9 @@ void spiInitDevice(SPIDevice device)
|
||||||
if (spi->nss) {
|
if (spi->nss) {
|
||||||
IOHi(IOGetByTag(spi->nss));
|
IOHi(IOGetByTag(spi->nss));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
bool spiInit(SPIDevice device)
|
spi->initDone = true;
|
||||||
{
|
return true;
|
||||||
switch (device)
|
|
||||||
{
|
|
||||||
case SPIINVALID:
|
|
||||||
return false;
|
|
||||||
case SPIDEV_1:
|
|
||||||
#if defined(USE_SPI_DEVICE_1)
|
|
||||||
spiInitDevice(device);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case SPIDEV_2:
|
|
||||||
#if defined(USE_SPI_DEVICE_2)
|
|
||||||
spiInitDevice(device);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case SPIDEV_3:
|
|
||||||
#if defined(USE_SPI_DEVICE_3)
|
|
||||||
spiInitDevice(device);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case SPIDEV_4:
|
|
||||||
#if defined(USE_SPI_DEVICE_4)
|
|
||||||
spiInitDevice(device);
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t spiTransferByte(SPI_TypeDef *instance, uint8_t txByte)
|
uint8_t spiTransferByte(SPI_TypeDef *instance, uint8_t txByte)
|
||||||
|
|
|
@ -381,27 +381,6 @@ void init(void)
|
||||||
// Initialize buses
|
// Initialize buses
|
||||||
busInit();
|
busInit();
|
||||||
|
|
||||||
#ifdef USE_SPI
|
|
||||||
#ifdef USE_SPI_DEVICE_1
|
|
||||||
spiInit(SPIDEV_1);
|
|
||||||
#endif
|
|
||||||
#ifdef USE_SPI_DEVICE_2
|
|
||||||
spiInit(SPIDEV_2);
|
|
||||||
#endif
|
|
||||||
#ifdef USE_SPI_DEVICE_3
|
|
||||||
#ifdef ALIENFLIGHTF3
|
|
||||||
if (hardwareRevision == AFF3_REV_2) {
|
|
||||||
spiInit(SPIDEV_3);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
spiInit(SPIDEV_3);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#ifdef USE_SPI_DEVICE_4
|
|
||||||
spiInit(SPIDEV_4);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_HARDWARE_REVISION_DETECTION
|
#ifdef USE_HARDWARE_REVISION_DETECTION
|
||||||
updateHardwareRevision();
|
updateHardwareRevision();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -126,7 +126,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PC2
|
#define SPI2_MISO_PIN PC2
|
||||||
#define SPI2_MOSI_PIN PC3
|
#define SPI2_MOSI_PIN PC3
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define SPI3_NSS_PIN PA15
|
#define SPI3_NSS_PIN PA15
|
||||||
#define SPI3_SCK_PIN PB3
|
#define SPI3_SCK_PIN PB3
|
||||||
|
|
|
@ -134,7 +134,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PC2
|
#define SPI2_MISO_PIN PC2
|
||||||
#define SPI2_MOSI_PIN PC3
|
#define SPI2_MOSI_PIN PC3
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define SPI3_NSS_PIN PA15
|
#define SPI3_NSS_PIN PA15
|
||||||
#define SPI3_SCK_PIN PB3
|
#define SPI3_SCK_PIN PB3
|
||||||
|
|
|
@ -129,7 +129,6 @@
|
||||||
#define SPI4_SCK_PIN PE12
|
#define SPI4_SCK_PIN PE12
|
||||||
#define SPI4_MISO_PIN PE13
|
#define SPI4_MISO_PIN PE13
|
||||||
#define SPI4_MOSI_PIN PE14
|
#define SPI4_MOSI_PIN PE14
|
||||||
#define SPI4_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_OSD
|
#define USE_OSD
|
||||||
#define USE_MAX7456
|
#define USE_MAX7456
|
||||||
|
|
|
@ -117,7 +117,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
//MAX7456 / SPI RX
|
//MAX7456 / SPI RX
|
||||||
#define USE_SPI_DEVICE_3
|
#define USE_SPI_DEVICE_3
|
||||||
|
|
|
@ -83,7 +83,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_OSD
|
#define USE_OSD
|
||||||
#define USE_MAX7456
|
#define USE_MAX7456
|
||||||
|
|
|
@ -121,7 +121,6 @@
|
||||||
#define SPI3_SCK_PIN PC10
|
#define SPI3_SCK_PIN PC10
|
||||||
#define SPI3_MISO_PIN PC11
|
#define SPI3_MISO_PIN PC11
|
||||||
#define SPI3_MOSI_PIN PC12
|
#define SPI3_MOSI_PIN PC12
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_I2C
|
#define USE_I2C
|
||||||
#define USE_I2C_DEVICE_1
|
#define USE_I2C_DEVICE_1
|
||||||
|
|
|
@ -108,7 +108,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_SPI_DEVICE_3
|
#define USE_SPI_DEVICE_3
|
||||||
#define SPI3_NSS_PIN PA15
|
#define SPI3_NSS_PIN PA15
|
||||||
|
|
|
@ -94,7 +94,6 @@
|
||||||
#define SPI3_MISO_PIN PB4
|
#define SPI3_MISO_PIN PB4
|
||||||
#define SPI3_MOSI_PIN PB5
|
#define SPI3_MOSI_PIN PB5
|
||||||
#define SPI3_NSS_PIN PB6
|
#define SPI3_NSS_PIN PB6
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_SDCARD
|
#define USE_SDCARD
|
||||||
#define USE_SDCARD_SPI
|
#define USE_SDCARD_SPI
|
||||||
|
|
|
@ -82,7 +82,6 @@
|
||||||
#define SPI1_SCK_PIN PA5
|
#define SPI1_SCK_PIN PA5
|
||||||
#define SPI1_MISO_PIN PA6
|
#define SPI1_MISO_PIN PA6
|
||||||
#define SPI1_MOSI_PIN PA7
|
#define SPI1_MOSI_PIN PA7
|
||||||
#define SPI1_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_SDCARD
|
#define USE_SDCARD
|
||||||
#define USE_SDCARD_SPI
|
#define USE_SDCARD_SPI
|
||||||
|
|
|
@ -84,7 +84,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_SPI_DEVICE_3
|
#define USE_SPI_DEVICE_3
|
||||||
#define SPI3_NSS_PIN PA15
|
#define SPI3_NSS_PIN PA15
|
||||||
|
|
|
@ -92,7 +92,6 @@
|
||||||
|
|
||||||
#ifdef USE_SDCARD
|
#ifdef USE_SDCARD
|
||||||
#define USE_SDCARD_SPI
|
#define USE_SDCARD_SPI
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define SDCARD_DETECT_INVERTED
|
#define SDCARD_DETECT_INVERTED
|
||||||
#define SDCARD_DETECT_PIN PB2
|
#define SDCARD_DETECT_PIN PB2
|
||||||
|
|
|
@ -60,7 +60,6 @@
|
||||||
#define SPI3_SCK_PIN PC10
|
#define SPI3_SCK_PIN PC10
|
||||||
#define SPI3_MISO_PIN PC11
|
#define SPI3_MISO_PIN PC11
|
||||||
#define SPI3_MOSI_PIN PC12
|
#define SPI3_MOSI_PIN PC12
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
// *************** M25P256 flash ********************
|
// *************** M25P256 flash ********************
|
||||||
#define USE_FLASHFS
|
#define USE_FLASHFS
|
||||||
|
|
|
@ -84,7 +84,6 @@
|
||||||
#define SPI1_SCK_PIN PA5
|
#define SPI1_SCK_PIN PA5
|
||||||
#define SPI1_MISO_PIN PA6
|
#define SPI1_MISO_PIN PA6
|
||||||
#define SPI1_MOSI_PIN PA7
|
#define SPI1_MOSI_PIN PA7
|
||||||
#define SPI1_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define SPI2_NSS_PIN PB12
|
#define SPI2_NSS_PIN PB12
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
|
|
|
@ -136,7 +136,6 @@
|
||||||
#define SPI3_SCK_PIN PB3
|
#define SPI3_SCK_PIN PB3
|
||||||
#define SPI3_MISO_PIN PB4
|
#define SPI3_MISO_PIN PB4
|
||||||
#define SPI3_MOSI_PIN PB5
|
#define SPI3_MOSI_PIN PB5
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,6 @@
|
||||||
#define SPI3_SCK_PIN PB3
|
#define SPI3_SCK_PIN PB3
|
||||||
#define SPI3_MISO_PIN PB4
|
#define SPI3_MISO_PIN PB4
|
||||||
#define SPI3_MOSI_PIN PB5
|
#define SPI3_MOSI_PIN PB5
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,6 @@
|
||||||
#define SPI3_SCK_PIN PB3
|
#define SPI3_SCK_PIN PB3
|
||||||
#define SPI3_MISO_PIN PB4
|
#define SPI3_MISO_PIN PB4
|
||||||
#define SPI3_MOSI_PIN PB5
|
#define SPI3_MOSI_PIN PB5
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,6 @@
|
||||||
#define SPI3_SCK_PIN PB3
|
#define SPI3_SCK_PIN PB3
|
||||||
#define SPI3_MISO_PIN PB4
|
#define SPI3_MISO_PIN PB4
|
||||||
#define SPI3_MOSI_PIN PB5
|
#define SPI3_MOSI_PIN PB5
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,6 @@
|
||||||
# define SDCARD_SPI_BUS BUS_SPI3
|
# define SDCARD_SPI_BUS BUS_SPI3
|
||||||
# define SDCARD_CS_PIN PD2
|
# define SDCARD_CS_PIN PD2
|
||||||
# define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
# define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
|
||||||
# define SPI3_CLOCK_LEADING_EDGE // TODO(digitalentity): implement DEVFLAGS_SPI_MODE_0 flag in SPI drivers
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// *************** UART *****************************
|
// *************** UART *****************************
|
||||||
|
|
|
@ -96,7 +96,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
//#define USE_RX_SPI
|
//#define USE_RX_SPI
|
||||||
#define RX_SPI_INSTANCE SPI2
|
#define RX_SPI_INSTANCE SPI2
|
||||||
|
|
|
@ -180,7 +180,6 @@
|
||||||
|
|
||||||
#if defined(OMNIBUSF4PRO) || defined(OMNIBUSF4V3)
|
#if defined(OMNIBUSF4PRO) || defined(OMNIBUSF4V3)
|
||||||
#define USE_SPI_DEVICE_2
|
#define USE_SPI_DEVICE_2
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
#define SPI2_NSS_PIN PB12
|
#define SPI2_NSS_PIN PB12
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
|
|
|
@ -136,8 +136,6 @@
|
||||||
#define SPI4_SCK_PIN PE2
|
#define SPI4_SCK_PIN PE2
|
||||||
#define SPI4_MISO_PIN PE5
|
#define SPI4_MISO_PIN PE5
|
||||||
#define SPI4_MOSI_PIN PE6
|
#define SPI4_MOSI_PIN PE6
|
||||||
#define SPI4_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
|
|
||||||
#define USE_OSD
|
#define USE_OSD
|
||||||
#define USE_MAX7456
|
#define USE_MAX7456
|
||||||
|
|
|
@ -109,7 +109,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_SDCARD
|
#define USE_SDCARD
|
||||||
#define USE_SDCARD_SPI
|
#define USE_SDCARD_SPI
|
||||||
|
|
|
@ -101,7 +101,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define USE_SDCARD
|
#define USE_SDCARD
|
||||||
#define USE_SDCARD_SPI
|
#define USE_SDCARD_SPI
|
||||||
|
|
|
@ -101,7 +101,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define SPI3_NSS_PIN PA15
|
#define SPI3_NSS_PIN PA15
|
||||||
#define SPI3_SCK_PIN PB3
|
#define SPI3_SCK_PIN PB3
|
||||||
|
|
|
@ -120,7 +120,6 @@
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
#define SPI2_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
#define SPI3_NSS_PIN PA15 // NC
|
#define SPI3_NSS_PIN PA15 // NC
|
||||||
#define SPI3_SCK_PIN PB3 // NC
|
#define SPI3_SCK_PIN PB3 // NC
|
||||||
|
|
|
@ -153,7 +153,6 @@
|
||||||
#define SPI3_SCK_PIN PB3
|
#define SPI3_SCK_PIN PB3
|
||||||
#define SPI3_MISO_PIN PB4
|
#define SPI3_MISO_PIN PB4
|
||||||
#define SPI3_MOSI_PIN PB5
|
#define SPI3_MOSI_PIN PB5
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
#define SDCARD_SPI_BUS BUS_SPI3
|
#define SDCARD_SPI_BUS BUS_SPI3
|
||||||
#define SDCARD_CS_PIN PC3
|
#define SDCARD_CS_PIN PC3
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,6 @@
|
||||||
#define SPI3_SCK_PIN PC10
|
#define SPI3_SCK_PIN PC10
|
||||||
#define SPI3_MISO_PIN PC11
|
#define SPI3_MISO_PIN PC11
|
||||||
#define SPI3_MOSI_PIN PC12
|
#define SPI3_MOSI_PIN PC12
|
||||||
#define SPI3_CLOCK_LEADING_EDGE
|
|
||||||
|
|
||||||
// ADC inputs
|
// ADC inputs
|
||||||
#define BOARD_HAS_VOLTAGE_DIVIDER
|
#define BOARD_HAS_VOLTAGE_DIVIDER
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue