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:
parent
6d286e25f1
commit
87c8847c13
136 changed files with 3585 additions and 2721 deletions
|
@ -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++;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue