Add board config HW I2C for external sensors.

This commit is contained in:
iabdalkader 2020-05-10 23:19:57 +02:00
parent 08520c5618
commit 353ca203ee
6 changed files with 94 additions and 0 deletions

View File

@ -108,6 +108,20 @@
#define SCCB_SCL_PIN (GPIO_PIN_8)
#define SCCB_SDA_PIN (GPIO_PIN_9)
#define SCCB_TIMING (I2C_TIMING_STANDARD) // ignored
#define SCCB_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
#define SCCB_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
/* FIR I2C */
#define FIR_I2C (I2C2)
#define FIR_I2C_AF (GPIO_AF4_I2C2)
#define FIR_I2C_CLK_ENABLE() __I2C2_CLK_ENABLE()
#define FIR_I2C_CLK_DISABLE() __I2C2_CLK_DISABLE()
#define FIR_I2C_PORT (GPIOB)
#define FIR_I2C_SCL_PIN (GPIO_PIN_10)
#define FIR_I2C_SDA_PIN (GPIO_PIN_11)
#define FIR_I2C_TIMING (I2C_TIMING_FULL)
#define FIR_I2C_FORCE_RESET() __HAL_RCC_I2C2_FORCE_RESET()
#define FIR_I2C_RELEASE_RESET() __HAL_RCC_I2C2_RELEASE_RESET()
/* DCMI */
#define DCMI_TIM (TIM1)

View File

@ -106,6 +106,20 @@
#define SCCB_SCL_PIN (GPIO_PIN_8)
#define SCCB_SDA_PIN (GPIO_PIN_9)
#define SCCB_TIMING (I2C_TIMING_STANDARD)
#define SCCB_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
#define SCCB_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
/* FIR I2C */
#define FIR_I2C (I2C2)
#define FIR_I2C_AF (GPIO_AF4_I2C2)
#define FIR_I2C_CLK_ENABLE() __I2C2_CLK_ENABLE()
#define FIR_I2C_CLK_DISABLE() __I2C2_CLK_DISABLE()
#define FIR_I2C_PORT (GPIOB)
#define FIR_I2C_SCL_PIN (GPIO_PIN_10)
#define FIR_I2C_SDA_PIN (GPIO_PIN_11)
#define FIR_I2C_TIMING (I2C_TIMING_FULL)
#define FIR_I2C_FORCE_RESET() __HAL_RCC_I2C2_FORCE_RESET()
#define FIR_I2C_RELEASE_RESET() __HAL_RCC_I2C2_RELEASE_RESET()
/* DCMI */
#define DCMI_TIM (TIM1)

View File

@ -155,6 +155,20 @@
#define SCCB_SCL_PIN (GPIO_PIN_8)
#define SCCB_SDA_PIN (GPIO_PIN_9)
#define SCCB_TIMING (I2C_TIMING_STANDARD)
#define SCCB_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
#define SCCB_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
/* FIR I2C */
#define FIR_I2C (I2C2)
#define FIR_I2C_AF (GPIO_AF4_I2C2)
#define FIR_I2C_CLK_ENABLE() __I2C2_CLK_ENABLE()
#define FIR_I2C_CLK_DISABLE() __I2C2_CLK_DISABLE()
#define FIR_I2C_PORT (GPIOB)
#define FIR_I2C_SCL_PIN (GPIO_PIN_10)
#define FIR_I2C_SDA_PIN (GPIO_PIN_11)
#define FIR_I2C_TIMING (I2C_TIMING_FULL)
#define FIR_I2C_FORCE_RESET() __HAL_RCC_I2C2_FORCE_RESET()
#define FIR_I2C_RELEASE_RESET() __HAL_RCC_I2C2_RELEASE_RESET()
/* DCMI */
#define DCMI_TIM (TIM1)

View File

@ -164,6 +164,20 @@
#define SCCB_SCL_PIN (GPIO_PIN_8)
#define SCCB_SDA_PIN (GPIO_PIN_9)
#define SCCB_TIMING (I2C_TIMING_STANDARD)
#define SCCB_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
#define SCCB_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
/* FIR I2C */
#define FIR_I2C (I2C2)
#define FIR_I2C_AF (GPIO_AF4_I2C2)
#define FIR_I2C_CLK_ENABLE() __I2C2_CLK_ENABLE()
#define FIR_I2C_CLK_DISABLE() __I2C2_CLK_DISABLE()
#define FIR_I2C_PORT (GPIOB)
#define FIR_I2C_SCL_PIN (GPIO_PIN_10)
#define FIR_I2C_SDA_PIN (GPIO_PIN_11)
#define FIR_I2C_TIMING (I2C_TIMING_FULL)
#define FIR_I2C_FORCE_RESET() __HAL_RCC_I2C2_FORCE_RESET()
#define FIR_I2C_RELEASE_RESET() __HAL_RCC_I2C2_RELEASE_RESET()
/* DCMI */
#define DCMI_TIM (TIM1)

View File

@ -152,6 +152,21 @@
#define SCCB_SCL_PIN (GPIO_PIN_6)
#define SCCB_SDA_PIN (GPIO_PIN_7)
#define SCCB_TIMING (I2C_TIMING_STANDARD)
#define SCCB_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
#define SCCB_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
/* FIR I2C */
// TODO which I2C can be used for external sensors ?
#define FIR_I2C (I2C2)
#define FIR_I2C_AF (GPIO_AF4_I2C2)
#define FIR_I2C_CLK_ENABLE() __I2C2_CLK_ENABLE()
#define FIR_I2C_CLK_DISABLE() __I2C2_CLK_DISABLE()
#define FIR_I2C_PORT (GPIOB)
#define FIR_I2C_SCL_PIN (GPIO_PIN_10)
#define FIR_I2C_SDA_PIN (GPIO_PIN_11)
#define FIR_I2C_TIMING (I2C_TIMING_FULL)
#define FIR_I2C_FORCE_RESET() __HAL_RCC_I2C2_FORCE_RESET()
#define FIR_I2C_RELEASE_RESET() __HAL_RCC_I2C2_RELEASE_RESET()
#define DCMI_PWDN_PIN (GPIO_PIN_4)
#define DCMI_PWDN_PORT (GPIOD)

View File

@ -172,13 +172,36 @@ void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
GPIO_InitStructure.Pin = SCCB_SDA_PIN;
HAL_GPIO_Init(SCCB_PORT, &GPIO_InitStructure);
} else if (hi2c->Instance == FIR_I2C) {
/* Enable I2C clock */
FIR_I2C_CLK_ENABLE();
/* Configure FIR I2C GPIOs */
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
GPIO_InitStructure.Mode = GPIO_MODE_AF_OD;
GPIO_InitStructure.Alternate = FIR_I2C_AF;
GPIO_InitStructure.Pin = FIR_I2C_SCL_PIN;
HAL_GPIO_Init(FIR_I2C_PORT, &GPIO_InitStructure);
GPIO_InitStructure.Pin = FIR_I2C_SDA_PIN;
HAL_GPIO_Init(FIR_I2C_PORT, &GPIO_InitStructure);
}
}
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)
{
if (hi2c->Instance == SCCB_I2C) {
SCCB_FORCE_RESET();
SCCB_RELEASE_RESET();
SCCB_CLK_DISABLE();
} else if (hi2c->Instance == FIR_I2C) {
FIR_I2C_FORCE_RESET();
FIR_I2C_RELEASE_RESET();
FIR_I2C_CLK_DISABLE();
}
}