Merged in raiden00/nuttx (pull request #579)

Master

* stm32_hritm: add interface to get timer clock frequency

    stm32_hrtim: fix timer freq calculation

    stm32_hrtim: add compar/capture registers significant bits checking

    stm32_hrtim: minor changes

* stm32f334-disco: add buck converter and boost converter logic

Approved-by: Gregory Nutt <gnutt@nuttx.org>
This commit is contained in:
Mateusz Szafoni
2018-01-21 18:28:09 +00:00
committed by Gregory Nutt
parent 0c034c8dd3
commit 5af7e3de2a
4 changed files with 790 additions and 190 deletions
File diff suppressed because it is too large Load Diff
+26 -12
View File
@@ -187,7 +187,7 @@
# error "APB2 prescaler factor can not be greater than 2"
# else
# define HRTIM_HAVE_CLK_FROM_PLL 1
# define HRTIM_CLOCK 2*STM32_PLL_FREQUENCY
# define HRTIM_MAIN_CLOCK 2*STM32_PLL_FREQUENCY
# endif
# else
# error "Clock system must be set to PLL"
@@ -195,19 +195,27 @@
#else
# error "Not supported yet: system freezes when no PLL selected."
# define HRTIM_HAVE_CLK_FROM_APB2 1
# if STM32_RCC_CFGR_PPRE2 == RCC_CFGR_PPRE2_HCLK
# define HRTIM_CLOCK STM32_PCLK2_FREQUENCY
# if STM32_RCC_CFGR_PPRE2 == RCC_CFGR_PPRE2_HCLK
# define HRTIM_MAIN_CLOCK STM32_PCLK2_FREQUENCY
# else
# define HRTIM_CLOCK 2*STM32_PCLK2_FREQUENCY
# define HRTIM_MAIN_CLOCK 2*STM32_PCLK2_FREQUENCY
# endif
#endif
/* High-resolution equivalent clock */
#define HRTIM_CLOCK (HRTIM_MAIN_CLOCK*32ull)
/* Helpers **************************************************************************/
#define HRTIM_CMP_SET(hrtim, tim, index, cmp) \
(hrtim)->hd_ops->cmp_update(hrtim, tim, index, cmp)
#define HRTIM_PER_SET(hrtim, tim, per) \
(hrtim)->hd_ops->per_update(hrtim, tim, per)
#define HRTIM_PER_GET(hrtim, tim) \
(hrtim)->hd_ops->per_get(hrtim, tim)
#define HRTIM_FCLK_GET(hrtim, tim) \
(hrtim)->hd_ops->fclk_get(hrtim, tim)
#define HRTIM_OUTPUTS_ENABLE(hrtim, outputs, state) \
(hrtim)->hd_ops->outputs_enable(hrtim, outputs, state)
#define HRTIM_OUTPUT_SET_SET(hrtim, output, set) \
@@ -225,6 +233,11 @@
#define HRTIM_DEADTIME_UPDATE(hrtim, tim, dt, val) \
(hrtim)->hd_ops->deadtime_update(hrtim, tim, dt, val)
#define HRTIM_PER_MAX 0xFFFF
#define HRTIM_CMP_MAX 0xFFFF
#define HRTIM_CPT_MAX 0xFFFF
#define HRTIM_REP_MAX 0xFF
/************************************************************************************
* Public Types
************************************************************************************/
@@ -384,14 +397,14 @@ enum stm32_hrtim_tim_rst_e
enum stm32_hrtim_tim_prescaler_e
{
HRTIM_PRESCALER_1,
HRTIM_PRESCALER_2,
HRTIM_PRESCALER_4,
HRTIM_PRESCALER_8,
HRTIM_PRESCALER_16,
HRTIM_PRESCALER_32,
HRTIM_PRESCALER_64,
HRTIM_PRESCALER_128
HRTIM_PRESCALER_1, /* CKPSC = 0 */
HRTIM_PRESCALER_2, /* CKPSC = 1 */
HRTIM_PRESCALER_4, /* CKPSC = 2 */
HRTIM_PRESCALER_8, /* CKPSC = 3 */
HRTIM_PRESCALER_16, /* CKPSC = 4 */
HRTIM_PRESCALER_32, /* CKPSC = 5 */
HRTIM_PRESCALER_64, /* CKPSC = 6 */
HRTIM_PRESCALER_128 /* CKPSC = 7 */
};
/* HRTIM Timer Master/Slave mode */
@@ -971,6 +984,7 @@ struct stm32_hrtim_ops_s
uint16_t (*per_get)(FAR struct hrtim_dev_s *dev, uint8_t timer);
uint16_t (*cmp_get)(FAR struct hrtim_dev_s *dev, uint8_t timer,
uint8_t index);
uint64_t (*fclk_get)(FAR struct hrtim_dev_s *dev, uint8_t timer);
#ifdef CONFIG_STM32_HRTIM_INTERRUPTS
void (*irq_ack)(FAR struct hrtim_dev_s *dev, uint8_t timer, int source);
#endif
+32 -2
View File
@@ -277,12 +277,42 @@
/* HRTIM configuration ******************************************************/
#define HRTIM_TIMA_PRESCALER HRTIM_PRESCALER_32
/* Timer A configuration - Buck operations */
#define HRTIM_TIMA_PRESCALER HRTIM_PRESCALER_1
#define HRTIM_TIMA_MODE HRTIM_MODE_CONT
#define HRTIM_TIMB_PRESCALER HRTIM_PRESCALER_32
#define HRTIM_TIMA_CH1_SET HRTIM_OUT_SET_NONE
#define HRTIM_TIMA_CH1_RST HRTIM_OUT_RST_NONE
#define HRTIM_TIMA_CH2_SET HRTIM_OUT_SET_NONE
#define HRTIM_TIMA_CH2_RST HRTIM_OUT_RST_NONE
#define HRTIM_TIMA_DT_FSLOCK HRTIM_DT_LOCK
#define HRTIM_TIMA_DT_RSLOCK HRTIM_DT_LOCK
#define HRTIM_TIMA_DT_FVLOCK HRTIM_DT_RW
#define HRTIM_TIMA_DT_RVLOCK HRTIM_DT_RW
#define HRTIM_TIMA_DT_FSIGN HRTIM_DT_SIGN_POSITIVE
#define HRTIM_TIMA_DT_RSIGN HRTIM_DT_SIGN_POSITIVE
#define HRTIM_TIMA_DT_PRESCALER HRTIM_DEADTIME_PRESCALER_1
/* Timer B configuration - Boost operations */
#define HRTIM_TIMB_PRESCALER HRTIM_PRESCALER_1
#define HRTIM_TIMB_MODE HRTIM_MODE_CONT
#define HRTIM_TIMB_CH1_SET HRTIM_OUT_SET_NONE
#define HRTIM_TIMB_CH1_RST HRTIM_OUT_RST_NONE
#define HRTIM_TIMB_CH2_SET HRTIM_OUT_SET_NONE
#define HRTIM_TIMB_CH2_RST HRTIM_OUT_RST_NONE
#define HRTIM_TIMB_DT_FSLOCK HRTIM_DT_LOCK
#define HRTIM_TIMB_DT_RSLOCK HRTIM_DT_LOCK
#define HRTIM_TIMB_DT_FVLOCK HRTIM_DT_RW
#define HRTIM_TIMB_DT_RVLOCK HRTIM_DT_RW
#define HRTIM_TIMB_DT_FSIGN HRTIM_DT_SIGN_POSITIVE
#define HRTIM_TIMB_DT_RSIGN HRTIM_DT_SIGN_POSITIVE
#define HRTIM_TIMB_DT_PRESCALER HRTIM_DEADTIME_PRESCALER_1
#define HRTIM_ADC_TRG2 HRTIM_ADCTRG24_AC4
/* DMA channels *************************************************************/
File diff suppressed because it is too large Load Diff