Skip to content

Commit 8b20c52

Browse files
authored
Merge pull request #200 from MallikarjunSE/pr-crytsal-support
L431: Support both HSE crystal and external oscillator
2 parents 73a71a0 + b871f2c commit 8b20c52

2 files changed

Lines changed: 47 additions & 19 deletions

File tree

Inc/targets.h

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136

137137
#ifdef VIMDRONES_S50_L431
138138
#define FIRMWARE_NAME "VM_S50_CAN"
139-
#define FILE_NAME "VIMDRONES_S50_L431_CAN"
139+
#define FILE_NAME "VIMDRONES_S50_L431"
140140
#define DEAD_TIME 45
141141
#define HARDWARE_GROUP_L4_B
142142
#define TARGET_VOLTAGE_DIVIDER 110
@@ -159,20 +159,38 @@
159159
#define USE_SERIAL_TELEMETRY
160160
#endif
161161

162-
#ifdef SIERRA_PULSE1_L431_CAN
163-
#define FIRMWARE_NAME "SierraPulse1"
164-
#define FILE_NAME "SIERRA_PULSE1_L431_CAN"
162+
#ifdef SIERRA_PULSE_12S_L431_CAN
163+
#define FIRMWARE_NAME "S_PULSE_12S"
164+
#define FILE_NAME "SIERRA_PULSE_12S_L431_CAN"
165165
#define DRONECAN_SUPPORT 1
166166
#define USE_HSE
167+
#define USE_HSE_BYPASS 0
167168
#undef HSE_VALUE
168169
#define HSE_VALUE 16000000
169-
#define DEAD_TIME 120
170+
#define DEAD_TIME 60
170171
#define HARDWARE_GROUP_L4_C
171172
#define HARDWARE_GROUP_L4_045
172173
#define TARGET_VOLTAGE_DIVIDER 210
173174
#define MILLIVOLT_PER_AMP 10
174175
#define RAMP_SPEED_LOW_RPM 1
175176
#define RAMP_SPEED_HIGH_RPM 1
177+
#define LOOP_FREQUENCY_HZ 20000
178+
#define USE_SERIAL_TELEMETRY
179+
#endif
180+
181+
#ifdef SIERRA_PULSE_6S_L431_CAN
182+
#define FIRMWARE_NAME "S_PULSE_6S"
183+
#define FILE_NAME "SIERRA_PULSE_6S_L431_CAN"
184+
#define DRONECAN_SUPPORT 1
185+
#define USE_HSE
186+
#define USE_HSE_BYPASS 0
187+
#undef HSE_VALUE
188+
#define HSE_VALUE 16000000
189+
#define DEAD_TIME 60
190+
#define HARDWARE_GROUP_L4_C
191+
#define HARDWARE_GROUP_L4_045
192+
#define TARGET_VOLTAGE_DIVIDER 110
193+
#define MILLIVOLT_PER_AMP 10
176194
#define USE_SERIAL_TELEMETRY
177195
#endif
178196

Mcu/l431/Src/peripherals.c

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,30 @@ void SystemClock_Config(void)
6262
}
6363

6464
#ifdef USE_HSE
65-
/*
66-
using high speed external oscillator
67-
*/
68-
LL_RCC_HSE_EnableBypass();
69-
LL_RCC_HSE_Enable();
70-
#if HSE_VALUE == 24000000
71-
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_3, 20, LL_RCC_PLLR_DIV_2);
72-
#elif HSE_VALUE == 16000000
73-
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_2, 20, LL_RCC_PLLR_DIV_2);
74-
#elif HSE_VALUE == 8000000
75-
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_1, 20, LL_RCC_PLLR_DIV_2);
76-
#else
77-
#error "Unsupported HSE_VALUE"
78-
#endif
65+
/*
66+
Using high-speed external source (HSE)
67+
- Default: Bypass mode (external oscillator)
68+
- Define USE_HSE_BYPASS to disable bypass (use crystal)
69+
*/
70+
#if defined(USE_HSE_BYPASS) && (USE_HSE_BYPASS == 0)
71+
LL_RCC_HSE_DisableBypass(); // Use crystal mode
72+
#else
73+
LL_RCC_HSE_EnableBypass(); // Default: Use external oscillator
74+
#endif
75+
LL_RCC_HSE_Enable();
76+
77+
// Wait for HSE to be ready
78+
while (LL_RCC_HSE_IsReady() != 1U) {}
79+
80+
#if HSE_VALUE == 24000000
81+
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_3, 20, LL_RCC_PLLR_DIV_2);
82+
#elif HSE_VALUE == 16000000
83+
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_2, 20, LL_RCC_PLLR_DIV_2);
84+
#elif HSE_VALUE == 8000000
85+
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_1, 20, LL_RCC_PLLR_DIV_2);
86+
#else
87+
#error "Unsupported HSE_VALUE"
88+
#endif
7989

8090
#elif defined(USE_LSE)
8191
/*

0 commit comments

Comments
 (0)