no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
no_os_pwm.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef _NO_OS_PWM_H_
34#define _NO_OS_PWM_H_
35
36#include <stdint.h>
37#include <stdbool.h>
38
39#define PWM_MAX_NUMBER 4
40
51
58 uint32_t id;
60 uint32_t period_ns;
62 uint32_t duty_cycle_ns;
64 uint32_t phase_ns;
69 /* IRQ ID */
70 uint32_t irq_id;
72 void (*pwm_callback)(void *arg);
76 void *extra;
77};
78
85 void *mutex;
87 uint32_t id;
89 uint32_t period_ns;
91 uint32_t duty_cycle_ns;
93 uint32_t phase_ns;
97 bool enabled;
100 /* IRQ ID */
101 uint32_t irq_id;
103 void (*pwm_callback)(void* arg);
107 void *extra;
108};
109
117 int32_t (*pwm_ops_init)(struct no_os_pwm_desc **,
118 const struct no_os_pwm_init_param *);
120 int32_t (*pwm_ops_enable)(struct no_os_pwm_desc *);
122 int32_t (*pwm_ops_disable)(struct no_os_pwm_desc *);
124 int32_t (*pwm_ops_set_period)(struct no_os_pwm_desc *, uint32_t);
126 int32_t (*pwm_ops_get_period)(struct no_os_pwm_desc *, uint32_t *);
128 int32_t (*pwm_ops_set_duty_cycle)(struct no_os_pwm_desc *, uint32_t);
130 int32_t (*pwm_ops_get_duty_cycle)(struct no_os_pwm_desc *, uint32_t *);
132 int32_t (*pwm_ops_set_phase)(struct no_os_pwm_desc *, uint32_t);
134 int32_t (*pwm_ops_get_phase)(struct no_os_pwm_desc *, uint32_t *);
137 enum no_os_pwm_polarity);
140 enum no_os_pwm_polarity *);
142 int32_t(*pwm_ops_remove)(struct no_os_pwm_desc *);
143};
144
145/* Initialize the PWM generator device */
146int32_t no_os_pwm_init(struct no_os_pwm_desc **desc,
147 const struct no_os_pwm_init_param *param);
148
149/* Free the resources used by the PWM generator device */
150int32_t no_os_pwm_remove(struct no_os_pwm_desc *desc);
151
152/* Enable PWM generator device */
153int32_t no_os_pwm_enable(struct no_os_pwm_desc *desc);
154
155/* Disable PWM generator device */
156int32_t no_os_pwm_disable(struct no_os_pwm_desc *desc);
157
158/* Set period of PWM generator device */
159int32_t no_os_pwm_set_period(struct no_os_pwm_desc *desc,
160 uint32_t period_ns);
161
162/* Get period of PWM generator device */
163int32_t no_os_pwm_get_period(struct no_os_pwm_desc *desc,
164 uint32_t *period_ns);
165
166/* Set duty cycle of PWM generator device */
167int32_t no_os_pwm_set_duty_cycle(struct no_os_pwm_desc *desc,
168 uint32_t duty_cycle_ns);
169
170/* Get period of PWM generator device */
171int32_t no_os_pwm_get_duty_cycle(struct no_os_pwm_desc *desc,
172 uint32_t *duty_cycle_ns);
173
174/* Set the phase of PWM generator channel */
175int32_t no_os_pwm_set_phase(struct no_os_pwm_desc *desc,
176 uint32_t phase_ns);
177
178/* Get the phase of PWM generator channel */
179int32_t no_os_pwm_get_phase(struct no_os_pwm_desc *desc,
180 uint32_t *phase_ns);
181
182/* Set polarity of PWM generator device */
183int32_t no_os_pwm_set_polarity(struct no_os_pwm_desc *desc,
185
186/* Set polarity of PWM generator device */
187int32_t no_os_pwm_get_polarity(struct no_os_pwm_desc *desc,
189
190#endif // _NO_OS_PWM_H_
int32_t no_os_pwm_enable(struct no_os_pwm_desc *desc)
Enable PWM signal generation.
Definition no_os_pwm.c:98
int32_t no_os_pwm_get_duty_cycle(struct no_os_pwm_desc *desc, uint32_t *duty_cycle_ns)
Get the PWM duty cycle.
Definition no_os_pwm.c:187
int32_t no_os_pwm_get_phase(struct no_os_pwm_desc *desc, uint32_t *phase_ns)
Get the PWM phase value.
Definition no_os_pwm.c:223
int32_t no_os_pwm_set_period(struct no_os_pwm_desc *desc, uint32_t period_ns)
Set the PWM period value.
Definition no_os_pwm.c:133
int32_t no_os_pwm_remove(struct no_os_pwm_desc *desc)
Free the resources allocated by no_os_pwm_init().
Definition no_os_pwm.c:79
int32_t no_os_pwm_init(struct no_os_pwm_desc **desc, const struct no_os_pwm_init_param *param)
Initialize the PWM peripheral.
Definition no_os_pwm.c:51
int32_t no_os_pwm_set_duty_cycle(struct no_os_pwm_desc *desc, uint32_t duty_cycle_ns)
Set the PWM duty cycle.
Definition no_os_pwm.c:169
no_os_pwm_polarity
Possible polarities of the PWM signal.
Definition no_os_pwm.h:45
@ NO_OS_PWM_POLARITY_LOW
Definition no_os_pwm.h:49
@ NO_OS_PWM_POLARITY_HIGH
Definition no_os_pwm.h:47
int32_t no_os_pwm_set_polarity(struct no_os_pwm_desc *desc, enum no_os_pwm_polarity polarity)
Set the PWM polarity.
Definition no_os_pwm.c:243
int32_t no_os_pwm_set_phase(struct no_os_pwm_desc *desc, uint32_t phase_ns)
Set the PWM phase value.
Definition no_os_pwm.c:205
int32_t no_os_pwm_get_period(struct no_os_pwm_desc *desc, uint32_t *period_ns)
Get the PWM period value.
Definition no_os_pwm.c:151
int32_t no_os_pwm_disable(struct no_os_pwm_desc *desc)
Disable PWM signal generation.
Definition no_os_pwm.c:115
int32_t no_os_pwm_get_polarity(struct no_os_pwm_desc *desc, enum no_os_pwm_polarity *polarity)
Get the PWM polarity.
Definition no_os_pwm.c:263
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure representing an PWM generator device.
Definition no_os_pwm.h:83
uint32_t irq_id
Definition no_os_pwm.h:101
enum no_os_pwm_polarity polarity
Definition no_os_pwm.h:95
bool enabled
Definition no_os_pwm.h:97
void * mutex
Definition no_os_pwm.h:85
uint32_t id
Definition no_os_pwm.h:87
uint32_t duty_cycle_ns
Definition no_os_pwm.h:91
uint32_t period_ns
Definition no_os_pwm.h:89
struct no_os_gpio_desc * pwm_gpio
Definition no_os_pwm.h:99
uint32_t phase_ns
Definition no_os_pwm.h:93
void(* pwm_callback)(void *arg)
Definition no_os_pwm.h:103
void * extra
Definition no_os_pwm.h:107
const struct no_os_pwm_platform_ops * platform_ops
Definition no_os_pwm.h:105
Structure containing the init parameters needed by the PWM generator.
Definition no_os_pwm.h:56
uint32_t period_ns
Definition no_os_pwm.h:60
void(* pwm_callback)(void *arg)
Definition no_os_pwm.h:72
uint32_t id
Definition no_os_pwm.h:58
uint32_t irq_id
Definition no_os_pwm.h:70
enum no_os_pwm_polarity polarity
Definition no_os_pwm.h:66
void * extra
Definition no_os_pwm.h:76
struct no_os_gpio_init_param * pwm_gpio
Definition no_os_pwm.h:68
const struct no_os_pwm_platform_ops * platform_ops
Definition no_os_pwm.h:74
uint32_t duty_cycle_ns
Definition no_os_pwm.h:62
uint32_t phase_ns
Definition no_os_pwm.h:64
Structure holding PWM function pointers that point to the platform specific function.
Definition no_os_pwm.h:115
int32_t(* pwm_ops_get_polarity)(struct no_os_pwm_desc *, enum no_os_pwm_polarity *)
Definition no_os_pwm.h:139
int32_t(* pwm_ops_init)(struct no_os_pwm_desc **, const struct no_os_pwm_init_param *)
Definition no_os_pwm.h:117
int32_t(* pwm_ops_set_polarity)(struct no_os_pwm_desc *, enum no_os_pwm_polarity)
Definition no_os_pwm.h:136
int32_t(* pwm_ops_set_phase)(struct no_os_pwm_desc *, uint32_t)
Definition no_os_pwm.h:132
int32_t(* pwm_ops_disable)(struct no_os_pwm_desc *)
Definition no_os_pwm.h:122
int32_t(* pwm_ops_set_period)(struct no_os_pwm_desc *, uint32_t)
Definition no_os_pwm.h:124
int32_t(* pwm_ops_remove)(struct no_os_pwm_desc *)
Definition no_os_pwm.h:142
int32_t(* pwm_ops_get_period)(struct no_os_pwm_desc *, uint32_t *)
Definition no_os_pwm.h:126
int32_t(* pwm_ops_set_duty_cycle)(struct no_os_pwm_desc *, uint32_t)
Definition no_os_pwm.h:128
int32_t(* pwm_ops_get_phase)(struct no_os_pwm_desc *, uint32_t *)
Definition no_os_pwm.h:134
int32_t(* pwm_ops_enable)(struct no_os_pwm_desc *)
Definition no_os_pwm.h:120
int32_t(* pwm_ops_get_duty_cycle)(struct no_os_pwm_desc *, uint32_t *)
Definition no_os_pwm.h:130