From 6e3a0ac437865c6a27a9813862eadab6b12c34f7 Mon Sep 17 00:00:00 2001 From: Amir Tajaddoditalab <96522772+AmirTajaddodi@users.noreply.github.com> Date: Sun, 19 Jan 2025 16:14:26 -0800 Subject: [PATCH] Increased CAN speed on all boards to 1Mbit/s (#1413) ### Changelist ### Testing Done ### Resolved Tickets --------- Co-authored-by: Edwin Z <20777515+Lucien950@users.noreply.github.com> --- can_bus/PcanProject.peproj | 2 +- firmware/quadruna/BMS/src/cubemx/BMS.ioc | 20 +++++----- firmware/quadruna/BMS/src/cubemx/BMS.ioc.md5 | 2 +- firmware/quadruna/BMS/src/cubemx/Src/main.c | 39 +++++++++++++++++-- .../BMS/src/cubemx/Src/stm32h7xx_hal_msp.c | 34 +--------------- firmware/quadruna/CRIT/src/cubemx/CRIT.ioc | 14 +++---- .../quadruna/CRIT/src/cubemx/CRIT.ioc.md5 | 2 +- firmware/quadruna/CRIT/src/cubemx/Src/main.c | 8 ++-- firmware/quadruna/FSM/src/cubemx/FSM.ioc | 16 ++++---- firmware/quadruna/FSM/src/cubemx/FSM.ioc.md5 | 2 +- firmware/quadruna/FSM/src/cubemx/Src/main.c | 8 ++-- firmware/quadruna/RSM/src/cubemx/RSM.ioc | 16 ++++---- firmware/quadruna/RSM/src/cubemx/RSM.ioc.md5 | 2 +- firmware/quadruna/RSM/src/cubemx/Src/main.c | 8 ++-- firmware/quadruna/VC/src/cubemx/Src/main.c | 39 +++++++++++++++++-- .../VC/src/cubemx/Src/stm32h7xx_hal_msp.c | 35 +---------------- firmware/quadruna/VC/src/cubemx/VC.ioc | 20 ++++++---- firmware/quadruna/VC/src/cubemx/VC.ioc.md5 | 2 +- 18 files changed, 138 insertions(+), 131 deletions(-) diff --git a/can_bus/PcanProject.peproj b/can_bus/PcanProject.peproj index 694659a023..ccf54a3b50 100644 --- a/can_bus/PcanProject.peproj +++ b/can_bus/PcanProject.peproj @@ -1,7 +1,7 @@ - + diff --git a/firmware/quadruna/BMS/src/cubemx/BMS.ioc b/firmware/quadruna/BMS/src/cubemx/BMS.ioc index 161c62f93e..7dcf1c7900 100644 --- a/firmware/quadruna/BMS/src/cubemx/BMS.ioc +++ b/firmware/quadruna/BMS/src/cubemx/BMS.ioc @@ -57,13 +57,14 @@ Dma.ADC1.0.SyncSignalID=NONE Dma.Request0=ADC1 Dma.RequestsNb=1 FDCAN1.AutoRetransmission=ENABLE -FDCAN1.CalculateBaudRateNominal=500000 -FDCAN1.CalculateTimeBitNominal=2000 -FDCAN1.CalculateTimeQuantumNominal=125.0 -FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,AutoRetransmission,NominalSyncJumpWidth,StdFiltersNbr,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalTimeSeg1,NominalPrescaler -FDCAN1.NominalPrescaler=16 -FDCAN1.NominalSyncJumpWidth=4 -FDCAN1.NominalTimeSeg1=13 +FDCAN1.CalculateBaudRateNominal=1000000 +FDCAN1.CalculateTimeBitNominal=1000 +FDCAN1.CalculateTimeQuantumNominal=62.5 +FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,AutoRetransmission,NominalSyncJumpWidth,StdFiltersNbr,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalTimeSeg1,NominalPrescaler,NominalTimeSeg2 +FDCAN1.NominalPrescaler=6 +FDCAN1.NominalSyncJumpWidth=3 +FDCAN1.NominalTimeSeg1=12 +FDCAN1.NominalTimeSeg2=3 FDCAN1.RxFifo0ElmtsNbr=1 FDCAN1.StdFiltersNbr=1 FDCAN1.TxFifoQueueElmtsNbr=1 @@ -441,7 +442,8 @@ RCC.DIVQ3Freq_Value=16125000 RCC.DIVR1Freq_Value=256000000 RCC.DIVR2Freq_Value=96000000 RCC.DIVR3Freq_Value=16125000 -RCC.FDCANFreq_Value=128000000 +RCC.FDCANCLockSelection=RCC_FDCANCLKSOURCE_PLL2 +RCC.FDCANFreq_Value=96000000 RCC.FMCFreq_Value=256000000 RCC.FamilyName=M RCC.HCLK3ClockFreq_Value=256000000 @@ -450,7 +452,7 @@ RCC.HPRE=RCC_HCLK_DIV2 RCC.HSE_VALUE=8000000 RCC.I2C123Freq_Value=128000000 RCC.I2C4Freq_Value=128000000 -RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVN1,DIVN2,DIVP1,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PLLSourceVirtual,PWR_Regulator_Voltage_Scale,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123CLockSelection,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value +RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVN1,DIVN2,DIVP1,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,FDCANCLockSelection,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PLLSourceVirtual,PWR_Regulator_Voltage_Scale,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123CLockSelection,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value RCC.LPTIM1Freq_Value=128000000 RCC.LPTIM2Freq_Value=128000000 RCC.LPTIM345Freq_Value=128000000 diff --git a/firmware/quadruna/BMS/src/cubemx/BMS.ioc.md5 b/firmware/quadruna/BMS/src/cubemx/BMS.ioc.md5 index c5073815f0..d55cfa7cee 100644 --- a/firmware/quadruna/BMS/src/cubemx/BMS.ioc.md5 +++ b/firmware/quadruna/BMS/src/cubemx/BMS.ioc.md5 @@ -1 +1 @@ -b0a5ba8fcc46cb0bb8846b7353b0c5d9 \ No newline at end of file +75218909f93a93c4c3a86f977999c2cf \ No newline at end of file diff --git a/firmware/quadruna/BMS/src/cubemx/Src/main.c b/firmware/quadruna/BMS/src/cubemx/Src/main.c index 56337bcae0..4949462aa7 100644 --- a/firmware/quadruna/BMS/src/cubemx/Src/main.c +++ b/firmware/quadruna/BMS/src/cubemx/Src/main.c @@ -142,6 +142,7 @@ bool sd_inited; /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); +void PeriphCommonClock_Config(void); static void MX_GPIO_Init(void); static void MX_DMA_Init(void); static void MX_FDCAN1_Init(void); @@ -189,6 +190,9 @@ int main(void) /* Configure the system clock */ SystemClock_Config(); + /* Configure the peripherals common clocks */ + PeriphCommonClock_Config(); + /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ @@ -327,6 +331,33 @@ void SystemClock_Config(void) } } +/** + * @brief Peripherals Common Clock Configuration + * @retval None + */ +void PeriphCommonClock_Config(void) +{ + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 }; + + /** Initializes the peripherals clock + */ + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI2 | RCC_PERIPHCLK_FDCAN; + PeriphClkInitStruct.PLL2.PLL2M = 1; + PeriphClkInitStruct.PLL2.PLL2N = 24; + PeriphClkInitStruct.PLL2.PLL2P = 2; + PeriphClkInitStruct.PLL2.PLL2Q = 2; + PeriphClkInitStruct.PLL2.PLL2R = 2; + PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3; + PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE; + PeriphClkInitStruct.PLL2.PLL2FRACN = 0; + PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL2; + PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } +} + /** * @brief ADC1 Initialization Function * @param None @@ -479,10 +510,10 @@ static void MX_FDCAN1_Init(void) hfdcan1.Init.AutoRetransmission = ENABLE; hfdcan1.Init.TransmitPause = DISABLE; hfdcan1.Init.ProtocolException = DISABLE; - hfdcan1.Init.NominalPrescaler = 16; - hfdcan1.Init.NominalSyncJumpWidth = 4; - hfdcan1.Init.NominalTimeSeg1 = 13; - hfdcan1.Init.NominalTimeSeg2 = 2; + hfdcan1.Init.NominalPrescaler = 6; + hfdcan1.Init.NominalSyncJumpWidth = 3; + hfdcan1.Init.NominalTimeSeg1 = 12; + hfdcan1.Init.NominalTimeSeg2 = 3; hfdcan1.Init.DataPrescaler = 1; hfdcan1.Init.DataSyncJumpWidth = 1; hfdcan1.Init.DataTimeSeg1 = 1; diff --git a/firmware/quadruna/BMS/src/cubemx/Src/stm32h7xx_hal_msp.c b/firmware/quadruna/BMS/src/cubemx/Src/stm32h7xx_hal_msp.c index 647dabe664..567504c515 100644 --- a/firmware/quadruna/BMS/src/cubemx/Src/stm32h7xx_hal_msp.c +++ b/firmware/quadruna/BMS/src/cubemx/Src/stm32h7xx_hal_msp.c @@ -227,23 +227,12 @@ void HAL_CRC_MspDeInit(CRC_HandleTypeDef *hcrc) */ void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef *hfdcan) { - GPIO_InitTypeDef GPIO_InitStruct = { 0 }; - RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 }; + GPIO_InitTypeDef GPIO_InitStruct = { 0 }; if (hfdcan->Instance == FDCAN1) { /* USER CODE BEGIN FDCAN1_MspInit 0 */ /* USER CODE END FDCAN1_MspInit 0 */ - - /** Initializes the peripherals clock - */ - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_FDCAN; - PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - { - Error_Handler(); - } - /* Peripheral clock enable */ __HAL_RCC_FDCAN_CLK_ENABLE(); @@ -406,31 +395,12 @@ void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd) */ void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) { - GPIO_InitTypeDef GPIO_InitStruct = { 0 }; - RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 }; + GPIO_InitTypeDef GPIO_InitStruct = { 0 }; if (hspi->Instance == SPI2) { /* USER CODE BEGIN SPI2_MspInit 0 */ /* USER CODE END SPI2_MspInit 0 */ - - /** Initializes the peripherals clock - */ - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI2; - PeriphClkInitStruct.PLL2.PLL2M = 1; - PeriphClkInitStruct.PLL2.PLL2N = 24; - PeriphClkInitStruct.PLL2.PLL2P = 2; - PeriphClkInitStruct.PLL2.PLL2Q = 2; - PeriphClkInitStruct.PLL2.PLL2R = 2; - PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3; - PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE; - PeriphClkInitStruct.PLL2.PLL2FRACN = 0; - PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL2; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - { - Error_Handler(); - } - /* Peripheral clock enable */ __HAL_RCC_SPI2_CLK_ENABLE(); diff --git a/firmware/quadruna/CRIT/src/cubemx/CRIT.ioc b/firmware/quadruna/CRIT/src/cubemx/CRIT.ioc index c939e698ef..a8722d53a5 100644 --- a/firmware/quadruna/CRIT/src/cubemx/CRIT.ioc +++ b/firmware/quadruna/CRIT/src/cubemx/CRIT.ioc @@ -13,16 +13,16 @@ CAD.formats=[] CAD.pinconfig=Project naming CAD.provider= CAN1.ABOM=ENABLE -CAN1.BS1=CAN_BS1_13TQ -CAN1.BS2=CAN_BS2_2TQ -CAN1.CalculateBaudRate=500000 -CAN1.CalculateTimeBit=2000 -CAN1.CalculateTimeQuantum=125.0 +CAN1.BS1=CAN_BS1_12TQ +CAN1.BS2=CAN_BS2_3TQ +CAN1.CalculateBaudRate=1000000 +CAN1.CalculateTimeBit=1000 +CAN1.CalculateTimeQuantum=62.5 CAN1.IPParameters=CalculateTimeQuantum,CalculateBaudRate,Prescaler,CalculateTimeBit,BS1,SJW,ABOM,NART,RFLM,TXFP,BS2 CAN1.NART=ENABLE -CAN1.Prescaler=6 +CAN1.Prescaler=3 CAN1.RFLM=ENABLE -CAN1.SJW=CAN_SJW_4TQ +CAN1.SJW=CAN_SJW_3TQ CAN1.TXFP=ENABLE Dma.ADC1.0.Direction=DMA_PERIPH_TO_MEMORY Dma.ADC1.0.FIFOMode=DMA_FIFOMODE_DISABLE diff --git a/firmware/quadruna/CRIT/src/cubemx/CRIT.ioc.md5 b/firmware/quadruna/CRIT/src/cubemx/CRIT.ioc.md5 index 5bf680558b..4e67590044 100644 --- a/firmware/quadruna/CRIT/src/cubemx/CRIT.ioc.md5 +++ b/firmware/quadruna/CRIT/src/cubemx/CRIT.ioc.md5 @@ -1 +1 @@ -f342cd5dc78891d8b405e1488752bb26 \ No newline at end of file +dec0b6cff3b236e2b36dbd757f4451a8 \ No newline at end of file diff --git a/firmware/quadruna/CRIT/src/cubemx/Src/main.c b/firmware/quadruna/CRIT/src/cubemx/Src/main.c index ff5213753b..4fdbac1c4e 100644 --- a/firmware/quadruna/CRIT/src/cubemx/Src/main.c +++ b/firmware/quadruna/CRIT/src/cubemx/Src/main.c @@ -348,11 +348,11 @@ static void MX_CAN1_Init(void) /* USER CODE END CAN1_Init 1 */ hcan1.Instance = CAN1; - hcan1.Init.Prescaler = 6; + hcan1.Init.Prescaler = 3; hcan1.Init.Mode = CAN_MODE_NORMAL; - hcan1.Init.SyncJumpWidth = CAN_SJW_4TQ; - hcan1.Init.TimeSeg1 = CAN_BS1_13TQ; - hcan1.Init.TimeSeg2 = CAN_BS2_2TQ; + hcan1.Init.SyncJumpWidth = CAN_SJW_3TQ; + hcan1.Init.TimeSeg1 = CAN_BS1_12TQ; + hcan1.Init.TimeSeg2 = CAN_BS2_3TQ; hcan1.Init.TimeTriggeredMode = DISABLE; hcan1.Init.AutoBusOff = ENABLE; hcan1.Init.AutoWakeUp = DISABLE; diff --git a/firmware/quadruna/FSM/src/cubemx/FSM.ioc b/firmware/quadruna/FSM/src/cubemx/FSM.ioc index 926694fda4..92c5a65c05 100644 --- a/firmware/quadruna/FSM/src/cubemx/FSM.ioc +++ b/firmware/quadruna/FSM/src/cubemx/FSM.ioc @@ -37,16 +37,16 @@ CAD.formats=[] CAD.pinconfig=Project naming CAD.provider= CAN1.ABOM=ENABLE -CAN1.BS1=CAN_BS1_13TQ -CAN1.BS2=CAN_BS2_2TQ -CAN1.CalculateBaudRate=500000 -CAN1.CalculateTimeBit=2000 -CAN1.CalculateTimeQuantum=125.0 +CAN1.BS1=CAN_BS1_12TQ +CAN1.BS2=CAN_BS2_3TQ +CAN1.CalculateBaudRate=1000000 +CAN1.CalculateTimeBit=1000 +CAN1.CalculateTimeQuantum=62.5 CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,BS1,Prescaler,SJW,ABOM,NART,RFLM,TXFP,BS2 CAN1.NART=ENABLE -CAN1.Prescaler=6 +CAN1.Prescaler=3 CAN1.RFLM=ENABLE -CAN1.SJW=CAN_SJW_4TQ +CAN1.SJW=CAN_SJW_3TQ CAN1.TXFP=ENABLE Dma.ADC1.0.Direction=DMA_PERIPH_TO_MEMORY Dma.ADC1.0.FIFOMode=DMA_FIFOMODE_DISABLE @@ -275,7 +275,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_CAN1_Init-CAN1-false-HAL-true,6-MX_TIM12_Init-TIM12-false-HAL-true,7-MX_USART1_UART_Init-USART1-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_CAN1_Init-CAN1-false-HAL-true,6-MX_TIM12_Init-TIM12-false-HAL-true,7-MX_USART1_UART_Init-USART1-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_IWDG_Init-IWDG-false-HAL-true RCC.AHBFreq_Value=96000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 RCC.APB1Freq_Value=48000000 diff --git a/firmware/quadruna/FSM/src/cubemx/FSM.ioc.md5 b/firmware/quadruna/FSM/src/cubemx/FSM.ioc.md5 index 8a81d0f1cc..afa62760d9 100644 --- a/firmware/quadruna/FSM/src/cubemx/FSM.ioc.md5 +++ b/firmware/quadruna/FSM/src/cubemx/FSM.ioc.md5 @@ -1 +1 @@ -789915069a7107a76c10a7b1a040c604 \ No newline at end of file +737aa00268fe4cc624a7f492ff96061c \ No newline at end of file diff --git a/firmware/quadruna/FSM/src/cubemx/Src/main.c b/firmware/quadruna/FSM/src/cubemx/Src/main.c index 915f921d73..06102f7ef2 100644 --- a/firmware/quadruna/FSM/src/cubemx/Src/main.c +++ b/firmware/quadruna/FSM/src/cubemx/Src/main.c @@ -425,11 +425,11 @@ static void MX_CAN1_Init(void) /* USER CODE END CAN1_Init 1 */ hcan1.Instance = CAN1; - hcan1.Init.Prescaler = 6; + hcan1.Init.Prescaler = 3; hcan1.Init.Mode = CAN_MODE_NORMAL; - hcan1.Init.SyncJumpWidth = CAN_SJW_4TQ; - hcan1.Init.TimeSeg1 = CAN_BS1_13TQ; - hcan1.Init.TimeSeg2 = CAN_BS2_2TQ; + hcan1.Init.SyncJumpWidth = CAN_SJW_3TQ; + hcan1.Init.TimeSeg1 = CAN_BS1_12TQ; + hcan1.Init.TimeSeg2 = CAN_BS2_3TQ; hcan1.Init.TimeTriggeredMode = DISABLE; hcan1.Init.AutoBusOff = ENABLE; hcan1.Init.AutoWakeUp = DISABLE; diff --git a/firmware/quadruna/RSM/src/cubemx/RSM.ioc b/firmware/quadruna/RSM/src/cubemx/RSM.ioc index eda8e0c37c..129407e1e4 100644 --- a/firmware/quadruna/RSM/src/cubemx/RSM.ioc +++ b/firmware/quadruna/RSM/src/cubemx/RSM.ioc @@ -40,16 +40,16 @@ CAD.formats=[] CAD.pinconfig=Project naming CAD.provider= CAN1.ABOM=ENABLE -CAN1.BS1=CAN_BS1_13TQ -CAN1.BS2=CAN_BS2_2TQ -CAN1.CalculateBaudRate=500000 -CAN1.CalculateTimeBit=2000 -CAN1.CalculateTimeQuantum=125.0 +CAN1.BS1=CAN_BS1_12TQ +CAN1.BS2=CAN_BS2_3TQ +CAN1.CalculateBaudRate=1000000 +CAN1.CalculateTimeBit=1000 +CAN1.CalculateTimeQuantum=62.5 CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,BS1,Prescaler,SJW,ABOM,NART,RFLM,TXFP,BS2 CAN1.NART=ENABLE -CAN1.Prescaler=6 +CAN1.Prescaler=3 CAN1.RFLM=ENABLE -CAN1.SJW=CAN_SJW_4TQ +CAN1.SJW=CAN_SJW_3TQ CAN1.TXFP=ENABLE Dma.ADC1.0.Direction=DMA_PERIPH_TO_MEMORY Dma.ADC1.0.FIFOMode=DMA_FIFOMODE_DISABLE @@ -281,7 +281,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_CAN1_Init-CAN1-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_TIM3_Init-TIM3-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_CAN1_Init-CAN1-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_TIM3_Init-TIM3-false-HAL-true,8-MX_IWDG_Init-IWDG-false-HAL-true RCC.AHBFreq_Value=96000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 RCC.APB1Freq_Value=48000000 diff --git a/firmware/quadruna/RSM/src/cubemx/RSM.ioc.md5 b/firmware/quadruna/RSM/src/cubemx/RSM.ioc.md5 index 2cd1768fb7..62e5badeb1 100644 --- a/firmware/quadruna/RSM/src/cubemx/RSM.ioc.md5 +++ b/firmware/quadruna/RSM/src/cubemx/RSM.ioc.md5 @@ -1 +1 @@ -25af797de0905b5c11cd10ba146294ad \ No newline at end of file +28ebeaccfb57303bb048e0af4eb618e3 \ No newline at end of file diff --git a/firmware/quadruna/RSM/src/cubemx/Src/main.c b/firmware/quadruna/RSM/src/cubemx/Src/main.c index 13d4de4db7..fb1aee9e5d 100644 --- a/firmware/quadruna/RSM/src/cubemx/Src/main.c +++ b/firmware/quadruna/RSM/src/cubemx/Src/main.c @@ -430,11 +430,11 @@ static void MX_CAN1_Init(void) /* USER CODE END CAN1_Init 1 */ hcan1.Instance = CAN1; - hcan1.Init.Prescaler = 6; + hcan1.Init.Prescaler = 3; hcan1.Init.Mode = CAN_MODE_NORMAL; - hcan1.Init.SyncJumpWidth = CAN_SJW_4TQ; - hcan1.Init.TimeSeg1 = CAN_BS1_13TQ; - hcan1.Init.TimeSeg2 = CAN_BS2_2TQ; + hcan1.Init.SyncJumpWidth = CAN_SJW_3TQ; + hcan1.Init.TimeSeg1 = CAN_BS1_12TQ; + hcan1.Init.TimeSeg2 = CAN_BS2_3TQ; hcan1.Init.TimeTriggeredMode = DISABLE; hcan1.Init.AutoBusOff = ENABLE; hcan1.Init.AutoWakeUp = DISABLE; diff --git a/firmware/quadruna/VC/src/cubemx/Src/main.c b/firmware/quadruna/VC/src/cubemx/Src/main.c index e06752b828..15c01c4a36 100644 --- a/firmware/quadruna/VC/src/cubemx/Src/main.c +++ b/firmware/quadruna/VC/src/cubemx/Src/main.c @@ -155,6 +155,7 @@ const osThreadAttr_t TaskTelem_attributes = { /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); +void PeriphCommonClock_Config(void); static void MX_GPIO_Init(void); static void MX_DMA_Init(void); static void MX_ADC3_Init(void); @@ -208,6 +209,9 @@ int main(void) /* Configure the system clock */ SystemClock_Config(); + /* Configure the peripherals common clocks */ + PeriphCommonClock_Config(); + /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ @@ -355,6 +359,33 @@ void SystemClock_Config(void) } } +/** + * @brief Peripherals Common Clock Configuration + * @retval None + */ +void PeriphCommonClock_Config(void) +{ + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 }; + + /** Initializes the peripherals clock + */ + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_FDCAN; + PeriphClkInitStruct.PLL2.PLL2M = 1; + PeriphClkInitStruct.PLL2.PLL2N = 24; + PeriphClkInitStruct.PLL2.PLL2P = 2; + PeriphClkInitStruct.PLL2.PLL2Q = 2; + PeriphClkInitStruct.PLL2.PLL2R = 2; + PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3; + PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE; + PeriphClkInitStruct.PLL2.PLL2FRACN = 0; + PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL2; + PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } +} + /** * @brief ADC1 Initialization Function * @param None @@ -574,10 +605,10 @@ static void MX_FDCAN1_Init(void) hfdcan1.Init.AutoRetransmission = ENABLE; hfdcan1.Init.TransmitPause = DISABLE; hfdcan1.Init.ProtocolException = DISABLE; - hfdcan1.Init.NominalPrescaler = 16; - hfdcan1.Init.NominalSyncJumpWidth = 4; - hfdcan1.Init.NominalTimeSeg1 = 13; - hfdcan1.Init.NominalTimeSeg2 = 2; + hfdcan1.Init.NominalPrescaler = 6; + hfdcan1.Init.NominalSyncJumpWidth = 3; + hfdcan1.Init.NominalTimeSeg1 = 12; + hfdcan1.Init.NominalTimeSeg2 = 3; hfdcan1.Init.DataPrescaler = 1; hfdcan1.Init.DataSyncJumpWidth = 1; hfdcan1.Init.DataTimeSeg1 = 1; diff --git a/firmware/quadruna/VC/src/cubemx/Src/stm32h7xx_hal_msp.c b/firmware/quadruna/VC/src/cubemx/Src/stm32h7xx_hal_msp.c index 2fb82f1f3c..6547a47aad 100644 --- a/firmware/quadruna/VC/src/cubemx/Src/stm32h7xx_hal_msp.c +++ b/firmware/quadruna/VC/src/cubemx/Src/stm32h7xx_hal_msp.c @@ -89,14 +89,12 @@ void HAL_MspInit(void) */ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) { - GPIO_InitTypeDef GPIO_InitStruct = { 0 }; - RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 }; + GPIO_InitTypeDef GPIO_InitStruct = { 0 }; if (hadc->Instance == ADC1) { /* USER CODE BEGIN ADC1_MspInit 0 */ /* USER CODE END ADC1_MspInit 0 */ - /* Peripheral clock enable */ __HAL_RCC_ADC12_CLK_ENABLE(); @@ -158,24 +156,6 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) /* USER CODE BEGIN ADC3_MspInit 0 */ /* USER CODE END ADC3_MspInit 0 */ - - /** Initializes the peripherals clock - */ - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC; - PeriphClkInitStruct.PLL2.PLL2M = 1; - PeriphClkInitStruct.PLL2.PLL2N = 24; - PeriphClkInitStruct.PLL2.PLL2P = 2; - PeriphClkInitStruct.PLL2.PLL2Q = 2; - PeriphClkInitStruct.PLL2.PLL2R = 2; - PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3; - PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE; - PeriphClkInitStruct.PLL2.PLL2FRACN = 0; - PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - { - Error_Handler(); - } - /* Peripheral clock enable */ __HAL_RCC_ADC3_CLK_ENABLE(); @@ -261,23 +241,12 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc) */ void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef *hfdcan) { - GPIO_InitTypeDef GPIO_InitStruct = { 0 }; - RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 }; + GPIO_InitTypeDef GPIO_InitStruct = { 0 }; if (hfdcan->Instance == FDCAN1) { /* USER CODE BEGIN FDCAN1_MspInit 0 */ /* USER CODE END FDCAN1_MspInit 0 */ - - /** Initializes the peripherals clock - */ - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_FDCAN; - PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - { - Error_Handler(); - } - /* Peripheral clock enable */ __HAL_RCC_FDCAN_CLK_ENABLE(); diff --git a/firmware/quadruna/VC/src/cubemx/VC.ioc b/firmware/quadruna/VC/src/cubemx/VC.ioc index 9c3bd825ce..e24d480eea 100644 --- a/firmware/quadruna/VC/src/cubemx/VC.ioc +++ b/firmware/quadruna/VC/src/cubemx/VC.ioc @@ -101,12 +101,14 @@ Dma.USART2_RX.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT Dma.USART2_RX.1.SyncRequestNumber=1 Dma.USART2_RX.1.SyncSignalID=NONE FDCAN1.AutoRetransmission=ENABLE -FDCAN1.CalculateBaudRateNominal=500000 -FDCAN1.CalculateTimeBitNominal=2000 -FDCAN1.CalculateTimeQuantumNominal=125.0 -FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,AutoRetransmission,NominalSyncJumpWidth,StdFiltersNbr,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalTimeSeg1 -FDCAN1.NominalSyncJumpWidth=4 -FDCAN1.NominalTimeSeg1=13 +FDCAN1.CalculateBaudRateNominal=1000000 +FDCAN1.CalculateTimeBitNominal=1000 +FDCAN1.CalculateTimeQuantumNominal=62.5 +FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,AutoRetransmission,NominalSyncJumpWidth,StdFiltersNbr,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalTimeSeg1,NominalTimeSeg2,NominalPrescaler +FDCAN1.NominalPrescaler=6 +FDCAN1.NominalSyncJumpWidth=3 +FDCAN1.NominalTimeSeg1=12 +FDCAN1.NominalTimeSeg2=3 FDCAN1.RxFifo0ElmtsNbr=1 FDCAN1.StdFiltersNbr=1 FDCAN1.TxFifoQueueElmtsNbr=1 @@ -570,7 +572,9 @@ RCC.DIVQ3Freq_Value=16125000 RCC.DIVR1Freq_Value=256000000 RCC.DIVR2Freq_Value=96000000 RCC.DIVR3Freq_Value=16125000 -RCC.FDCANFreq_Value=128000000 +RCC.EnbaleCSS=false +RCC.FDCANCLockSelection=RCC_FDCANCLKSOURCE_PLL2 +RCC.FDCANFreq_Value=96000000 RCC.FMCFreq_Value=256000000 RCC.FamilyName=M RCC.HCLK3ClockFreq_Value=256000000 @@ -579,7 +583,7 @@ RCC.HPRE=RCC_HCLK_DIV2 RCC.HSE_VALUE=8000000 RCC.I2C123Freq_Value=128000000 RCC.I2C4Freq_Value=128000000 -RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVN1,DIVN2,DIVP1,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value +RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVN1,DIVN2,DIVP1,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,EnbaleCSS,FDCANCLockSelection,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value RCC.LPTIM1Freq_Value=128000000 RCC.LPTIM2Freq_Value=128000000 RCC.LPTIM345Freq_Value=128000000 diff --git a/firmware/quadruna/VC/src/cubemx/VC.ioc.md5 b/firmware/quadruna/VC/src/cubemx/VC.ioc.md5 index 42a29bd4fc..129a5b57cc 100644 --- a/firmware/quadruna/VC/src/cubemx/VC.ioc.md5 +++ b/firmware/quadruna/VC/src/cubemx/VC.ioc.md5 @@ -1 +1 @@ -1fe2780f4a453c323089aea53c064099 \ No newline at end of file +4b517a9af04e87e448627600c402c1e9 \ No newline at end of file