1 /* 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 #define PWM_NSEC(x) (x) 25 /** Specify PWM period in microseconds */ 26 #define PWM_USEC(x) (PWM_NSEC(x) * 1000UL) 27 /** Specify PWM period in milliseconds */ 28 #define PWM_MSEC(x) (PWM_USEC(x) * 1000UL) 29 /** Specify PWM period in seconds */ 30 #define PWM_SEC(x) (PWM_MSEC(x) * 1000UL) 31 /** Specify PWM frequency in hertz */ 32 #define PWM_HZ(x) (PWM_SEC(1UL) / (x)) 33 /** Specify PWM frequency in kilohertz */ 34 #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 #define PWM_POLARITY_NORMAL (0 << 0) 48 49 /** PWM pin inverted polarity (active-low pulse). */ 50 #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_ */ 60