From a8e9a985d50829cdffb6c20177eea0f206311f62 Mon Sep 17 00:00:00 2001 From: Ichiro Kuroki Date: Sat, 10 Apr 2021 13:38:44 +0300 Subject: [PATCH] boards/arduino-nano-33-iot: add PWM configuration --- boards/arduino-nano-33-iot/Kconfig | 1 + boards/arduino-nano-33-iot/Makefile.features | 1 + .../arduino-nano-33-iot/include/periph_conf.h | 40 +++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/boards/arduino-nano-33-iot/Kconfig b/boards/arduino-nano-33-iot/Kconfig index a48a492cc9..b740f92b24 100644 --- a/boards/arduino-nano-33-iot/Kconfig +++ b/boards/arduino-nano-33-iot/Kconfig @@ -12,6 +12,7 @@ config BOARD_ARDUINO_NANO_33_IOT default y select CPU_MODEL_SAMD21G18A select HAS_PERIPH_I2C + select HAS_PERIPH_PWM select HAS_PERIPH_RTC select HAS_PERIPH_RTT select HAS_PERIPH_SPI diff --git a/boards/arduino-nano-33-iot/Makefile.features b/boards/arduino-nano-33-iot/Makefile.features index 6aae77d530..1912e23964 100644 --- a/boards/arduino-nano-33-iot/Makefile.features +++ b/boards/arduino-nano-33-iot/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = samd21g18a # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_i2c +FEATURES_PROVIDED += periph_pwm FEATURES_PROVIDED += periph_rtc FEATURES_PROVIDED += periph_rtt FEATURES_PROVIDED += periph_spi diff --git a/boards/arduino-nano-33-iot/include/periph_conf.h b/boards/arduino-nano-33-iot/include/periph_conf.h index e05d2df77a..a09184d08a 100644 --- a/boards/arduino-nano-33-iot/include/periph_conf.h +++ b/boards/arduino-nano-33-iot/include/periph_conf.h @@ -139,6 +139,46 @@ static const uart_conf_t uart_config[] = { #define UART_NUMOF ARRAY_SIZE(uart_config) /** @} */ + +/** + * @name PWM configuration + * @{ + */ +#define PWM_0_EN 1 +#define PWM_1_EN 1 + +#if PWM_0_EN +/* PWM0 channels */ +static const pwm_conf_chan_t pwm_chan0_config[] = { + /* GPIO pin, MUX value, TCC channel */ + { GPIO_PIN(PA, 4), GPIO_MUX_E, 0}, + { GPIO_PIN(PA, 5), GPIO_MUX_E, 1}, +}; +#endif +#if PWM_1_EN +/* PWM1 channels */ +static const pwm_conf_chan_t pwm_chan1_config[] = { + /* GPIO pin, MUX value, TCC channel */ + { GPIO_PIN(PA, 10), GPIO_MUX_E, 0 }, + { GPIO_PIN(PA, 11), GPIO_MUX_E, 1 }, +}; +#endif + +/* PWM device configuration */ +static const pwm_conf_t pwm_config[] = { +#if PWM_0_EN + {TCC_CONFIG(TCC0), pwm_chan0_config, ARRAY_SIZE(pwm_chan0_config), SAM0_GCLK_MAIN}, +#endif + +#if PWM_1_EN + {TCC_CONFIG(TCC1), pwm_chan1_config, ARRAY_SIZE(pwm_chan1_config), SAM0_GCLK_MAIN}, +#endif +}; + +/* number of devices that are actually defined */ +#define PWM_NUMOF ARRAY_SIZE(pwm_config) +/** @} */ + /** * @name I2C configuration * @{