1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-15 20:35:33 +03:00

New SPI API supporting DMA

Call targetConfiguration() once before config is loaded and again afterwards in case the config needs to be changed to load from SD card etc

Drop SPI clock during binding

Remove debug

Add per device SPI DMA enable

Fix sdioPinConfigure() declaration warning

Reduce clock speed during SPI RX initialisation
This commit is contained in:
Steve Evans 2021-04-20 19:45:56 +01:00 committed by Michael Keller
parent 6d286e25f1
commit 87c8847c13
136 changed files with 3585 additions and 2721 deletions

View file

@ -31,46 +31,62 @@
static uint8_t i2cRegisteredDeviceCount = 0;
bool i2cBusWriteRegister(const busDevice_t *busdev, uint8_t reg, uint8_t data)
bool i2cBusWriteRegister(const extDevice_t *dev, uint8_t reg, uint8_t data)
{
return i2cWrite(busdev->busdev_u.i2c.device, busdev->busdev_u.i2c.address, reg, data);
return i2cWrite(dev->bus->busType_u.i2c.device, dev->busType_u.i2c.address, reg, data);
}
bool i2cBusWriteRegisterStart(const busDevice_t *busdev, uint8_t reg, uint8_t data)
bool i2cBusWriteRegisterStart(const extDevice_t *dev, uint8_t reg, uint8_t data)
{
// Need a static value, not on the stack
static uint8_t byte;
byte = data;
return i2cWriteBuffer(busdev->busdev_u.i2c.device, busdev->busdev_u.i2c.address, reg, sizeof (byte), &byte);
return i2cWriteBuffer(dev->bus->busType_u.i2c.device, dev->busType_u.i2c.address, reg, sizeof (byte), &byte);
}
bool i2cBusReadRegisterBuffer(const busDevice_t *busdev, uint8_t reg, uint8_t *data, uint8_t length)
bool i2cBusReadRegisterBuffer(const extDevice_t *dev, uint8_t reg, uint8_t *data, uint8_t length)
{
return i2cRead(busdev->busdev_u.i2c.device, busdev->busdev_u.i2c.address, reg, length, data);
return i2cRead(dev->bus->busType_u.i2c.device, dev->busType_u.i2c.address, reg, length, data);
}
uint8_t i2cBusReadRegister(const busDevice_t *busdev, uint8_t reg)
uint8_t i2cBusReadRegister(const extDevice_t *dev, uint8_t reg)
{
uint8_t data;
i2cRead(busdev->busdev_u.i2c.device, busdev->busdev_u.i2c.address, reg, 1, &data);
i2cRead(dev->bus->busType_u.i2c.device, dev->busType_u.i2c.address, reg, 1, &data);
return data;
}
bool i2cBusReadRegisterBufferStart(const busDevice_t *busdev, uint8_t reg, uint8_t *data, uint8_t length)
bool i2cBusReadRegisterBufferStart(const extDevice_t *dev, uint8_t reg, uint8_t *data, uint8_t length)
{
return i2cReadBuffer(busdev->busdev_u.i2c.device, busdev->busdev_u.i2c.address, reg, length, data);
return i2cReadBuffer(dev->bus->busType_u.i2c.device, dev->busType_u.i2c.address, reg, length, data);
}
bool i2cBusBusy(const busDevice_t *busdev, bool *error)
bool i2cBusBusy(const extDevice_t *dev, bool *error)
{
return i2cBusy(busdev->busdev_u.i2c.device, error);
return i2cBusy(dev->bus->busType_u.i2c.device, error);
}
void i2cBusDeviceRegister(const busDevice_t *busdev)
bool i2cBusSetInstance(extDevice_t *dev, uint32_t device)
{
UNUSED(busdev);
// I2C bus structures to associate with external devices
static busDevice_t i2cBus[I2CDEV_COUNT];
if ((device < 1) || (device > I2CDEV_COUNT)) {
return false;
}
dev->bus = &i2cBus[I2C_CFG_TO_DEV(device)];
dev->bus->busType = BUS_TYPE_I2C;
dev->bus->busType_u.i2c.device = I2C_CFG_TO_DEV(device);
return true;
}
void i2cBusDeviceRegister(const extDevice_t *dev)
{
UNUSED(dev);
i2cRegisteredDeviceCount++;
}