Ignore:
Timestamp:
Feb 11, 2025, 4:29:20 PM (3 months ago)
Author:
Zed
Message:

Added basic I2C EEPROM support.

Location:
ctrl/firmware/Main/CubeMX/Core
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • ctrl/firmware/Main/CubeMX/Core/Inc/i2c.h

    r88 r89  
    3535extern I2C_HandleTypeDef hi2c1;
    3636
     37extern I2C_HandleTypeDef hi2c2;
     38
    3739/* USER CODE BEGIN Private defines */
    3840
     
    4042
    4143void MX_I2C1_Init(void);
     44void MX_I2C2_Init(void);
    4245
    4346/* USER CODE BEGIN Prototypes */
  • ctrl/firmware/Main/CubeMX/Core/Inc/main.h

    r88 r89  
    6464#define TX1_LED_Pin GPIO_PIN_6
    6565#define TX1_LED_GPIO_Port GPIOE
     66#define EEPROM_I2C_SDA_Pin GPIO_PIN_0
     67#define EEPROM_I2C_SDA_GPIO_Port GPIOF
     68#define EEPROM_I2C_SCL_Pin GPIO_PIN_1
     69#define EEPROM_I2C_SCL_GPIO_Port GPIOF
    6670#define POWER_4V_EN_Pin GPIO_PIN_15
    6771#define POWER_4V_EN_GPIO_Port GPIOF
  • ctrl/firmware/Main/CubeMX/Core/Src/gpio.c

    r88 r89  
    105105  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
    106106
    107   /*Configure GPIO pins : PF0 PF1 PF2 PF3
    108                            PF4 PF5 PF6 PF7
    109                            PF8 PF9 PF10 PF11
    110                            PF12 PF13 PF14 */
    111   GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
    112                           |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
    113                           |GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
    114                           |GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14;
     107  /*Configure GPIO pins : PF2 PF3 PF4 PF5
     108                           PF6 PF7 PF8 PF9
     109                           PF10 PF11 PF12 PF13
     110                           PF14 */
     111  GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
     112                          |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9
     113                          |GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13
     114                          |GPIO_PIN_14;
    115115  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    116116  GPIO_InitStruct.Pull = GPIO_NOPULL;
  • ctrl/firmware/Main/CubeMX/Core/Src/i2c.c

    r88 r89  
    2626
    2727I2C_HandleTypeDef hi2c1;
     28I2C_HandleTypeDef hi2c2;
    2829
    2930/* I2C1 init function */
     
    7071
    7172}
     73/* I2C2 init function */
     74void MX_I2C2_Init(void)
     75{
     76
     77  /* USER CODE BEGIN I2C2_Init 0 */
     78
     79  /* USER CODE END I2C2_Init 0 */
     80
     81  /* USER CODE BEGIN I2C2_Init 1 */
     82
     83  /* USER CODE END I2C2_Init 1 */
     84  hi2c2.Instance = I2C2;
     85  hi2c2.Init.Timing = 0x00300B29;
     86  hi2c2.Init.OwnAddress1 = 0;
     87  hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
     88  hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
     89  hi2c2.Init.OwnAddress2 = 0;
     90  hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
     91  hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
     92  hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
     93  if (HAL_I2C_Init(&hi2c2) != HAL_OK)
     94  {
     95    Error_Handler();
     96  }
     97
     98  /** Configure Analogue filter
     99  */
     100  if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
     101  {
     102    Error_Handler();
     103  }
     104
     105  /** Configure Digital filter
     106  */
     107  if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK)
     108  {
     109    Error_Handler();
     110  }
     111
     112  /** I2C Enable Fast Mode Plus
     113  */
     114  HAL_I2CEx_EnableFastModePlus(I2C_FASTMODEPLUS_I2C2);
     115  /* USER CODE BEGIN I2C2_Init 2 */
     116
     117  /* USER CODE END I2C2_Init 2 */
     118
     119}
    72120
    73121void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
     
    109157  /* USER CODE END I2C1_MspInit 1 */
    110158  }
     159  else if(i2cHandle->Instance==I2C2)
     160  {
     161  /* USER CODE BEGIN I2C2_MspInit 0 */
     162
     163  /* USER CODE END I2C2_MspInit 0 */
     164
     165  /** Initializes the peripherals clock
     166  */
     167    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C2;
     168    PeriphClkInitStruct.I2c123ClockSelection = RCC_I2C1235CLKSOURCE_HSI;
     169    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
     170    {
     171      Error_Handler();
     172    }
     173
     174    __HAL_RCC_GPIOF_CLK_ENABLE();
     175    /**I2C2 GPIO Configuration
     176    PF0     ------> I2C2_SDA
     177    PF1     ------> I2C2_SCL
     178    */
     179    GPIO_InitStruct.Pin = EEPROM_I2C_SDA_Pin|EEPROM_I2C_SCL_Pin;
     180    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
     181    GPIO_InitStruct.Pull = GPIO_NOPULL;
     182    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
     183    GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
     184    HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
     185
     186    /* I2C2 clock enable */
     187    __HAL_RCC_I2C2_CLK_ENABLE();
     188  /* USER CODE BEGIN I2C2_MspInit 1 */
     189
     190  /* USER CODE END I2C2_MspInit 1 */
     191  }
    111192}
    112193
     
    134215  /* USER CODE END I2C1_MspDeInit 1 */
    135216  }
     217  else if(i2cHandle->Instance==I2C2)
     218  {
     219  /* USER CODE BEGIN I2C2_MspDeInit 0 */
     220
     221  /* USER CODE END I2C2_MspDeInit 0 */
     222    /* Peripheral clock disable */
     223    __HAL_RCC_I2C2_CLK_DISABLE();
     224
     225    /**I2C2 GPIO Configuration
     226    PF0     ------> I2C2_SDA
     227    PF1     ------> I2C2_SCL
     228    */
     229    HAL_GPIO_DeInit(EEPROM_I2C_SDA_GPIO_Port, EEPROM_I2C_SDA_Pin);
     230
     231    HAL_GPIO_DeInit(EEPROM_I2C_SCL_GPIO_Port, EEPROM_I2C_SCL_Pin);
     232
     233  /* USER CODE BEGIN I2C2_MspDeInit 1 */
     234
     235  /* USER CODE END I2C2_MspDeInit 1 */
     236  }
    136237}
    137238
  • ctrl/firmware/Main/CubeMX/Core/Src/main.c

    r88 r89  
    142142  MX_TIM6_Init();
    143143  MX_I2C1_Init();
     144  MX_I2C2_Init();
    144145  /* USER CODE BEGIN 2 */
    145146
Note: See TracChangeset for help on using the changeset viewer.