configured ADC sync signals at fastest possible frequency: 1.75 MHz

This commit is contained in:
2025-04-07 19:01:57 +03:00
parent 61bb0c41db
commit 5756dfe749
2 changed files with 42 additions and 6 deletions

View File

@ -594,8 +594,8 @@ TIM10.Prescaler=183
TIM11.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE TIM11.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM11.Channel=TIM_CHANNEL_1 TIM11.Channel=TIM_CHANNEL_1
TIM11.IPParameters=Prescaler,Period,AutoReloadPreload,Channel,Pulse TIM11.IPParameters=Prescaler,Period,AutoReloadPreload,Channel,Pulse
TIM11.Period=183 TIM11.Period=91
TIM11.Prescaler=0 TIM11.Prescaler=1
TIM11.Pulse=91 TIM11.Pulse=91
TIM2.ClockDivision=TIM_CLOCKDIVISION_DIV1 TIM2.ClockDivision=TIM_CLOCKDIVISION_DIV1
TIM2.IPParameters=Period,ClockDivision,Prescaler TIM2.IPParameters=Period,ClockDivision,Prescaler

View File

@ -171,8 +171,25 @@ int main(void)
MX_TIM4_Init(); MX_TIM4_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
Init_params(); Init_params();
HAL_TIM_Base_Start(&htim11); //HAL_TIM_Base_Start(&htim11);
HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1); //start modulating by Mach-Zander modulator //HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1); //start modulating by Mach-Zander modulator
//TIM4,11 clocks = 92 MHz
//ADC clock
//TIM4 -> ARR = 60; // for 1.5 MHz
//TIM4 -> ARR = 91; // for 1 MHz
//TIM4 -> ARR = 45; // for 2 MHz
TIM4 -> ARR = 53; // for 1.735 MHz. It`s the highest frequency for correct ADC work. At higher freq artifacts (voltage peaks) appears.
TIM4 -> CCR3 = (TIM4 -> ARR +1)/2 - 1;
//Mach-Zander clock (should be half of ADC clock freq)
TIM11 -> ARR = (TIM4 -> ARR +1)*2 - 1;
TIM11 -> CCR1 = (TIM11 -> ARR +1)/2 - 1;
/* /*
if (HAL_GPIO_ReadPin(INP_0_GPIO_Port, INP_0_Pin) == 0){ if (HAL_GPIO_ReadPin(INP_0_GPIO_Port, INP_0_Pin) == 0){
@ -363,6 +380,25 @@ int main(void)
switch (task.task_type) switch (task.task_type)
{ {
case TT_CHANGE_CURR_1: case TT_CHANGE_CURR_1:
//calculating timer periods for ADC clock and Mach-Zander modulator
//ADC clock
//TIM4 -> ARR = 60; // for 1.5 MHz
//TIM4 -> ARR = 91; // for 1 MHz
//TIM4 -> ARR = 45; // for 2 MHz
//online calculation for debug purposes:
//manually varying TIM4 -> ARR by debugger while running
//TIM4 -> CCR3 = (TIM4 -> ARR +1)/2 - 1;
//Mach-Zander clock (should be half of ADC clock freq)
//TIM11 -> ARR = (TIM4 -> ARR +1)*2 - 1;
//TIM11 -> CCR1 = (TIM11 -> ARR +1)/2 - 1;
Set_LTEC(TT_CHANGE_CURR_2, task.curr); Set_LTEC(TT_CHANGE_CURR_2, task.curr);
(void) MPhD_T(TT_CHANGE_TEMP_1); (void) MPhD_T(TT_CHANGE_TEMP_1);
LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1);
@ -1472,9 +1508,9 @@ static void MX_TIM11_Init(void)
/* USER CODE END TIM11_Init 1 */ /* USER CODE END TIM11_Init 1 */
htim11.Instance = TIM11; htim11.Instance = TIM11;
htim11.Init.Prescaler = 0; htim11.Init.Prescaler = 1;
htim11.Init.CounterMode = TIM_COUNTERMODE_UP; htim11.Init.CounterMode = TIM_COUNTERMODE_UP;
htim11.Init.Period = 183; htim11.Init.Period = 91;
htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim11) != HAL_OK) if (HAL_TIM_Base_Init(&htim11) != HAL_OK)