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

[G4] I2C support

This commit is contained in:
jflyper 2020-03-11 19:05:54 +09:00
parent d733c48b04
commit 00e57e6049
3 changed files with 55 additions and 8 deletions

View file

@ -144,6 +144,51 @@ const i2cHardware_t i2cHardware[I2CDEV_COUNT] = {
.er_irq = I2C4_ER_IRQn,
},
#endif
#elif defined(STM32G4)
#ifdef USE_I2C_DEVICE_1
{
.device = I2CDEV_1,
.reg = I2C1,
.sclPins = { I2CPINDEF(PA15, GPIO_AF4_I2C1), I2CPINDEF(PB6, GPIO_AF4_I2C1), I2CPINDEF(PB8, GPIO_AF4_I2C1), },
.sdaPins = { I2CPINDEF(PB7, GPIO_AF4_I2C1), I2CPINDEF(PB9, GPIO_AF4_I2C1), },
.rcc = RCC_APB11(I2C1),
.ev_irq = I2C1_EV_IRQn,
.er_irq = I2C1_ER_IRQn,
},
#endif
#ifdef USE_I2C_DEVICE_2
{
.device = I2CDEV_2,
.reg = I2C2,
.sclPins = { I2CPINDEF(PA9, GPIO_AF4_I2C2), },
.sdaPins = { I2CPINDEF(PA10, GPIO_AF4_I2C2), },
.rcc = RCC_APB11(I2C2),
.ev_irq = I2C2_EV_IRQn,
.er_irq = I2C2_ER_IRQn,
},
#endif
#ifdef USE_I2C_DEVICE_3
{
.device = I2CDEV_3,
.reg = I2C3,
.sclPins = { I2CPINDEF(PA10, GPIO_AF2_I2C3), I2CPINDEF(PC8, GPIO_AF8_I2C3), },
.sdaPins = { I2CPINDEF(PB5, GPIO_AF8_I2C3), I2CPINDEF(PC9, GPIO_AF8_I2C3), I2CPINDEF(PC11, GPIO_AF8_I2C3), },
.rcc = RCC_APB11(I2C3),
.ev_irq = I2C3_EV_IRQn,
.er_irq = I2C3_ER_IRQn,
},
#endif
#ifdef USE_I2C_DEVICE_4
{
.device = I2CDEV_4,
.reg = I2C4,
.sclPins = { I2CPINDEF(PB6, GPIO_AF3_I2C4), I2CPINDEF(PC6, GPIO_AF8_I2C4), },
.sdaPins = { I2CPINDEF(PB7, GPIO_AF4_I2C4), I2CPINDEF(PC7, GPIO_AF8_I2C4), },
.rcc = RCC_APB12(I2C4),
.ev_irq = I2C4_EV_IRQn,
.er_irq = I2C4_ER_IRQn,
},
#endif
#endif
};
@ -264,7 +309,7 @@ void i2cInit(I2CDevice device)
#if defined(STM32F7)
IOConfigGPIOAF(scl, pDev->pullUp ? IOCFG_I2C_PU : IOCFG_I2C, GPIO_AF4_I2C);
IOConfigGPIOAF(sda, pDev->pullUp ? IOCFG_I2C_PU : IOCFG_I2C, GPIO_AF4_I2C);
#elif defined(STM32H7)
#elif defined(STM32H7) || defined(STM32G4)
IOConfigGPIOAF(scl, pDev->pullUp ? IOCFG_I2C_PU : IOCFG_I2C, pDev->sclAF);
IOConfigGPIOAF(sda, pDev->pullUp ? IOCFG_I2C_PU : IOCFG_I2C, pDev->sdaAF);
#else
@ -284,8 +329,10 @@ void i2cInit(I2CDevice device)
uint32_t i2cPclk;
#if defined(STM32F7)
// Clock source configured in startup/system_stm32f7xx.c as:
#if defined(STM32F7) || defined(STM32G4)
// F7 Clock source configured in startup/system_stm32f7xx.c as:
// I2C1234 : PCLK1
// G4 Clock source configured in startup/system_stm32g4xx.c as:
// I2C1234 : PCLK1
i2cPclk = HAL_RCC_GetPCLK1Freq();
#elif defined(STM32H7)