SimpleFOClibrary 2.4.0
Loading...
Searching...
No Matches
efr32_pwm.h
Go to the documentation of this file.
1#ifndef EFR32_DRIVER_PWM_MCU_H
2#define EFR32_DRIVER_PWM_MCU_H
3
4#if defined(ARDUINO_ARCH_SILABS)
5
6#include <em_timer.h>
7
8#ifndef SILABBS_DEFAULT_DEAD_TIME
9#define SILABBS_DEFAULT_DEAD_TIME 3
10#endif
11
12typedef void (*prevTimerInitCCFn)(TIMER_InitCC_TypeDef*, void *params);
13typedef void (*prevTimerInitFn)(TIMER_Init_TypeDef*, void *params);
14
15typedef enum {
16 PWM_P_ACTIVE_HIGH = 0,
17 PWM_P_ACTIVE_LOW = 1
18} EFR32PwmPolarity;
19
20typedef struct {
21 int frequency; /**< PWM frequency */
22 bool outInvert; /**< Invert output */
23 EFR32PwmPolarity polarity; /**< PWM polarity */
24} EFR32PwmConfig;
25
26typedef struct {
27 uint32_t deadTimeNs;
28 uint32_t outputMask;
29} EFR32PwmDeadTimeConfig;
30
31typedef struct {
32 TIMER_TypeDef *timer; /**< TIMER instance */
33 uint8_t channel; /**< TIMER channel */
34 uint8_t port; /**< GPIO port */
35 uint8_t pin; /**< GPIO pin */
36} EFR32PwmHiInstance;
37
38typedef struct {
39 uint8_t port;
40 uint8_t pin;
41} EFR32PwmLoInstance;
42
43typedef struct {
44 EFR32PwmHiInstance h;
45 EFR32PwmLoInstance l;
46} EFR32PwmInstance;
47
48// High Side
49void pwmHiConfig(
50 EFR32PwmInstance *inst,
51 TIMER_TypeDef *timer,
52 const int pin,
53 const uint8_t channel);
54
55void pwmHiInit(
56 EFR32PwmInstance *inst,
57 EFR32PwmConfig *config,
58 prevTimerInitCCFn fn,
59 void *params);
60
61void pwmHiDeinit(
62 EFR32PwmInstance *inst);
63
64void pwmHiOn(
65 EFR32PwmInstance *inst);
66
67void pwmHiOff(
68 EFR32PwmInstance *inst);
69
70void pwmHiSetDutyCycle(
71 EFR32PwmInstance *inst,
72 float percent);
73
74float pwmHiGetDutyCycle(
75 EFR32PwmInstance *inst);
76
77// Low Side
78void pwmLoConfig(
79 EFR32PwmInstance *inst,
80 const int pin);
81
82void pwmLoInit(
83 EFR32PwmInstance *inst);
84
85void pwmLoDeinit(
86 EFR32PwmInstance *inst);
87
88void pwmLoOn(
89 EFR32PwmInstance *inst);
90
91void pwmLoOff(
92 EFR32PwmInstance *inst);
93
94// Pwm
95void pwmInit(
96 EFR32PwmInstance *inst,
97 EFR32PwmConfig *cfg,
98 prevTimerInitCCFn fn,
99 void *params);
100
101void pwmDeinit(
102 EFR32PwmInstance *inst);
103
104void pwmOn(
105 EFR32PwmInstance *inst);
106
107void pwmOff(
108 EFR32PwmInstance *inst);
109
110void pwmStart(
111 EFR32PwmInstance *inst,
112 prevTimerInitFn fn,
113 void *params);
114
115void pwmDeadTimeInit(
116 EFR32PwmInstance *inst,
117 EFR32PwmDeadTimeConfig *config);
118
119#endif
120
121#endif
GenericCurrentSenseParams * params