12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "i2c_bridge.h"
- I2C_HandleTypeDef hi2c2;
- //
- void i2c_bridge_init(void)
- {
- #if 0
- // This template from lib
- hi2c2.Instance = I2C2;
- hi2c2.Init.ClockSpeed = 100000;
- hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
- hi2c2.Init.OwnAddress1 = 0;
- hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
- hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
- hi2c2.Init.OwnAddress2 = 0;
- hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
- hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
- HAL_I2C_Init(&hi2c2);
- #endif
-
- hi2c2.Instance = I2C2;
- hi2c2.Init.Timing = 0x00303D5B;
- hi2c2.Init.OwnAddress1 = 0;
- hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
- hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
- hi2c2.Init.OwnAddress2 = 0;
- hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
- hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
- hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
- HAL_I2C_Init(&hi2c2);
- HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE);
- HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0);
- // TODO Разобраться
- HAL_I2CEx_EnableFastModePlus(I2C_FASTMODEPLUS_I2C2);
- }
- //
- I2C_HandleTypeDef *i2c_get_bridge(void)
- {
- return &hi2c2;
- }
- //
- void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
- {
- GPIO_InitTypeDef GPIO_InitStruct = {0};
-
- HAL_I2C_DeInit(i2cHandle);
-
- if(i2cHandle->Instance==I2C2)
- {
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
-
- GPIO_InitStruct.Pin = GPIO_PIN_8;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
- GPIO_InitStruct.Pin = GPIO_PIN_4;
- GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
- __HAL_RCC_I2C2_CLK_ENABLE();
- }
- }
- //
- void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
- {
- if(i2cHandle->Instance==I2C2)
- {
- __HAL_RCC_I2C2_CLK_DISABLE();
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_8);
- HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4);
- }
- }
|