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
Files:
2 added
9 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
  • ctrl/firmware/Main/CubeMX/FATFS/App/fatfs.c

    r75 r89  
    2323FATFS SDFatFS;    /* File system object for SD logical drive */
    2424FIL SDFile;       /* File object for SD */
     25uint8_t retEEPROM;    /* Return value for USER */
     26char EEPROMPath[4];   /* USER logical drive path */
     27FATFS USERFatFS;    /* File system object for USER logical drive */
     28FIL EEPROMFile;       /* File object for USER */
    2529
    2630/* USER CODE BEGIN Variables */
     
    3236  /*## FatFS: Link the SD driver ###########################*/
    3337  retSD = FATFS_LinkDriver(&SD_Driver, SDPath);
     38  /*## FatFS: Link the USER driver ###########################*/
     39  retEEPROM = FATFS_LinkDriver(&EEPROM_Driver, EEPROMPath);
    3440
    3541  /* USER CODE BEGIN Init */
  • ctrl/firmware/Main/CubeMX/FATFS/App/fatfs.h

    r74 r89  
    2727#include "ff_gen_drv.h"
    2828#include "sd_diskio.h" /* defines SD_Driver as external */
     29#include "eeprom_diskio.h" /* defines USER_Driver as external */
    2930
    3031/* USER CODE BEGIN Includes */
     
    3637extern FATFS SDFatFS; /* File system object for SD logical drive */
    3738extern FIL SDFile; /* File object for SD */
     39extern uint8_t retEEPROM; /* Return value for USER */
     40extern char EEPROMPath[4]; /* USER logical drive path */
     41extern FATFS EEPROMFatFS; /* File system object for USER logical drive */
     42extern FIL EEPROMFile; /* File object for USER */
    3843
    3944void MX_FATFS_Init(void);
  • ctrl/firmware/Main/CubeMX/FATFS/Target/ffconf.h

    r75 r89  
    156156/----------------------------------------------------------------------------*/
    157157
    158 #define _VOLUMES    1
     158#define _VOLUMES    2
    159159/* Number of volumes (logical drives) to be used. */
    160160
  • ctrl/firmware/Main/CubeMX/charger.ioc

    r88 r89  
    149149File.Version=6
    150150GPIO.groupedBy=Group By Peripherals
     151I2C2.I2C_Speed_Mode=I2C_Fast_Plus
     152I2C2.IPParameters=I2C_Speed_Mode,Timing
     153I2C2.Timing=0x00300B29
    151154KeepUserPlacement=false
    152155MMTAppReg1.MEMORYMAP.AppRegionName=DTCMRAM
     
    210213Mcu.IP0=CORTEX_M7
    211214Mcu.IP1=DEBUG
    212 Mcu.IP10=RTC
    213 Mcu.IP11=SDMMC1
    214 Mcu.IP12=SPI2
    215 Mcu.IP13=SPI4
    216 Mcu.IP14=SYS
    217 Mcu.IP15=TIM3
    218 Mcu.IP16=TIM6
    219 Mcu.IP17=TIM8
    220 Mcu.IP18=USART2
    221 Mcu.IP19=USART3
     215Mcu.IP10=RCC
     216Mcu.IP11=RTC
     217Mcu.IP12=SDMMC1
     218Mcu.IP13=SPI2
     219Mcu.IP14=SPI4
     220Mcu.IP15=SYS
     221Mcu.IP16=TIM3
     222Mcu.IP17=TIM6
     223Mcu.IP18=TIM8
     224Mcu.IP19=USART2
    222225Mcu.IP2=DMA
    223 Mcu.IP20=USART10
     226Mcu.IP20=USART3
     227Mcu.IP21=USART10
    224228Mcu.IP3=FATFS
    225229Mcu.IP4=FREERTOS
    226230Mcu.IP5=I2C1
    227 Mcu.IP6=MDMA
    228 Mcu.IP7=MEMORYMAP
    229 Mcu.IP8=NVIC
    230 Mcu.IP9=RCC
    231 Mcu.IPNb=21
     231Mcu.IP6=I2C2
     232Mcu.IP7=MDMA
     233Mcu.IP8=MEMORYMAP
     234Mcu.IP9=NVIC
     235Mcu.IPNb=22
    232236Mcu.Name=STM32H723ZETx
    233237Mcu.Package=LQFP144
    234238Mcu.Pin0=PE2
    235239Mcu.Pin1=PE3
    236 Mcu.Pin10=PE7
    237 Mcu.Pin11=PE11
    238 Mcu.Pin12=PE12
    239 Mcu.Pin13=PE13
    240 Mcu.Pin14=PE14
    241 Mcu.Pin15=PE15
    242 Mcu.Pin16=PB10
    243 Mcu.Pin17=PB14
    244 Mcu.Pin18=PB15
    245 Mcu.Pin19=PD8
     240Mcu.Pin10=PG0
     241Mcu.Pin11=PG1
     242Mcu.Pin12=PE7
     243Mcu.Pin13=PE11
     244Mcu.Pin14=PE12
     245Mcu.Pin15=PE13
     246Mcu.Pin16=PE14
     247Mcu.Pin17=PE15
     248Mcu.Pin18=PB10
     249Mcu.Pin19=PB14
    246250Mcu.Pin2=PE6
    247 Mcu.Pin20=PD9
    248 Mcu.Pin21=PD10
    249 Mcu.Pin22=PD11
    250 Mcu.Pin23=PD12
    251 Mcu.Pin24=PD13
    252 Mcu.Pin25=PC6
    253 Mcu.Pin26=PC7
    254 Mcu.Pin27=PC8
    255 Mcu.Pin28=PC9
    256 Mcu.Pin29=PA8
     251Mcu.Pin20=PB15
     252Mcu.Pin21=PD8
     253Mcu.Pin22=PD9
     254Mcu.Pin23=PD10
     255Mcu.Pin24=PD11
     256Mcu.Pin25=PD12
     257Mcu.Pin26=PD13
     258Mcu.Pin27=PC6
     259Mcu.Pin28=PC7
     260Mcu.Pin29=PC8
    257261Mcu.Pin3=PC14-OSC32_IN
    258 Mcu.Pin30=PA13(JTMS/SWDIO)
    259 Mcu.Pin31=PA14(JTCK/SWCLK)
    260 Mcu.Pin32=PA15(JTDI)
    261 Mcu.Pin33=PC10
    262 Mcu.Pin34=PC11
    263 Mcu.Pin35=PC12
    264 Mcu.Pin36=PD2
    265 Mcu.Pin37=PD3
    266 Mcu.Pin38=PD4
    267 Mcu.Pin39=PD5
     262Mcu.Pin30=PC9
     263Mcu.Pin31=PA8
     264Mcu.Pin32=PA13(JTMS/SWDIO)
     265Mcu.Pin33=PA14(JTCK/SWCLK)
     266Mcu.Pin34=PA15(JTDI)
     267Mcu.Pin35=PC10
     268Mcu.Pin36=PC11
     269Mcu.Pin37=PC12
     270Mcu.Pin38=PD2
     271Mcu.Pin39=PD3
    268272Mcu.Pin4=PC15-OSC32_OUT
    269 Mcu.Pin40=PD6
    270 Mcu.Pin41=PD7
    271 Mcu.Pin42=PG9
    272 Mcu.Pin43=PG10
    273 Mcu.Pin44=PG11
    274 Mcu.Pin45=PG12
    275 Mcu.Pin46=PG13
    276 Mcu.Pin47=PG14
    277 Mcu.Pin48=PG15
    278 Mcu.Pin49=PB4(NJTRST)
    279 Mcu.Pin5=PH0-OSC_IN
    280 Mcu.Pin50=PB6
    281 Mcu.Pin51=PB7
    282 Mcu.Pin52=PB8
    283 Mcu.Pin53=PB9
    284 Mcu.Pin54=VP_FATFS_VS_SDIO
    285 Mcu.Pin55=VP_FREERTOS_VS_CMSIS_V2
    286 Mcu.Pin56=VP_RTC_VS_RTC_Activate
    287 Mcu.Pin57=VP_RTC_VS_RTC_Calendar
    288 Mcu.Pin58=VP_SYS_VS_tim7
    289 Mcu.Pin59=VP_TIM3_VS_ClockSourceINT
    290 Mcu.Pin6=PH1-OSC_OUT
    291 Mcu.Pin60=VP_TIM6_VS_ClockSourceINT
    292 Mcu.Pin61=VP_TIM8_VS_ControllerModeReset
    293 Mcu.Pin62=VP_TIM8_VS_ClockSourceINT
    294 Mcu.Pin63=VP_MEMORYMAP_VS_MEMORYMAP
    295 Mcu.Pin7=PF15
    296 Mcu.Pin8=PG0
    297 Mcu.Pin9=PG1
    298 Mcu.PinsNb=64
     273Mcu.Pin40=PD4
     274Mcu.Pin41=PD5
     275Mcu.Pin42=PD6
     276Mcu.Pin43=PD7
     277Mcu.Pin44=PG9
     278Mcu.Pin45=PG10
     279Mcu.Pin46=PG11
     280Mcu.Pin47=PG12
     281Mcu.Pin48=PG13
     282Mcu.Pin49=PG14
     283Mcu.Pin5=PF0
     284Mcu.Pin50=PG15
     285Mcu.Pin51=PB4(NJTRST)
     286Mcu.Pin52=PB6
     287Mcu.Pin53=PB7
     288Mcu.Pin54=PB8
     289Mcu.Pin55=PB9
     290Mcu.Pin56=VP_FATFS_VS_SDIO
     291Mcu.Pin57=VP_FATFS_VS_Generic
     292Mcu.Pin58=VP_FREERTOS_VS_CMSIS_V2
     293Mcu.Pin59=VP_RTC_VS_RTC_Activate
     294Mcu.Pin6=PF1
     295Mcu.Pin60=VP_RTC_VS_RTC_Calendar
     296Mcu.Pin61=VP_SYS_VS_tim7
     297Mcu.Pin62=VP_TIM3_VS_ClockSourceINT
     298Mcu.Pin63=VP_TIM6_VS_ClockSourceINT
     299Mcu.Pin64=VP_TIM8_VS_ControllerModeReset
     300Mcu.Pin65=VP_TIM8_VS_ClockSourceINT
     301Mcu.Pin66=VP_MEMORYMAP_VS_MEMORYMAP
     302Mcu.Pin7=PH0-OSC_IN
     303Mcu.Pin8=PH1-OSC_OUT
     304Mcu.Pin9=PF15
     305Mcu.PinsNb=67
    299306Mcu.ThirdParty0=STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0
    300307Mcu.ThirdPartyNb=1
     
    525532PE7.Locked=true
    526533PE7.Signal=GPIO_Output
     534PF0.GPIOParameters=GPIO_Label
     535PF0.GPIO_Label=EEPROM_I2C_SDA
     536PF0.Locked=true
     537PF0.Mode=I2C
     538PF0.Signal=I2C2_SDA
     539PF1.GPIOParameters=GPIO_Label
     540PF1.GPIO_Label=EEPROM_I2C_SCL
     541PF1.Locked=true
     542PF1.Mode=I2C
     543PF1.Signal=I2C2_SCL
    527544PF15.GPIOParameters=GPIO_Label
    528545PF15.GPIO_Label=POWER_4V_EN
     
    600617ProjectManager.UAScriptBeforePath=
    601618ProjectManager.UnderRoot=true
    602 ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-MX_MDMA_Init-MDMA-false-HAL-true,4-MX_RTC_Init-RTC-false-HAL-true,5-MX_SPI4_Init-SPI4-false-HAL-true,6-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,7-MX_USART3_UART_Init-USART3-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-SystemClock_Config-RCC-false-HAL-false,10-MX_FATFS_Init-FATFS-false-HAL-false,11-MX_TIM8_Init-TIM8-false-HAL-true,12-MX_SPI2_Init-SPI2-false-HAL-true,13-MX_USART2_UART_Init-USART2-false-HAL-true,14-MX_USART10_UART_Init-USART10-false-HAL-true,15-MX_TIM6_Init-TIM6-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
     619ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-MX_MDMA_Init-MDMA-false-HAL-true,4-MX_RTC_Init-RTC-false-HAL-true,5-MX_SPI4_Init-SPI4-false-HAL-true,6-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,7-MX_USART3_UART_Init-USART3-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-SystemClock_Config-RCC-false-HAL-false,10-MX_FATFS_Init-FATFS-false-HAL-false,11-MX_TIM8_Init-TIM8-false-HAL-true,12-MX_SPI2_Init-SPI2-false-HAL-true,13-MX_USART2_UART_Init-USART2-false-HAL-true,14-MX_USART10_UART_Init-USART10-false-HAL-true,15-MX_TIM6_Init-TIM6-false-HAL-true,16-MX_I2C1_Init-I2C1-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
    603620RCC.ADCFreq_Value=125000000
    604621RCC.AHB12Freq_Value=100000000
     
    767784USART3.SwapParam=ADVFEATURE_SWAP_ENABLE
    768785USART3.VirtualMode-Asynchronous=VM_ASYNC
     786VP_FATFS_VS_Generic.Mode=User_defined
     787VP_FATFS_VS_Generic.Signal=FATFS_VS_Generic
    769788VP_FATFS_VS_SDIO.Mode=SDIO
    770789VP_FATFS_VS_SDIO.Signal=FATFS_VS_SDIO
Note: See TracChangeset for help on using the changeset viewer.