diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp index 1a5599473..28e13022c 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp +++ b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp @@ -206,11 +206,11 @@ int main() RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | KEYS_RCC_AHB1Periph | LCD_RCC_AHB1Periph | BACKLIGHT_RCC_AHB1Periph | AUX_SERIAL_RCC_AHB1Periph | AUX2_SERIAL_RCC_AHB1Periph | - I2C_TP_RCC_AHB1Periph | KEYS_BACKLIGHT_RCC_AHB1Periph | + I2C_B1_RCC_AHB1Periph | KEYS_BACKLIGHT_RCC_AHB1Periph | SD_RCC_AHB1Periph, ENABLE); RCC_APB1PeriphClockCmd(ROTARY_ENCODER_RCC_APB1Periph | LCD_RCC_APB1Periph | BACKLIGHT_RCC_APB1Periph | - INTERRUPT_xMS_RCC_APB1Periph | I2C_TP_RCC_APB1Periph | + INTERRUPT_xMS_RCC_APB1Periph | I2C_B1_RCC_APB1Periph | AUX_SERIAL_RCC_APB1Periph | AUX2_SERIAL_RCC_APB1Periph | SD_RCC_APB1Periph, ENABLE); diff --git a/radio/src/targets/common/arm/stm32/lsm6ds_driver.cpp b/radio/src/targets/common/arm/stm32/lsm6ds_driver.cpp index 4a33009b4..d547ac2b3 100644 --- a/radio/src/targets/common/arm/stm32/lsm6ds_driver.cpp +++ b/radio/src/targets/common/arm/stm32/lsm6ds_driver.cpp @@ -193,38 +193,38 @@ static const char configure[][2] = { static void i2c2Init() { - I2C_DeInit(I2CX); + I2C_DeInit(I2C_B2); I2C_InitTypeDef I2C_InitStructure; - I2C_InitStructure.I2C_ClockSpeed = I2CX_SPEED; + I2C_InitStructure.I2C_ClockSpeed = I2C_B2_SPEED; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = 0x00; I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; - I2C_Init(I2CX, &I2C_InitStructure); - I2C_Cmd(I2CX, ENABLE); + I2C_Init(I2C_B2, &I2C_InitStructure); + I2C_Cmd(I2C_B2, ENABLE); - GPIO_PinAFConfig(I2CX_SCL_GPIO, I2CX_SCL_GPIO_PinSource, I2CX_GPIO_AF); - GPIO_PinAFConfig(I2CX_SDA_GPIO, I2CX_SDA_GPIO_PinSource, I2CX_GPIO_AF); + GPIO_PinAFConfig(I2C_B2_SCL_GPIO, I2C_B2_SCL_GPIO_PinSource, I2C_B2_GPIO_AF); + GPIO_PinAFConfig(I2C_B2_SDA_GPIO, I2C_B2_SDA_GPIO_PinSource, I2C_B2_GPIO_AF); GPIO_InitTypeDef GPIO_InitStructure; - GPIO_InitStructure.GPIO_Pin = I2CX_SCL_GPIO_PIN; + GPIO_InitStructure.GPIO_Pin = I2C_B2_SCL_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_Init(I2CX_SCL_GPIO, &GPIO_InitStructure); + GPIO_Init(I2C_B2_SCL_GPIO, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = I2CX_SDA_GPIO_PIN; - GPIO_Init(I2CX_SDA_GPIO, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = I2C_B2_SDA_GPIO_PIN; + GPIO_Init(I2C_B2_SDA_GPIO, &GPIO_InitStructure); } #define I2C_TIMEOUT_MAX 10000 bool I2C2_WaitEvent(uint32_t event) { uint32_t timeout = I2C_TIMEOUT_MAX; - while (!I2C_CheckEvent(I2CX, event)) { + while (!I2C_CheckEvent(I2C_B2, event)) { if ((timeout--) == 0) return false; } return true; @@ -233,7 +233,7 @@ bool I2C2_WaitEvent(uint32_t event) bool I2C2_WaitEventCleared(uint32_t event) { uint32_t timeout = I2C_TIMEOUT_MAX; - while (I2C_CheckEvent(I2CX, event)) { + while (I2C_CheckEvent(I2C_B2, event)) { if ((timeout--) == 0) { TRACE("I2C Timeout!"); return false; @@ -247,23 +247,23 @@ int setGyroRegister(uint8_t address, uint8_t value) if (!I2C2_WaitEventCleared(I2C_FLAG_BUSY)) return -1; - I2C_GenerateSTART(I2CX, ENABLE); + I2C_GenerateSTART(I2C_B2, ENABLE); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return -1; - I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Transmitter); + I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Transmitter); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) return -1; - I2C_SendData(I2CX, address); + I2C_SendData(I2C_B2, address); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING)) return -1; - I2C_SendData(I2CX, value); + I2C_SendData(I2C_B2, value); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED)) return -1; - I2C_GenerateSTOP(I2CX, ENABLE); + I2C_GenerateSTOP(I2C_B2, ENABLE); return 0; } @@ -273,31 +273,31 @@ int readGyroRegister(uint8_t address) if (!I2C2_WaitEventCleared(I2C_FLAG_BUSY)) return -1; - I2C_GenerateSTART(I2CX, ENABLE); + I2C_GenerateSTART(I2C_B2, ENABLE); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return -1; - I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Transmitter); + I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Transmitter); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) return -1; - I2C_SendData(I2CX, address); + I2C_SendData(I2C_B2, address); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED)) return -1; - I2C_GenerateSTART(I2CX, ENABLE); + I2C_GenerateSTART(I2C_B2, ENABLE); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return -1; - I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Receiver); + I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Receiver); - I2C_AcknowledgeConfig(I2CX, DISABLE); + I2C_AcknowledgeConfig(I2C_B2, DISABLE); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_RECEIVED)) return -1; - uint8_t value = I2C_ReceiveData(I2CX); + uint8_t value = I2C_ReceiveData(I2C_B2); - I2C_GenerateSTOP(I2CX, ENABLE); + I2C_GenerateSTOP(I2C_B2, ENABLE); return value; } @@ -328,33 +328,33 @@ int gyroRead(uint8_t buffer[GYRO_BUFFER_LENGTH]) if (!I2C2_WaitEventCleared(I2C_FLAG_BUSY)) return -1; - I2C_GenerateSTART(I2CX, ENABLE); + I2C_GenerateSTART(I2C_B2, ENABLE); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return -1; - I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Transmitter); + I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Transmitter); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) return -1; - I2C_SendData(I2CX, LSM6DS_GYRO_OUT_X_L_ADDR); + I2C_SendData(I2C_B2, LSM6DS_GYRO_OUT_X_L_ADDR); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED)) return -1; - I2C_GenerateSTART(I2CX, ENABLE); + I2C_GenerateSTART(I2C_B2, ENABLE); if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return -1; - I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Receiver); + I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Receiver); - I2C_AcknowledgeConfig(I2CX, ENABLE); + I2C_AcknowledgeConfig(I2C_B2, ENABLE); for (uint8_t i=0; iInstance==I2C1) || (hi2c->Instance==I2C3)) // TP { - GPIO_PinAFConfig(I2C_TP_GPIO, I2C_TP_SCL_GPIO_PinSource, I2C_TP_GPIO_AF); - GPIO_PinAFConfig(I2C_TP_GPIO, I2C_TP_SDA_GPIO_PinSource, I2C_TP_GPIO_AF); + GPIO_PinAFConfig(I2C_B1_GPIO, I2C_B1_SCL_GPIO_PinSource, I2C_B1_GPIO_AF); + GPIO_PinAFConfig(I2C_B1_GPIO, I2C_B1_SDA_GPIO_PinSource, I2C_B1_GPIO_AF); - GPIO_InitStruct.GPIO_Pin = I2C_TP_SCL_GPIO_PIN | I2C_TP_SDA_GPIO_PIN; + GPIO_InitStruct.GPIO_Pin = I2C_B1_SCL_GPIO_PIN | I2C_B1_SDA_GPIO_PIN; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStruct.GPIO_OType = GPIO_OType_OD; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_Init(I2C_TP_GPIO, &GPIO_InitStruct); + GPIO_Init(I2C_B1_GPIO, &GPIO_InitStruct); } +#if defined(IMU_LSM6DS33) if (hi2c->Instance==I2C2) // IMU { - GPIO_PinAFConfig(I2C_IMU_GPIO, I2C_IMU_SCL_GPIO_PinSource, I2C_IMU_GPIO_AF); - GPIO_PinAFConfig(I2C_IMU_GPIO, I2C_IMU_SDA_GPIO_PinSource, I2C_IMU_GPIO_AF); + GPIO_PinAFConfig(I2C_B2_GPIO, I2C_B2_SCL_GPIO_PinSource, I2C_B2_GPIO_AF); + GPIO_PinAFConfig(I2C_B2_GPIO, I2C_B2_SDA_GPIO_PinSource, I2C_B2_GPIO_AF); - GPIO_InitStruct.GPIO_Pin = I2C_IMU_SCL_GPIO_PIN | I2C_IMU_SDA_GPIO_PIN; + GPIO_InitStruct.GPIO_Pin = I2C_B2_SCL_GPIO_PIN | I2C_B2_SDA_GPIO_PIN; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStruct.GPIO_OType = GPIO_OType_OD; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_Init(I2C_IMU_GPIO, &GPIO_InitStruct); + GPIO_Init(I2C_B2_GPIO, &GPIO_InitStruct); } +#endif /* Peripheral clock enable */ - if (I2C_TP == I2C1) + if (I2C_B1 == I2C1) __HAL_RCC_I2C1_CLK_ENABLE(); - else if (I2C_TP == I2C2) + else if (I2C_B1 == I2C2) __HAL_RCC_I2C2_CLK_ENABLE(); - else if (I2C_TP == I2C3) + else if (I2C_B1 == I2C3) __HAL_RCC_I2C3_CLK_ENABLE(); else - TRACE("I2C ERROR: HAL_I2C_MspInit() I2C misconfiguration"); + TRACE("I2C B1 ERROR: HAL_I2C_MspInit() I2C misconfiguration"); + +#if defined(IMU_LSM6DS33) + /* Peripheral clock enable */ + if (I2C_B2 == I2C1) + __HAL_RCC_I2C1_CLK_ENABLE(); + else if (I2C_B2 == I2C2) + __HAL_RCC_I2C2_CLK_ENABLE(); + else if (I2C_B2 == I2C3) + __HAL_RCC_I2C3_CLK_ENABLE(); + else + TRACE("I2C B2 ERROR: HAL_I2C_MspInit() I2C misconfiguration"); +#endif } /* De-initializes the GPIOx peripheral registers to their default reset values. @@ -171,15 +198,15 @@ void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c) GPIO_InitTypeDef GPIO_InitStructure; /* Configure the default Alternate Function in current IO */ - GPIO_PinAFConfig(I2C_TP_GPIO, I2C_TP_SCL_GPIO_PinSource, 0); - GPIO_PinAFConfig(I2C_TP_GPIO, I2C_TP_SDA_GPIO_PinSource, 0); + GPIO_PinAFConfig(I2C_B1_GPIO, I2C_B1_SCL_GPIO_PinSource, 0); + GPIO_PinAFConfig(I2C_B1_GPIO, I2C_B1_SDA_GPIO_PinSource, 0); - GPIO_InitStructure.GPIO_Pin = I2C_TP_SCL_GPIO_PIN | I2C_TP_SDA_GPIO_PIN; + GPIO_InitStructure.GPIO_Pin = I2C_B1_SCL_GPIO_PIN | I2C_B1_SDA_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; /* Configure a low value for IO Speed */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; /* Configure IO Direction in Input Floating Mode */ GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; /* Leave the configuration to Open Drain */ GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; /* Deactivate the Pull-up and Pull-down resistor for the current IO */ - GPIO_Init(I2C_TP_GPIO, &GPIO_InitStructure); + GPIO_Init(I2C_B1_GPIO, &GPIO_InitStructure); } /* Initializes the I2C according to the specified parameters diff --git a/radio/src/targets/horus/imu_lsm6ds33.cpp b/radio/src/targets/horus/imu_lsm6ds33.cpp index 41b7d80e5..2493207b8 100644 --- a/radio/src/targets/horus/imu_lsm6ds33.cpp +++ b/radio/src/targets/horus/imu_lsm6ds33.cpp @@ -34,13 +34,13 @@ bool I2C_LSM6DS33_ReadRegister(uint8_t reg, uint8_t * buf, uint8_t len) { if (HAL_I2C_Master_Transmit(&hi2c2, LSM6DS33_I2C_ADDR << 1, ®, 1, 10000) != HAL_OK) { - TRACE("I2C IMU ERROR: ReadRegister write reg. address failed"); + TRACE("I2C B2 ERROR: ReadRegister write reg. address failed"); return false; } if (HAL_I2C_Master_Receive(&hi2c2, LSM6DS33_I2C_ADDR << 1, buf, len, 10000) != HAL_OK) { - TRACE("I2C IMU ERROR: ReadRegister read register failed"); + TRACE("I2C B2 ERROR: ReadRegister read register failed"); return false; } return true; @@ -61,7 +61,7 @@ bool I2C_LSM6DS33_WriteRegister(uint8_t reg, uint8_t * buf, uint8_t len) if (HAL_I2C_Master_Transmit(&hi2c2, LSM6DS33_I2C_ADDR << 1, uAddrAndBuf, len + 1, 10000) != HAL_OK) { - TRACE("I2C IMU ERROR: WriteRegister failed"); + TRACE("I2C B2 ERROR: WriteRegister failed"); return false; } return true; @@ -146,8 +146,8 @@ void init_imu_i2c(void) { TRACE("I2C IMU Init"); - hi2c2.Instance = I2C_IMU; - hi2c2.Init.ClockSpeed = I2C_IMU_CLK_RATE; + hi2c2.Instance = I2C_B2; + hi2c2.Init.ClockSpeed = I2C_B2_CLK_RATE; hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c2.Init.OwnAddress1 = 0; hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; @@ -157,17 +157,17 @@ void init_imu_i2c(void) hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c2) != HAL_OK) { - TRACE("I2C IMU ERROR: HAL_I2C_Init() failed"); + TRACE("I2C B2 ERROR: HAL_I2C_Init() failed"); } // Configure Analogue filter if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK) { - TRACE("I2C IMU ERROR: HAL_I2CEx_ConfigAnalogFilter() failed"); + TRACE("I2C B2 ERROR: HAL_I2CEx_ConfigAnalogFilter() failed"); } // Configure Digital filter if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK) { - TRACE("I2C IMU ERROR: HAL_I2CEx_ConfigDigitalFilter() failed"); + TRACE("I2C B2 ERROR: HAL_I2CEx_ConfigDigitalFilter() failed"); } } @@ -175,7 +175,7 @@ bool imu_lsm6ds33_init(void) { uint8_t ui8_reg[2] = {0}; - GPIO_SetBits(AUX_IMU_PWR_GPIO, AUX_IMU_PWR_GPIO_PIN); // Turn on AUX1 power + GPIO_SetBits(AUX_I2C_B2_PWR_GPIO, AUX_I2C_B2_PWR_GPIO_PIN); // Turn on AUX1 power init_imu_i2c(); diff --git a/radio/src/targets/horus/tp_gt911.cpp b/radio/src/targets/horus/tp_gt911.cpp index f6a3c7c57..611152362 100644 --- a/radio/src/targets/horus/tp_gt911.cpp +++ b/radio/src/targets/horus/tp_gt911.cpp @@ -489,10 +489,10 @@ void TOUCH_AF_INT_Change(void) void I2C_Init_Radio(void) { - TRACE("I2C TP Init"); + TRACE("I2C B1 Init"); - hi2c1.Instance = I2C_TP; - hi2c1.Init.ClockSpeed = I2C_TP_CLK_RATE; + hi2c1.Instance = I2C_B1; + hi2c1.Init.ClockSpeed = I2C_B1_CLK_RATE; hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_16_9; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; @@ -502,17 +502,17 @@ void I2C_Init_Radio(void) hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c1) != HAL_OK) { - TRACE("I2C TP ERROR: HAL_I2C_Init() failed"); + TRACE("I2C B1 ERROR: HAL_I2C_Init() failed"); } // Configure Analogue filter if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) { - TRACE("I2C TP ERROR: HAL_I2CEx_ConfigAnalogFilter() failed"); + TRACE("I2C B1 ERROR: HAL_I2CEx_ConfigAnalogFilter() failed"); } // Configure Digital filter if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) { - TRACE("I2C TP ERROR: HAL_I2CEx_ConfigDigitalFilter() failed"); + TRACE("I2C B1 ERROR: HAL_I2CEx_ConfigDigitalFilter() failed"); } } @@ -532,7 +532,7 @@ bool I2C_GT911_WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len) if (HAL_I2C_Master_Transmit(&hi2c1, GT911_I2C_ADDR << 1, uAddrAndBuf, len + 2, 100) != HAL_OK) { - TRACE("I2C TP ERROR: WriteRegister failed"); + TRACE("I2C B1 ERROR: WriteRegister failed"); return false; } return true; @@ -546,13 +546,13 @@ bool I2C_GT911_ReadRegister(uint16_t reg, uint8_t * buf, uint8_t len) if (HAL_I2C_Master_Transmit(&hi2c1, GT911_I2C_ADDR << 1, uRegAddr, 2, 10) != HAL_OK) { - TRACE("I2C TP ERROR: ReadRegister write reg address failed"); + TRACE("I2C B1 ERROR: ReadRegister write reg address failed"); return false; } if (HAL_I2C_Master_Receive(&hi2c1, GT911_I2C_ADDR << 1, buf, len, 100) != HAL_OK) { - TRACE("I2C TP ERROR: ReadRegister read reg address failed"); + TRACE("I2C B1 ERROR: ReadRegister read reg address failed"); return false; } return true; @@ -677,15 +677,15 @@ bool touchPanelInit(void) bool I2C_ReInit(void) { - TRACE("I2C TP ReInit"); + TRACE("I2C B1 ReInit"); touchPanelDeInit(); if (HAL_I2C_DeInit(&hi2c1) != HAL_OK) - TRACE("I2C TP ReInit - I2C DeInit failed"); + TRACE("I2C B1 ReInit - I2C DeInit failed"); // If DeInit fails, try to re-init anyway if (!touchPanelInit()) { - TRACE("I2C TP ReInit - touchPanelInit failed"); + TRACE("I2C B1 ReInit - touchPanelInit failed"); return false; } return true; @@ -728,7 +728,7 @@ void touchPanelRead() touchGT911hiccups++; TRACE("GT911 I2C read XY error"); if (!I2C_ReInit()) - TRACE("I2C TP ReInit failed"); + TRACE("I2C B1 ReInit failed"); return; } @@ -750,7 +750,7 @@ void touchPanelRead() touchGT911hiccups++; TRACE("GT911 I2C data read error"); if (!I2C_ReInit()) - TRACE("I2C TP ReInit failed"); + TRACE("I2C B1 ReInit failed"); return; } if (touchState.event == TE_NONE || touchState.event == TE_UP || diff --git a/radio/src/targets/taranis/board.cpp b/radio/src/targets/taranis/board.cpp index db8d4cebb..a6ec36094 100644 --- a/radio/src/targets/taranis/board.cpp +++ b/radio/src/targets/taranis/board.cpp @@ -84,7 +84,7 @@ void boardInit() AUDIO_RCC_AHB1Periph | BACKLIGHT_RCC_AHB1Periph | ADC_RCC_AHB1Periph | - I2C_RCC_AHB1Periph | + I2C_B1_RCC_AHB1Periph | SD_RCC_AHB1Periph | HAPTIC_RCC_AHB1Periph | INTMODULE_RCC_AHB1Periph | @@ -95,7 +95,7 @@ void boardInit() TRAINER_RCC_AHB1Periph | TRAINER_MODULE_RCC_AHB1Periph | BT_RCC_AHB1Periph | - GYRO_RCC_AHB1Periph | + I2C_B2_RCC_AHB1Periph | USB_CHARGER_RCC_AHB1Periph, ENABLE); @@ -107,7 +107,7 @@ void boardInit() HAPTIC_RCC_APB1Periph | INTERRUPT_xMS_RCC_APB1Periph | TIMER_2MHz_RCC_APB1Periph | - I2C_RCC_APB1Periph | + I2C_B1_RCC_APB1Periph | SD_RCC_APB1Periph | TRAINER_RCC_APB1Periph | TELEMETRY_RCC_APB1Periph | @@ -116,7 +116,7 @@ void boardInit() TRAINER_MODULE_RCC_APB1Periph | MIXER_SCHEDULER_TIMER_RCC_APB1Periph | BT_RCC_APB1Periph | - GYRO_RCC_APB1Periph, + I2C_B2_RCC_APB1Periph, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG | diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 93873f5dd..5e8636fac 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -1920,67 +1920,67 @@ #define LCD_RCC_APB2Periph 0 // I2C Bus: EEPROM and CAT5137 digital pot for volume control -#define I2C_RCC_APB1Periph RCC_APB1Periph_I2C1 -#define I2C I2C1 -#define I2C_GPIO_AF GPIO_AF_I2C1 +#define I2C_B1_RCC_APB1Periph RCC_APB1Periph_I2C1 +#define I2C_B1 I2C1 +#define I2C_B1_GPIO_AF GPIO_AF_I2C1 #if defined(PCBXLITE) || defined(PCBX9LITE) - #define I2C_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD) - #define I2C_SPI_GPIO GPIOB - #define I2C_SDA_GPIO_PIN GPIO_Pin_9 // PB.09 - #define I2C_SCL_GPIO_PIN GPIO_Pin_8 // PB.08 - #define I2C_WP_GPIO GPIOD - #define I2C_WP_GPIO_PIN GPIO_Pin_7 // PD.07 - #define I2C_SCL_GPIO_PinSource GPIO_PinSource8 - #define I2C_SDA_GPIO_PinSource GPIO_PinSource9 + #define I2C_B1_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD) + #define I2C_B1_SPI_GPIO GPIOB + #define I2C_B1_SDA_GPIO_PIN GPIO_Pin_9 // PB.09 + #define I2C_B1_SCL_GPIO_PIN GPIO_Pin_8 // PB.08 + #define I2C_B1_WP_GPIO GPIOD + #define I2C_B1_WP_GPIO_PIN GPIO_Pin_7 // PD.07 + #define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource8 + #define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource9 #elif defined(PCBX7ACCESS) - #define I2C_RCC_AHB1Periph RCC_AHB1Periph_GPIOB - #define I2C_SPI_GPIO GPIOB - #define I2C_SDA_GPIO_PIN GPIO_Pin_9 // PB.09 - #define I2C_SCL_GPIO_PIN GPIO_Pin_8 // PB.08 - #define I2C_WP_GPIO GPIOB - #define I2C_WP_GPIO_PIN GPIO_Pin_5 // PB.05 - #define I2C_SDA_GPIO_PinSource GPIO_PinSource9 - #define I2C_SCL_GPIO_PinSource GPIO_PinSource8 + #define I2C_B1_RCC_AHB1Periph RCC_AHB1Periph_GPIOB + #define I2C_B1_SPI_GPIO GPIOB + #define I2C_B1_SDA_GPIO_PIN GPIO_Pin_9 // PB.09 + #define I2C_B1_SCL_GPIO_PIN GPIO_Pin_8 // PB.08 + #define I2C_B1_WP_GPIO GPIOB + #define I2C_B1_WP_GPIO_PIN GPIO_Pin_5 // PB.05 + #define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource9 + #define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource8 #elif defined(RADIO_X9DP2019) - #define I2C_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOF) - #define I2C_SPI_GPIO GPIOB - #define I2C_SDA_GPIO_PIN GPIO_Pin_9 // PB.09 - #define I2C_SCL_GPIO_PIN GPIO_Pin_8 // PB.08 - #define I2C_WP_GPIO GPIOF - #define I2C_WP_GPIO_PIN GPIO_Pin_0 // PF.00 - #define I2C_SCL_GPIO_PinSource GPIO_PinSource8 - #define I2C_SDA_GPIO_PinSource GPIO_PinSource9 + #define I2C_B1_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOF) + #define I2C_B1_SPI_GPIO GPIOB + #define I2C_B1_SDA_GPIO_PIN GPIO_Pin_9 // PB.09 + #define I2C_B1_SCL_GPIO_PIN GPIO_Pin_8 // PB.08 + #define I2C_B1_WP_GPIO GPIOF + #define I2C_B1_WP_GPIO_PIN GPIO_Pin_0 // PF.00 + #define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource8 + #define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource9 #else - #define I2C_RCC_AHB1Periph RCC_AHB1Periph_GPIOB - #define I2C_SPI_GPIO GPIOB - #define I2C_SCL_GPIO_PIN GPIO_Pin_6 // PB.06 - #define I2C_SDA_GPIO_PIN GPIO_Pin_7 // PB.07 - #define I2C_WP_GPIO GPIOB - #define I2C_WP_GPIO_PIN GPIO_Pin_9 // PB.09 - #define I2C_SCL_GPIO_PinSource GPIO_PinSource6 - #define I2C_SDA_GPIO_PinSource GPIO_PinSource7 - #define I2C_ADDRESS_VOLUME 0x5C + #define I2C_B1_RCC_AHB1Periph RCC_AHB1Periph_GPIOB + #define I2C_B1_SPI_GPIO GPIOB + #define I2C_B1_SCL_GPIO_PIN GPIO_Pin_6 // PB.06 + #define I2C_B1_SDA_GPIO_PIN GPIO_Pin_7 // PB.07 + #define I2C_B1_WP_GPIO GPIOB + #define I2C_B1_WP_GPIO_PIN GPIO_Pin_9 // PB.09 + #define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource6 + #define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource7 + #define I2C_B1_ADDRESS_VOLUME 0x5C #endif -#define I2C_CLK_RATE 400000 +#define I2C_B1_CLK_RATE 400000 #define I2C_ADDRESS_EEPROM 0xA2 #define I2C_FLASH_PAGESIZE 64 // Second I2C Bus: IMU #if defined(PCBXLITES) - #define GYRO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC) - #define GYRO_RCC_APB1Periph RCC_APB1Periph_I2C3 - #define I2CX I2C3 - #define I2CX_SCL_GPIO GPIOA - #define I2CX_SCL_GPIO_PIN GPIO_Pin_8 // PA.08 - #define I2CX_SDA_GPIO GPIOC - #define I2CX_SDA_GPIO_PIN GPIO_Pin_9 // PC.09 - #define I2CX_GPIO_AF GPIO_AF_I2C3 - #define I2CX_SCL_GPIO_PinSource GPIO_PinSource8 - #define I2CX_SDA_GPIO_PinSource GPIO_PinSource9 - #define I2CX_SPEED 400000 + #define I2C_B2_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC) + #define I2C_B2_RCC_APB1Periph RCC_APB1Periph_I2C3 + #define I2C_B2 I2C3 + #define I2C_B2_SCL_GPIO GPIOA + #define I2C_B2_SCL_GPIO_PIN GPIO_Pin_8 // PA.08 + #define I2C_B2_SDA_GPIO GPIOC + #define I2C_B2_SDA_GPIO_PIN GPIO_Pin_9 // PC.09 + #define I2C_B2_GPIO_AF GPIO_AF_I2C3 + #define I2C_B2_SCL_GPIO_PinSource GPIO_PinSource8 + #define I2C_B2_SDA_GPIO_PinSource GPIO_PinSource9 + #define I2C_B2_SPEED 400000 #else - #define GYRO_RCC_AHB1Periph 0 - #define GYRO_RCC_APB1Periph 0 + #define I2C_B2_RCC_AHB1Periph 0 + #define I2C_B2_RCC_APB1Periph 0 #endif // SD - SPI2 diff --git a/radio/src/targets/taranis/i2c_driver.cpp b/radio/src/targets/taranis/i2c_driver.cpp index 24d15a2c0..e53c23b6e 100644 --- a/radio/src/targets/taranis/i2c_driver.cpp +++ b/radio/src/targets/taranis/i2c_driver.cpp @@ -25,43 +25,43 @@ void eepromWaitEepromStandbyState(void); void i2cInit() { - I2C_DeInit(I2C); + I2C_DeInit(I2C_B1); GPIO_InitTypeDef GPIO_InitStructure; - GPIO_InitStructure.GPIO_Pin = I2C_WP_GPIO_PIN; + GPIO_InitStructure.GPIO_Pin = I2C_B1_WP_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_Init(I2C_WP_GPIO, &GPIO_InitStructure); - GPIO_ResetBits(I2C_WP_GPIO, I2C_WP_GPIO_PIN); + GPIO_Init(I2C_B1_WP_GPIO, &GPIO_InitStructure); + GPIO_ResetBits(I2C_B1_WP_GPIO, I2C_B1_WP_GPIO_PIN); I2C_InitTypeDef I2C_InitStructure; - I2C_InitStructure.I2C_ClockSpeed = I2C_CLK_RATE; + I2C_InitStructure.I2C_ClockSpeed = I2C_B1_CLK_RATE; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = 0x00; I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; - I2C_Init(I2C, &I2C_InitStructure); - I2C_Cmd(I2C, ENABLE); + I2C_Init(I2C_B1, &I2C_InitStructure); + I2C_Cmd(I2C_B1, ENABLE); - GPIO_PinAFConfig(I2C_SPI_GPIO, I2C_SCL_GPIO_PinSource, I2C_GPIO_AF); - GPIO_PinAFConfig(I2C_SPI_GPIO, I2C_SDA_GPIO_PinSource, I2C_GPIO_AF); + GPIO_PinAFConfig(I2C_B1_SPI_GPIO, I2C_B1_SCL_GPIO_PinSource, I2C_B1_GPIO_AF); + GPIO_PinAFConfig(I2C_B1_SPI_GPIO, I2C_B1_SDA_GPIO_PinSource, I2C_B1_GPIO_AF); - GPIO_InitStructure.GPIO_Pin = I2C_SCL_GPIO_PIN | I2C_SDA_GPIO_PIN; + GPIO_InitStructure.GPIO_Pin = I2C_B1_SCL_GPIO_PIN | I2C_B1_SDA_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_Init(I2C_SPI_GPIO, &GPIO_InitStructure); + GPIO_Init(I2C_B1_SPI_GPIO, &GPIO_InitStructure); } #define I2C_TIMEOUT_MAX 1000 bool I2C_WaitEvent(uint32_t event) { uint32_t timeout = I2C_TIMEOUT_MAX; - while (!I2C_CheckEvent(I2C, event)) { + while (!I2C_CheckEvent(I2C_B1, event)) { if ((timeout--) == 0) return false; } return true; @@ -70,7 +70,7 @@ bool I2C_WaitEvent(uint32_t event) bool I2C_WaitEventCleared(uint32_t event) { uint32_t timeout = I2C_TIMEOUT_MAX; - while (I2C_CheckEvent(I2C, event)) { + while (I2C_CheckEvent(I2C_B1, event)) { if ((timeout--) == 0) return false; } return true; @@ -89,44 +89,44 @@ bool I2C_EE_ReadBlock(uint8_t* pBuffer, uint16_t ReadAddr, uint16_t NumByteToRea if (!I2C_WaitEventCleared(I2C_FLAG_BUSY)) return false; - I2C_GenerateSTART(I2C, ENABLE); + I2C_GenerateSTART(I2C_B1, ENABLE); if (!I2C_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return false; - I2C_Send7bitAddress(I2C, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter); + I2C_Send7bitAddress(I2C_B1, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter); if (!I2C_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) return false; - I2C_SendData(I2C, (uint8_t)((ReadAddr & 0xFF00) >> 8)); + I2C_SendData(I2C_B1, (uint8_t)((ReadAddr & 0xFF00) >> 8)); if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING)) return false; - I2C_SendData(I2C, (uint8_t)(ReadAddr & 0x00FF)); + I2C_SendData(I2C_B1, (uint8_t)(ReadAddr & 0x00FF)); if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED)) return false; - I2C_GenerateSTART(I2C, ENABLE); + I2C_GenerateSTART(I2C_B1, ENABLE); if (!I2C_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return false; - I2C_Send7bitAddress(I2C, I2C_ADDRESS_EEPROM, I2C_Direction_Receiver); + I2C_Send7bitAddress(I2C_B1, I2C_ADDRESS_EEPROM, I2C_Direction_Receiver); if (!I2C_WaitEvent(I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED)) return false; if (NumByteToRead > 1) { - I2C_AcknowledgeConfig(I2C, ENABLE); + I2C_AcknowledgeConfig(I2C_B1, ENABLE); } while (NumByteToRead) { if (NumByteToRead == 1) { - I2C_AcknowledgeConfig(I2C, DISABLE); + I2C_AcknowledgeConfig(I2C_B1, DISABLE); } if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_RECEIVED)) return false; - *pBuffer++ = I2C_ReceiveData(I2C); + *pBuffer++ = I2C_ReceiveData(I2C_B1); NumByteToRead--; } - I2C_GenerateSTOP(I2C, ENABLE); + I2C_GenerateSTOP(I2C_B1, ENABLE); return true; } @@ -184,24 +184,24 @@ bool I2C_EE_PageWrite(uint8_t * pBuffer, uint16_t WriteAddr, uint8_t NumByteToWr if (!I2C_WaitEventCleared(I2C_FLAG_BUSY)) return false; - I2C_GenerateSTART(I2C, ENABLE); + I2C_GenerateSTART(I2C_B1, ENABLE); if (!I2C_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return false; - I2C_Send7bitAddress(I2C, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter); + I2C_Send7bitAddress(I2C_B1, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter); if (!I2C_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) return false; - I2C_SendData(I2C, (uint8_t)((WriteAddr & 0xFF00) >> 8)); + I2C_SendData(I2C_B1, (uint8_t)((WriteAddr & 0xFF00) >> 8)); if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING)) return false; - I2C_SendData(I2C, (uint8_t)(WriteAddr & 0x00FF)); + I2C_SendData(I2C_B1, (uint8_t)(WriteAddr & 0x00FF)); if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING)) return false; /* While there is data to be written */ while (NumByteToWrite--) { - I2C_SendData(I2C, *pBuffer); + I2C_SendData(I2C_B1, *pBuffer); if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING)) return false; pBuffer++; @@ -210,7 +210,7 @@ bool I2C_EE_PageWrite(uint8_t * pBuffer, uint16_t WriteAddr, uint8_t NumByteToWr if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED)) return false; - I2C_GenerateSTOP(I2C, ENABLE); + I2C_GenerateSTOP(I2C_B1, ENABLE); return true; } @@ -229,14 +229,14 @@ void eepromPageWrite(uint8_t* pBuffer, uint16_t WriteAddr, uint8_t NumByteToWrit bool I2C_EE_WaitEepromStandbyState(void) { do { - I2C_GenerateSTART(I2C, ENABLE); + I2C_GenerateSTART(I2C_B1, ENABLE); if (!I2C_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT)) return false; - I2C_Send7bitAddress(I2C, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter); + I2C_Send7bitAddress(I2C_B1, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter); } while (!I2C_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); - I2C_GenerateSTOP(I2C, ENABLE); + I2C_GenerateSTOP(I2C_B1, ENABLE); return true; }