ボード/SDK: FRDM-RW612、NXP-Zephyr v4.3.0
搭載のRGB LED(GPIO0=青、GPIO1=赤、GPIO12=緑)をpwm-ledとしてCTIMER0、それぞれチャネル0/1/2として、IO_MUX_CT0_MAT0_OUT_IO0、IO_MUX_CT0_MAT1_OUT_IO1、IO_MUX_CT0_MAT2_OUT_IO12を共用pinctrl-0グループで構成しました。3チャネルすべてでテストアプリをサイクルサイクルで実行しました。
赤色および緑色のLEDは正しくPWM制御されています(Saleaeロジックアナライザで確認済み - GPIO1およびGPIO12の波形は正常です)。青色LED(GPIO0/MAT0)は完全に消灯したままで、ロジックアナライザは平坦な線を示し、デューティサイクル(0~100%)のいずれにおいてもトグルは発生しません。GPIO0のデジタルGPIO(非PWM)トグルは問題なく動作します。
CTIMER0 MAT0チャネルのみがPWM出力に失敗します。同じタイマーインスタンス上のMAT1/MAT2は動作します。
必要なもの:
#include < zephyr/dt-bindings/pwm/pwm.h>
/ {
pwm_outputs {
compatible = "pwm-leds";
pwm_gpio0: pwm_gpio0 {
pwms = <&ctimer0_pwm 0 PWM_KHZ(1) PWM_POLARITY_NORMAL>;
};
pwm_gpio1: pwm_gpio1 {
pwms = <&ctimer0_pwm 1 PWM_KHZ(1) PWM_POLARITY_NORMAL>;
};
pwm_gpio12: pwm_gpio12 {
pwms = <&ctimer0_pwm 2 PWM_KHZ(1) PWM_POLARITY_NORMAL>;
};
};
エイリアス {
pwm-gpio0 = &pwm_gpio0;
pwm-gpio1 = &pwm_gpio1;
pwm-gpio12 = &pwm_gpio12;
};
};
ctimer0_pwm: &ctimer0 {
compatible = "nxp,ctimer-pwm";
ステータス = "okay"
clk-source = <5>;
クロック = <&clkctl1 MCUX_CTIMER0_CLK>;
#pwm-cells = <3>;
モード = <0>;
プリスケール = <0>;
pinctrl-0 = <&pinmux_ctimer0_pwm>;
pinctrl-names = "default";
};
&pinctrl {
pinmux_ctimer0_pwm: pinmux_ctimer0_pwm {
グループ0 {
pinmux = <
IO_MUX_CT0_MAT0_OUT_IO0
IO_MUX_CT0_MAT1_OUT_IO1
IO_MUX_CT0_MAT2_OUT_IO12
>;
スルーレート = "通常";
};
};
};