Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Luiz Fernando Lavado Villa
Core
Commits
6660ea4c
Commit
6660ea4c
authored
Jul 16, 2021
by
Clément Foucher
Browse files
Add Current mode to HRTIM driver.
parent
73ca606e
Changes
5
Hide whitespace changes
Inline
Side-by-side
zephyr/modules/owntech_hrtim_driver/zephyr/CMakeLists.txt
View file @
6660ea4c
...
@@ -7,6 +7,7 @@ if(CONFIG_OWNTECH_HRTIM_DRIVER)
...
@@ -7,6 +7,7 @@ if(CONFIG_OWNTECH_HRTIM_DRIVER)
zephyr_library_sources
(
zephyr_library_sources
(
./src/voltage_mode/hrtim_voltage_mode.c
./src/voltage_mode/hrtim_voltage_mode.c
./src/voltage_mode/owntech_leg_driver.cpp
./src/voltage_mode/owntech_leg_driver.cpp
./src/current_mode/hrtim_current_mode.c
./src/hrtim_common.c
./src/hrtim_common.c
)
)
endif
()
endif
()
zephyr/modules/owntech_hrtim_driver/zephyr/public_include/hrtim.h
View file @
6660ea4c
...
@@ -77,6 +77,7 @@ void hrtim_pwm_set(hrtim_t dev, hrtim_tu_t tu, uint16_t value, uint16_t shift);
...
@@ -77,6 +77,7 @@ void hrtim_pwm_set(hrtim_t dev, hrtim_tu_t tu, uint16_t value, uint16_t shift);
void
hrtim_init_current
();
void
hrtim_init_voltage
();
void
hrtim_init_voltage
();
#ifdef __cplusplus
#ifdef __cplusplus
...
...
zephyr/modules/owntech_hrtim_driver/zephyr/src/current_mode/hrtim_current_mode.c
0 → 100644
View file @
6660ea4c
/*
* Copyright (c) 2020-2021 LAAS-CNRS
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: LGLPV2.1
*/
/**
* @author Clément Foucher <clement.foucher@laas.fr>
*/
// STM32 LL
#include
<stm32_ll_hrtim.h>
#include
<stm32_ll_gpio.h>
#include
<stm32_ll_bus.h>
#include
<stm32_ll_dmamux.h>
void
hrtim_cm_init
()
{
/* Peripheral clock enable */
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_HRTIM1
);
LL_HRTIM_ConfigDLLCalibration
(
HRTIM1
,
LL_HRTIM_DLLCALIBRATION_MODE_CONTINUOUS
,
LL_HRTIM_DLLCALIBRATION_RATE_3
);
while
(
LL_HRTIM_IsActiveFlag_DLLRDY
(
HRTIM1
)
==
RESET
)
{
// Wait
}
LL_HRTIM_EE_SetPrescaler
(
HRTIM1
,
LL_HRTIM_EE_PRESCALER_DIV1
);
LL_HRTIM_EE_SetSrc
(
HRTIM1
,
LL_HRTIM_EVENT_4
,
LL_HRTIM_EEV4SRC_COMP1_OUT
);
LL_HRTIM_EE_SetPolarity
(
HRTIM1
,
LL_HRTIM_EVENT_4
,
LL_HRTIM_EE_POLARITY_HIGH
);
LL_HRTIM_EE_SetSensitivity
(
HRTIM1
,
LL_HRTIM_EVENT_4
,
LL_HRTIM_EE_SENSITIVITY_LEVEL
);
LL_HRTIM_EE_SetFastMode
(
HRTIM1
,
LL_HRTIM_EVENT_4
,
LL_HRTIM_EE_FASTMODE_DISABLE
);
LL_HRTIM_EE_SetSrc
(
HRTIM1
,
LL_HRTIM_EVENT_5
,
LL_HRTIM_EEV5SRC_COMP3_OUT
);
LL_HRTIM_EE_SetPolarity
(
HRTIM1
,
LL_HRTIM_EVENT_5
,
LL_HRTIM_EE_POLARITY_HIGH
);
LL_HRTIM_EE_SetSensitivity
(
HRTIM1
,
LL_HRTIM_EVENT_5
,
LL_HRTIM_EE_SENSITIVITY_LEVEL
);
LL_HRTIM_EE_SetFastMode
(
HRTIM1
,
LL_HRTIM_EVENT_5
,
LL_HRTIM_EE_FASTMODE_DISABLE
);
LL_HRTIM_ConfigADCTrig
(
HRTIM1
,
LL_HRTIM_ADCTRIG_1
,
LL_HRTIM_ADCTRIG_UPDATE_MASTER
,
LL_HRTIM_ADCTRIG_SRC13_MCMP3
);
LL_HRTIM_SetADCPostScaler
(
HRTIM1
,
LL_HRTIM_ADCTRIG_1
,
0
);
LL_HRTIM_TIM_SetPrescaler
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
LL_HRTIM_PRESCALERRATIO_MUL16
);
LL_HRTIM_TIM_SetCounterMode
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
LL_HRTIM_MODE_CONTINUOUS
);
LL_HRTIM_TIM_SetPeriod
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
13600
);
LL_HRTIM_TIM_SetRepetition
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
0x00
);
LL_HRTIM_TIM_DisableHalfMode
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
);
LL_HRTIM_TIM_SetInterleavedMode
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
LL_HRTIM_INTERLEAVED_MODE_DISABLED
);
LL_HRTIM_TIM_DisableStartOnSync
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
);
LL_HRTIM_TIM_DisableResetOnSync
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
);
LL_HRTIM_TIM_SetDACTrig
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
LL_HRTIM_DACTRIG_NONE
);
LL_HRTIM_TIM_DisablePreload
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
);
LL_HRTIM_TIM_SetUpdateGating
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
LL_HRTIM_UPDATEGATING_INDEPENDENT
);
LL_HRTIM_TIM_SetUpdateTrig
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
LL_HRTIM_UPDATETRIG_NONE
);
LL_HRTIM_TIM_SetBurstModeOption
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
LL_HRTIM_BURSTMODE_MAINTAINCLOCK
);
LL_HRTIM_ForceUpdate
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
);
LL_HRTIM_TIM_SetCompare1
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
1360
);
LL_HRTIM_TIM_SetCompare2
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
6800
);
LL_HRTIM_TIM_SetCompare3
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
,
2700
);
while
(
LL_HRTIM_IsActiveFlag_DLLRDY
(
HRTIM1
)
==
RESET
)
{
// Wait
}
LL_HRTIM_TIM_SetPrescaler
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_PRESCALERRATIO_MUL16
);
LL_HRTIM_TIM_SetCounterMode
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_MODE_CONTINUOUS
);
LL_HRTIM_TIM_SetPeriod
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
13600
);
LL_HRTIM_TIM_SetRepetition
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
0x00
);
LL_HRTIM_TIM_SetUpdateGating
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_UPDATEGATING_INDEPENDENT
);
LL_HRTIM_TIM_SetCountingMode
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_COUNTING_MODE_UP
);
LL_HRTIM_TIM_SetTriggeredHalfMode
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_TRIGHALF_DISABLED
);
LL_HRTIM_TIM_SetComp1Mode
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_GTCMP1_EQUAL
);
LL_HRTIM_TIM_SetComp3Mode
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_GTCMP3_EQUAL
);
LL_HRTIM_TIM_SetDualDacResetTrigger
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_DCDR_COUNTER
);
LL_HRTIM_TIM_SetDualDacStepTrigger
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_DCDS_CMP2
);
LL_HRTIM_TIM_EnableDualDacTrigger
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_SetDACTrig
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_DACTRIG_NONE
);
LL_HRTIM_TIM_DisableHalfMode
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_SetInterleavedMode
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_INTERLEAVED_MODE_DISABLED
);
LL_HRTIM_TIM_DisableStartOnSync
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_DisableResetOnSync
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_DisablePreload
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_DisableResyncUpdate
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_SetUpdateTrig
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_UPDATETRIG_NONE
|
LL_HRTIM_UPDATETRIG_NONE
);
LL_HRTIM_TIM_SetResetTrig
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_RESETTRIG_MASTER_PER
);
LL_HRTIM_TIM_DisablePushPullMode
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_EnableDeadTime
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_SetBurstModeOption
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_BURSTMODE_MAINTAINCLOCK
);
LL_HRTIM_ForceUpdate
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
LL_HRTIM_TIM_SetCompare1
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
544
);
LL_HRTIM_TIM_SetCompareMode
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_COMPAREUNIT_2
,
LL_HRTIM_COMPAREMODE_REGULAR
);
LL_HRTIM_TIM_SetCompare2
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
100
);
LL_HRTIM_TIM_SetCompare3
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
1360
);
LL_HRTIM_TIM_SetCompare4
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
10880
);
LL_HRTIM_TIM_SetCompareMode
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_COMPAREUNIT_4
,
LL_HRTIM_COMPAREMODE_REGULAR
);
LL_HRTIM_TIM_SetEventFilter
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_EVENT_4
,
LL_HRTIM_EEFLTR_BLANKINGCMP3
);
LL_HRTIM_TIM_SetEventLatchStatus
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_EVENT_4
,
LL_HRTIM_EELATCH_DISABLED
);
LL_HRTIM_DT_SetPrescaler
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_DT_PRESCALER_DIV1
);
LL_HRTIM_DT_SetRisingValue
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
16
);
LL_HRTIM_DT_SetRisingSign
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_DT_RISING_POSITIVE
);
LL_HRTIM_DT_SetFallingValue
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
16
);
LL_HRTIM_DT_SetFallingSign
(
HRTIM1
,
LL_HRTIM_TIMER_A
,
LL_HRTIM_DT_FALLING_POSITIVE
);
LL_HRTIM_OUT_SetPolarity
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA1
,
LL_HRTIM_OUT_POSITIVE_POLARITY
);
LL_HRTIM_OUT_SetOutputSetSrc
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA1
,
LL_HRTIM_OUTPUTSET_TIMCMP1
);
LL_HRTIM_OUT_SetOutputResetSrc
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA1
,
LL_HRTIM_OUTPUTRESET_TIMCMP4
|
LL_HRTIM_OUTPUTSET_EEV_5
);
LL_HRTIM_OUT_SetIdleMode
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA1
,
LL_HRTIM_OUT_NO_IDLE
);
LL_HRTIM_OUT_SetIdleLevel
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA1
,
LL_HRTIM_OUT_IDLELEVEL_INACTIVE
);
LL_HRTIM_OUT_SetFaultState
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA1
,
LL_HRTIM_OUT_FAULTSTATE_NO_ACTION
);
LL_HRTIM_OUT_SetChopperMode
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA1
,
LL_HRTIM_OUT_CHOPPERMODE_DISABLED
);
LL_HRTIM_OUT_SetPolarity
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA2
,
LL_HRTIM_OUT_POSITIVE_POLARITY
);
LL_HRTIM_OUT_SetOutputSetSrc
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA2
,
LL_HRTIM_OUTPUTSET_NONE
);
LL_HRTIM_OUT_SetOutputResetSrc
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA2
,
LL_HRTIM_OUTPUTRESET_NONE
);
LL_HRTIM_OUT_SetIdleMode
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA2
,
LL_HRTIM_OUT_NO_IDLE
);
LL_HRTIM_OUT_SetIdleLevel
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA2
,
LL_HRTIM_OUT_IDLELEVEL_INACTIVE
);
LL_HRTIM_OUT_SetFaultState
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA2
,
LL_HRTIM_OUT_FAULTSTATE_NO_ACTION
);
LL_HRTIM_OUT_SetChopperMode
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA2
,
LL_HRTIM_OUT_CHOPPERMODE_DISABLED
);
while
(
LL_HRTIM_IsActiveFlag_DLLRDY
(
HRTIM1
)
==
RESET
)
{
// Wait
}
LL_HRTIM_TIM_SetPrescaler
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_PRESCALERRATIO_MUL16
);
LL_HRTIM_TIM_SetCounterMode
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_MODE_CONTINUOUS
);
LL_HRTIM_TIM_SetPeriod
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
13600
);
LL_HRTIM_TIM_SetRepetition
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
0x00
);
LL_HRTIM_TIM_SetUpdateGating
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_UPDATEGATING_INDEPENDENT
);
LL_HRTIM_TIM_SetCountingMode
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_COUNTING_MODE_UP
);
LL_HRTIM_TIM_SetTriggeredHalfMode
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_TRIGHALF_DISABLED
);
LL_HRTIM_TIM_SetComp1Mode
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_GTCMP1_EQUAL
);
LL_HRTIM_TIM_SetComp3Mode
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_GTCMP3_EQUAL
);
LL_HRTIM_TIM_SetDualDacResetTrigger
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_DCDR_COUNTER
);
LL_HRTIM_TIM_SetDualDacStepTrigger
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_DCDS_CMP2
);
LL_HRTIM_TIM_EnableDualDacTrigger
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_SetDACTrig
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_DACTRIG_NONE
);
LL_HRTIM_TIM_DisableHalfMode
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_SetInterleavedMode
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_INTERLEAVED_MODE_DISABLED
);
LL_HRTIM_TIM_DisableStartOnSync
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_DisableResetOnSync
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_DisablePreload
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_DisableResyncUpdate
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_SetUpdateTrig
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_UPDATETRIG_NONE
|
LL_HRTIM_UPDATETRIG_NONE
);
LL_HRTIM_TIM_SetResetTrig
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_RESETTRIG_MASTER_CMP2
);
LL_HRTIM_TIM_DisablePushPullMode
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_EnableDeadTime
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_SetBurstModeOption
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_BURSTMODE_MAINTAINCLOCK
);
LL_HRTIM_ForceUpdate
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
LL_HRTIM_TIM_SetCompare1
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
544
);
LL_HRTIM_TIM_SetCompareMode
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_COMPAREUNIT_2
,
LL_HRTIM_COMPAREMODE_REGULAR
);
LL_HRTIM_TIM_SetCompare2
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
100
);
LL_HRTIM_TIM_SetCompare3
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
1360
);
LL_HRTIM_TIM_SetCompare4
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
10880
);
LL_HRTIM_TIM_SetCompareMode
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_COMPAREUNIT_4
,
LL_HRTIM_COMPAREMODE_REGULAR
);
LL_HRTIM_TIM_SetEventFilter
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_EVENT_5
,
LL_HRTIM_EEFLTR_BLANKINGCMP3
);
LL_HRTIM_TIM_SetEventLatchStatus
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_EVENT_5
,
LL_HRTIM_EELATCH_DISABLED
);
LL_HRTIM_DT_SetPrescaler
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_DT_PRESCALER_DIV1
);
LL_HRTIM_DT_SetRisingValue
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
16
);
LL_HRTIM_DT_SetRisingSign
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_DT_RISING_POSITIVE
);
LL_HRTIM_DT_SetFallingValue
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
16
);
LL_HRTIM_DT_SetFallingSign
(
HRTIM1
,
LL_HRTIM_TIMER_B
,
LL_HRTIM_DT_FALLING_POSITIVE
);
LL_HRTIM_OUT_SetPolarity
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB1
,
LL_HRTIM_OUT_POSITIVE_POLARITY
);
LL_HRTIM_OUT_SetOutputSetSrc
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB1
,
LL_HRTIM_OUTPUTSET_TIMCMP1
);
LL_HRTIM_OUT_SetOutputResetSrc
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB1
,
LL_HRTIM_OUTPUTRESET_TIMCMP4
|
LL_HRTIM_OUTPUTRESET_EEV_4
);
LL_HRTIM_OUT_SetIdleMode
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB1
,
LL_HRTIM_OUT_NO_IDLE
);
LL_HRTIM_OUT_SetIdleLevel
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB1
,
LL_HRTIM_OUT_IDLELEVEL_INACTIVE
);
LL_HRTIM_OUT_SetFaultState
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB1
,
LL_HRTIM_OUT_FAULTSTATE_NO_ACTION
);
LL_HRTIM_OUT_SetChopperMode
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB1
,
LL_HRTIM_OUT_CHOPPERMODE_DISABLED
);
LL_HRTIM_OUT_SetPolarity
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB2
,
LL_HRTIM_OUT_POSITIVE_POLARITY
);
LL_HRTIM_OUT_SetOutputSetSrc
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB2
,
LL_HRTIM_OUTPUTSET_NONE
);
LL_HRTIM_OUT_SetOutputResetSrc
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB2
,
LL_HRTIM_OUTPUTRESET_NONE
);
LL_HRTIM_OUT_SetIdleMode
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB2
,
LL_HRTIM_OUT_NO_IDLE
);
LL_HRTIM_OUT_SetIdleLevel
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB2
,
LL_HRTIM_OUT_IDLELEVEL_INACTIVE
);
LL_HRTIM_OUT_SetFaultState
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB2
,
LL_HRTIM_OUT_FAULTSTATE_NO_ACTION
);
LL_HRTIM_OUT_SetChopperMode
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB2
,
LL_HRTIM_OUT_CHOPPERMODE_DISABLED
);
}
void
hrtim_cm_init_gpio
()
{
/*
HRTIM1 GPIO Configuration
PA8 ------> HRTIM1_CHA1
PA9 ------> HRTIM1_CHA2
PA10 ------> HRTIM1_CHB1
PA11 ------> HRTIM1_CHB2
*/
LL_AHB2_GRP1_EnableClock
(
LL_AHB2_GRP1_PERIPH_GPIOA
);
LL_GPIO_SetPinMode
(
GPIOA
,
LL_GPIO_PIN_8
,
LL_GPIO_MODE_ALTERNATE
);
LL_GPIO_SetPinSpeed
(
GPIOA
,
LL_GPIO_PIN_8
,
LL_GPIO_SPEED_FREQ_VERY_HIGH
);
LL_GPIO_SetPinOutputType
(
GPIOA
,
LL_GPIO_PIN_8
,
LL_GPIO_OUTPUT_PUSHPULL
);
LL_GPIO_SetPinPull
(
GPIOA
,
LL_GPIO_PIN_8
,
LL_GPIO_PULL_NO
);
LL_GPIO_SetAFPin_8_15
(
GPIOA
,
LL_GPIO_PIN_8
,
LL_GPIO_AF_13
);
LL_GPIO_SetPinMode
(
GPIOA
,
LL_GPIO_PIN_9
,
LL_GPIO_MODE_ALTERNATE
);
LL_GPIO_SetPinSpeed
(
GPIOA
,
LL_GPIO_PIN_9
,
LL_GPIO_SPEED_FREQ_VERY_HIGH
);
LL_GPIO_SetPinOutputType
(
GPIOA
,
LL_GPIO_PIN_9
,
LL_GPIO_OUTPUT_PUSHPULL
);
LL_GPIO_SetPinPull
(
GPIOA
,
LL_GPIO_PIN_9
,
LL_GPIO_PULL_NO
);
LL_GPIO_SetAFPin_8_15
(
GPIOA
,
LL_GPIO_PIN_9
,
LL_GPIO_AF_13
);
LL_GPIO_SetPinMode
(
GPIOA
,
LL_GPIO_PIN_10
,
LL_GPIO_MODE_ALTERNATE
);
LL_GPIO_SetPinSpeed
(
GPIOA
,
LL_GPIO_PIN_10
,
LL_GPIO_SPEED_FREQ_VERY_HIGH
);
LL_GPIO_SetPinOutputType
(
GPIOA
,
LL_GPIO_PIN_10
,
LL_GPIO_OUTPUT_PUSHPULL
);
LL_GPIO_SetPinPull
(
GPIOA
,
LL_GPIO_PIN_10
,
LL_GPIO_PULL_NO
);
LL_GPIO_SetAFPin_8_15
(
GPIOA
,
LL_GPIO_PIN_10
,
LL_GPIO_AF_13
);
LL_GPIO_SetPinMode
(
GPIOA
,
LL_GPIO_PIN_11
,
LL_GPIO_MODE_ALTERNATE
);
LL_GPIO_SetPinSpeed
(
GPIOA
,
LL_GPIO_PIN_11
,
LL_GPIO_SPEED_FREQ_VERY_HIGH
);
LL_GPIO_SetPinOutputType
(
GPIOA
,
LL_GPIO_PIN_11
,
LL_GPIO_OUTPUT_PUSHPULL
);
LL_GPIO_SetPinPull
(
GPIOA
,
LL_GPIO_PIN_11
,
LL_GPIO_PULL_NO
);
LL_GPIO_SetAFPin_8_15
(
GPIOA
,
LL_GPIO_PIN_11
,
LL_GPIO_AF_13
);
}
void
hrtim_cm_enable
()
{
/* Start Master Timer counter*/
LL_HRTIM_TIM_CounterEnable
(
HRTIM1
,
LL_HRTIM_TIMER_MASTER
);
/* Start PWM output counter */
LL_HRTIM_TIM_CounterEnable
(
HRTIM1
,
LL_HRTIM_TIMER_A
);
/* Start PWM output signal TA1 */
LL_HRTIM_EnableOutput
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA1
);
/* Start PWM output signal TA2 */
LL_HRTIM_EnableOutput
(
HRTIM1
,
LL_HRTIM_OUTPUT_TA2
);
/* Start PWM output counter */
LL_HRTIM_TIM_CounterEnable
(
HRTIM1
,
LL_HRTIM_TIMER_B
);
/* Start PWM output signal TB1 */
LL_HRTIM_EnableOutput
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB1
);
/* Start PWM output signal TB2 */
LL_HRTIM_EnableOutput
(
HRTIM1
,
LL_HRTIM_OUTPUT_TB2
);
}
zephyr/modules/owntech_hrtim_driver/zephyr/src/current_mode/hrtim_current_mode.h
0 → 100644
View file @
6660ea4c
/*
* Copyright (c) 2020-2021 LAAS-CNRS
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: LGLPV2.1
*/
/**
* @author Clément Foucher <clement.foucher@laas.fr>
*/
#ifndef HRTIM_CURRENT_MODE_H_
#define HRTIM_CURRENT_MODE_H_
#ifdef __cplusplus
extern
"C"
{
#endif
void
hrtim_cm_init
();
void
hrtim_cm_init_gpio
();
void
hrtim_cm_enable
();
#ifdef __cplusplus
}
#endif
#endif // HRTIM_CURRENT_MODE_H_
zephyr/modules/owntech_hrtim_driver/zephyr/src/hrtim_common.c
View file @
6660ea4c
...
@@ -22,9 +22,17 @@
...
@@ -22,9 +22,17 @@
*/
*/
#include
"voltage_mode/hrtim_voltage_mode.h"
#include
"voltage_mode/hrtim_voltage_mode.h"
#include
"current_mode/hrtim_current_mode.h"
#include
"leg.h"
#include
"leg.h"
void
hrtim_init_current
()
{
hrtim_cm_init
();
hrtim_cm_init_gpio
();
hrtim_cm_enable
();
}
void
hrtim_init_voltage
()
void
hrtim_init_voltage
()
{
{
leg_init
(
true
);
leg_init
(
true
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment