Ignore:
Timestamp:
Feb 7, 2025, 2:56:14 PM (3 months ago)
Author:
Zed
Message:

Added TIM6 in CubeMX to generate 1µs delays for 1-Wire Protocol.

Location:
ctrl/firmware/Main/CubeMX
Files:
7 edited

Legend:

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

    r81 r84  
    9898#define SD_DETECT_Pin GPIO_PIN_8
    9999#define SD_DETECT_GPIO_Port GPIOA
     100#define ONEWIRE_TEMP_BUS_Pin GPIO_PIN_15
     101#define ONEWIRE_TEMP_BUS_GPIO_Port GPIOA
    100102#define ETH_SPI_PWR_Pin GPIO_PIN_3
    101103#define ETH_SPI_PWR_GPIO_Port GPIOD
  • ctrl/firmware/Main/CubeMX/Core/Inc/tim.h

    r66 r84  
    3535extern TIM_HandleTypeDef htim3;
    3636
     37extern TIM_HandleTypeDef htim6;
     38
    3739extern TIM_HandleTypeDef htim8;
    3840
     
    4244
    4345void MX_TIM3_Init(void);
     46void MX_TIM6_Init(void);
    4447void MX_TIM8_Init(void);
    4548
  • ctrl/firmware/Main/CubeMX/Core/Src/freertos.c

    r83 r84  
    2323#include "main.h"
    2424#include "cmsis_os.h"
    25 #include "queue.h"
    2625
    2726/* Private includes ----------------------------------------------------------*/
     
    2928
    3029#include <stdio.h>
     30
     31#include "queue.h"
    3132
    3233#include "keys_task.h"
     
    3435#include "mb_slave_task.h"
    3536#include "beeper_task.h"
     37#include "onewire_task.h"
    3638
    3739/* USER CODE END Includes */
     
    5052#define MB_SLAVE_TASK_STACK_DEPTH_WORDS                         (1024U)
    5153#define BEEPER_TASK_STACK_DEPTH_WORDS                           (128U)
     54#define ONEWIRE_TASK_STACK_DEPTH_WORDS                          (128U)
    5255
    5356/* USER CODE END PD */
     
    6568static StackType_t mbSlaveTaskStackBuffer[MB_SLAVE_TASK_STACK_DEPTH_WORDS]                              __attribute__((section(".DTCM_RAM")));
    6669static StackType_t beeperTaskStackBuffer[BEEPER_TASK_STACK_DEPTH_WORDS]                                 __attribute__((section(".DTCM_RAM")));
     70static StackType_t onewireTaskStackBuffer[ONEWIRE_TASK_STACK_DEPTH_WORDS]                               __attribute__((section(".DTCM_RAM")));
     71
    6772static uint8_t beeperQueueStorageArea[BEEPER_QUEUE_SIZE * BEEPER_QUEUE_ITEM_SIZE]               __attribute__((section(".DTCM_RAM")));
    68 
    69 static StaticTask_t keysTaskBuffer;
    70 static StaticTask_t ethTaskBuffer;
    71 static StaticTask_t mbSlaveTaskBuffer;
    72 static StaticTask_t beeperTaskBuffer;
    73 static StaticQueue_t beeperQueueBuffer;
     73static uint8_t onewireQueueStorageArea[ONEWIRE_QUEUE_SIZE * ONEWIRE_QUEUE_ITEM_SIZE]    __attribute__((section(".DTCM_RAM")));
     74
     75static StaticTask_t keysTaskBuffer                                                                                                              __attribute__((section(".DTCM_RAM")));
     76static StaticTask_t ethTaskBuffer                                                                                                               __attribute__((section(".DTCM_RAM")));
     77static StaticTask_t mbSlaveTaskBuffer                                                                                                   __attribute__((section(".DTCM_RAM")));
     78static StaticTask_t beeperTaskBuffer                                                                                                    __attribute__((section(".DTCM_RAM")));
     79static StaticTask_t onewireTaskBuffer                                                                                                   __attribute__((section(".DTCM_RAM")));
     80
     81static StaticQueue_t beeperQueueBuffer                                                                                                  __attribute__((section(".DTCM_RAM")));
     82static StaticQueue_t onewireQueueBuffer                                                                                                 __attribute__((section(".DTCM_RAM")));
    7483
    7584static const char* const keysTaskName = "ScanKeysTask";
     
    7786static const char* const mbSlaveTaskName = "MBSlaveTask";
    7887static const char* const beeperTaskName = "BeeperTask";
    79 
     88static const char* const onewireTaskName = "1WireTask";
    8089
    8190
     
    154163  if (beeperQueue == NULL) printf("Cannot create Beeper Queue!\n");
    155164
     165  onewireQueue = xQueueCreateStatic(ONEWIRE_QUEUE_SIZE, ONEWIRE_QUEUE_ITEM_SIZE, onewireQueueStorageArea, &onewireQueueBuffer);
     166  if (onewireQueue == NULL) printf("Cannot create 1-Wire Queue!\n");
     167
    156168  /* USER CODE END RTOS_QUEUES */
    157169
     
    174186  r = xTaskCreateStatic(beeperTaskStart, beeperTaskName, BEEPER_TASK_STACK_DEPTH_WORDS, NULL, 25, beeperTaskStackBuffer, &beeperTaskBuffer);
    175187  if (r == NULL) printf("Cannot create %s!\n", beeperTaskName);
     188
     189  r = xTaskCreateStatic(onewireTaskStart, onewireTaskName, ONEWIRE_TASK_STACK_DEPTH_WORDS, NULL, 25, onewireTaskStackBuffer, &onewireTaskBuffer);
     190  if (r == NULL) printf("Cannot create %s!\n", onewireTaskName);
    176191
    177192  /* USER CODE END RTOS_THREADS */
  • ctrl/firmware/Main/CubeMX/Core/Src/gpio.c

    r81 r84  
    7171
    7272  /*Configure GPIO pin Output Level */
     73  HAL_GPIO_WritePin(ONEWIRE_TEMP_BUS_GPIO_Port, ONEWIRE_TEMP_BUS_Pin, GPIO_PIN_RESET);
     74
     75  /*Configure GPIO pin Output Level */
    7376  HAL_GPIO_WritePin(ETH_SPI_PWR_GPIO_Port, ETH_SPI_PWR_Pin, GPIO_PIN_SET);
    7477
     
    116119  /*Configure GPIO pins : PA0 PA1 PA2 PA3
    117120                           PA4 PA5 PA6 PA7
    118                            PA9 PA10 PA11 PA12
    119                            PA15 */
     121                           PA9 PA10 PA11 PA12 */
    120122  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
    121123                          |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
    122                           |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12
    123                           |GPIO_PIN_15;
     124                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
    124125  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    125126  GPIO_InitStruct.Pull = GPIO_NOPULL;
     
    185186  HAL_GPIO_Init(SD_DETECT_GPIO_Port, &GPIO_InitStruct);
    186187
     188  /*Configure GPIO pin : ONEWIRE_TEMP_BUS_Pin */
     189  GPIO_InitStruct.Pin = ONEWIRE_TEMP_BUS_Pin;
     190  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
     191  GPIO_InitStruct.Pull = GPIO_NOPULL;
     192  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
     193  HAL_GPIO_Init(ONEWIRE_TEMP_BUS_GPIO_Port, &GPIO_InitStruct);
     194
    187195  /*Configure GPIO pins : ETH_SPI_NSS_Pin ETH_SPI_RST_Pin */
    188196  GPIO_InitStruct.Pin = ETH_SPI_NSS_Pin|ETH_SPI_RST_Pin;
  • ctrl/firmware/Main/CubeMX/Core/Src/main.c

    r83 r84  
    136136  MX_USART2_UART_Init();
    137137  MX_USART10_UART_Init();
     138  MX_TIM6_Init();
    138139  /* USER CODE BEGIN 2 */
    139140
  • ctrl/firmware/Main/CubeMX/Core/Src/tim.c

    r72 r84  
    2626
    2727TIM_HandleTypeDef htim3;
     28TIM_HandleTypeDef htim6;
    2829TIM_HandleTypeDef htim8;
    2930
     
    8283  /* USER CODE END TIM3_Init 2 */
    8384  HAL_TIM_MspPostInit(&htim3);
     85
     86}
     87/* TIM6 init function */
     88void MX_TIM6_Init(void)
     89{
     90
     91  /* USER CODE BEGIN TIM6_Init 0 */
     92
     93  /* USER CODE END TIM6_Init 0 */
     94
     95  TIM_MasterConfigTypeDef sMasterConfig = {0};
     96
     97  /* USER CODE BEGIN TIM6_Init 1 */
     98
     99  /* USER CODE END TIM6_Init 1 */
     100  htim6.Instance = TIM6;
     101  htim6.Init.Prescaler = 99;
     102  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
     103  htim6.Init.Period = 65535;
     104  htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
     105  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
     106  {
     107    Error_Handler();
     108  }
     109  if (HAL_TIM_OnePulse_Init(&htim6, TIM_OPMODE_SINGLE) != HAL_OK)
     110  {
     111    Error_Handler();
     112  }
     113  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
     114  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
     115  if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
     116  {
     117    Error_Handler();
     118  }
     119  /* USER CODE BEGIN TIM6_Init 2 */
     120
     121  /* USER CODE END TIM6_Init 2 */
    84122
    85123}
     
    167205
    168206  /* USER CODE END TIM3_MspInit 1 */
     207  }
     208  else if(tim_baseHandle->Instance==TIM6)
     209  {
     210  /* USER CODE BEGIN TIM6_MspInit 0 */
     211
     212  /* USER CODE END TIM6_MspInit 0 */
     213    /* TIM6 clock enable */
     214    __HAL_RCC_TIM6_CLK_ENABLE();
     215  /* USER CODE BEGIN TIM6_MspInit 1 */
     216
     217  /* USER CODE END TIM6_MspInit 1 */
    169218  }
    170219  else if(tim_baseHandle->Instance==TIM8)
     
    243292  /* USER CODE END TIM3_MspDeInit 1 */
    244293  }
     294  else if(tim_baseHandle->Instance==TIM6)
     295  {
     296  /* USER CODE BEGIN TIM6_MspDeInit 0 */
     297
     298  /* USER CODE END TIM6_MspDeInit 0 */
     299    /* Peripheral clock disable */
     300    __HAL_RCC_TIM6_CLK_DISABLE();
     301  /* USER CODE BEGIN TIM6_MspDeInit 1 */
     302
     303  /* USER CODE END TIM6_MspDeInit 1 */
     304  }
    245305  else if(tim_baseHandle->Instance==TIM8)
    246306  {
  • ctrl/firmware/Main/CubeMX/charger.ioc

    r83 r84  
    215215Mcu.IP13=SYS
    216216Mcu.IP14=TIM3
    217 Mcu.IP15=TIM8
    218 Mcu.IP16=USART2
    219 Mcu.IP17=USART3
    220 Mcu.IP18=USART10
     217Mcu.IP15=TIM6
     218Mcu.IP16=TIM8
     219Mcu.IP17=USART2
     220Mcu.IP18=USART3
     221Mcu.IP19=USART10
    221222Mcu.IP2=DMA
    222223Mcu.IP3=FATFS
     
    227228Mcu.IP8=RCC
    228229Mcu.IP9=RTC
    229 Mcu.IPNb=19
     230Mcu.IPNb=20
    230231Mcu.Name=STM32H723ZETx
    231232Mcu.Package=LQFP144
     
    256257Mcu.Pin30=PA13(JTMS/SWDIO)
    257258Mcu.Pin31=PA14(JTCK/SWCLK)
    258 Mcu.Pin32=PC10
    259 Mcu.Pin33=PC11
    260 Mcu.Pin34=PC12
    261 Mcu.Pin35=PD2
    262 Mcu.Pin36=PD3
    263 Mcu.Pin37=PD4
    264 Mcu.Pin38=PD5
    265 Mcu.Pin39=PD6
     259Mcu.Pin32=PA15(JTDI)
     260Mcu.Pin33=PC10
     261Mcu.Pin34=PC11
     262Mcu.Pin35=PC12
     263Mcu.Pin36=PD2
     264Mcu.Pin37=PD3
     265Mcu.Pin38=PD4
     266Mcu.Pin39=PD5
    266267Mcu.Pin4=PC15-OSC32_OUT
    267 Mcu.Pin40=PD7
    268 Mcu.Pin41=PG9
    269 Mcu.Pin42=PG10
    270 Mcu.Pin43=PG11
    271 Mcu.Pin44=PG12
    272 Mcu.Pin45=PG13
    273 Mcu.Pin46=PG14
    274 Mcu.Pin47=PG15
    275 Mcu.Pin48=PB4(NJTRST)
    276 Mcu.Pin49=PB8
     268Mcu.Pin40=PD6
     269Mcu.Pin41=PD7
     270Mcu.Pin42=PG9
     271Mcu.Pin43=PG10
     272Mcu.Pin44=PG11
     273Mcu.Pin45=PG12
     274Mcu.Pin46=PG13
     275Mcu.Pin47=PG14
     276Mcu.Pin48=PG15
     277Mcu.Pin49=PB4(NJTRST)
    277278Mcu.Pin5=PH0-OSC_IN
    278 Mcu.Pin50=PB9
    279 Mcu.Pin51=VP_FATFS_VS_SDIO
    280 Mcu.Pin52=VP_FREERTOS_VS_CMSIS_V2
    281 Mcu.Pin53=VP_RTC_VS_RTC_Activate
    282 Mcu.Pin54=VP_RTC_VS_RTC_Calendar
    283 Mcu.Pin55=VP_SYS_VS_tim7
    284 Mcu.Pin56=VP_TIM3_VS_ClockSourceINT
    285 Mcu.Pin57=VP_TIM8_VS_ControllerModeReset
    286 Mcu.Pin58=VP_TIM8_VS_ClockSourceINT
    287 Mcu.Pin59=VP_MEMORYMAP_VS_MEMORYMAP
     279Mcu.Pin50=PB8
     280Mcu.Pin51=PB9
     281Mcu.Pin52=VP_FATFS_VS_SDIO
     282Mcu.Pin53=VP_FREERTOS_VS_CMSIS_V2
     283Mcu.Pin54=VP_RTC_VS_RTC_Activate
     284Mcu.Pin55=VP_RTC_VS_RTC_Calendar
     285Mcu.Pin56=VP_SYS_VS_tim7
     286Mcu.Pin57=VP_TIM3_VS_ClockSourceINT
     287Mcu.Pin58=VP_TIM6_VS_ClockSourceINT
     288Mcu.Pin59=VP_TIM6_VS_OPM
    288289Mcu.Pin6=PH1-OSC_OUT
     290Mcu.Pin60=VP_TIM8_VS_ControllerModeReset
     291Mcu.Pin61=VP_TIM8_VS_ClockSourceINT
     292Mcu.Pin62=VP_MEMORYMAP_VS_MEMORYMAP
    289293Mcu.Pin7=PF15
    290294Mcu.Pin8=PG0
    291295Mcu.Pin9=PG1
    292 Mcu.PinsNb=60
     296Mcu.PinsNb=63
    293297Mcu.ThirdParty0=STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0
    294298Mcu.ThirdPartyNb=1
     
    360364PA14(JTCK/SWCLK).Mode=Serial_Wire
    361365PA14(JTCK/SWCLK).Signal=DEBUG_JTCK-SWCLK
     366PA15(JTDI).GPIOParameters=GPIO_PuPd,GPIO_Label
     367PA15(JTDI).GPIO_Label=ONEWIRE_TEMP_BUS
     368PA15(JTDI).GPIO_PuPd=GPIO_NOPULL
     369PA15(JTDI).Locked=true
     370PA15(JTDI).Signal=GPIO_Output
    362371PA8.GPIOParameters=GPIO_PuPd,GPIO_Label
    363372PA8.GPIO_Label=SD_DETECT
     
    579588ProjectManager.UAScriptBeforePath=
    580589ProjectManager.UnderRoot=true
    581 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,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
     590ProjectManager.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
    582591RCC.ADCFreq_Value=125000000
    583592RCC.AHB12Freq_Value=100000000
     
    663672RCC.VCOInput2Freq_Value=12500000
    664673RCC.VCOInput3Freq_Value=1000000
    665 SDMMC1.ClockDiv=1
     674SDMMC1.ClockDiv=2
    666675SDMMC1.ClockPowerSave=SDMMC_CLOCK_POWER_SAVE_ENABLE
    667676SDMMC1.HardwareFlowControl=SDMMC_HARDWARE_FLOW_CONTROL_ENABLE
     
    721730TIM3.Prescaler=3
    722731TIM3.Pulse-PWM\ Generation2\ CH2=200
     732TIM6.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
     733TIM6.IPParameters=AutoReloadPreload,Prescaler
     734TIM6.Prescaler=99
    723735TIM8.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
    724736TIM8.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
     
    751763VP_TIM3_VS_ClockSourceINT.Mode=Internal
    752764VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
     765VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer
     766VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT
     767VP_TIM6_VS_OPM.Mode=OPM_bit
     768VP_TIM6_VS_OPM.Signal=TIM6_VS_OPM
    753769VP_TIM8_VS_ClockSourceINT.Mode=Internal
    754770VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT
Note: See TracChangeset for help on using the changeset viewer.