Line data Source code
1 0 : /*
2 : * Copyright (c) 2019 Vestas Wind Systems A/S
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_
7 : #define ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_
8 :
9 : /**
10 : * @brief PWM Interface
11 : * @defgroup pwm_interface PWM Interface
12 : * @ingroup io_interfaces
13 : * @{
14 : */
15 :
16 : /**
17 : * @name PWM period set helpers
18 : * The period cell in the PWM specifier needs to be provided in nanoseconds.
19 : * However, in some applications it is more convenient to use another scale.
20 : * @{
21 : */
22 :
23 : /** Specify PWM period in nanoseconds */
24 1 : #define PWM_NSEC(x) (x)
25 : /** Specify PWM period in microseconds */
26 1 : #define PWM_USEC(x) (PWM_NSEC(x) * 1000UL)
27 : /** Specify PWM period in milliseconds */
28 1 : #define PWM_MSEC(x) (PWM_USEC(x) * 1000UL)
29 : /** Specify PWM period in seconds */
30 1 : #define PWM_SEC(x) (PWM_MSEC(x) * 1000UL)
31 : /** Specify PWM frequency in hertz */
32 1 : #define PWM_HZ(x) (PWM_SEC(1UL) / (x))
33 : /** Specify PWM frequency in kilohertz */
34 1 : #define PWM_KHZ(x) (PWM_HZ((x) * 1000UL))
35 :
36 : /** @} */
37 :
38 : /**
39 : * @name PWM polarity flags
40 : * The `PWM_POLARITY_*` flags are used with pwm_set_cycles(), pwm_set()
41 : * or pwm_configure_capture() to specify the polarity of a PWM channel.
42 : *
43 : * The flags are on the lower 8bits of the pwm_flags_t
44 : * @{
45 : */
46 : /** PWM pin normal polarity (active-high pulse). */
47 1 : #define PWM_POLARITY_NORMAL (0 << 0)
48 :
49 : /** PWM pin inverted polarity (active-low pulse). */
50 1 : #define PWM_POLARITY_INVERTED (1 << 0)
51 :
52 : /** @cond INTERNAL_HIDDEN */
53 : #define PWM_POLARITY_MASK 0x1
54 : /** @endcond */
55 : /** @} */
56 :
57 : /** @} */
58 :
59 : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PWM_PWM_H_ */
|