Skip to content

Commit d81be6c

Browse files
sebromeropillo79
authored andcommitted
unoq: enable PWM
1 parent 3c5e8e4 commit d81be6c

File tree

1 file changed

+148
-24
lines changed

1 file changed

+148
-24
lines changed

variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay

Lines changed: 148 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,89 @@
6565
};
6666
};
6767

68+
69+
/* Enable PWM timers */
70+
&timers1 {
71+
status = "okay";
72+
st,prescaler = <4>;
73+
74+
pwm1: pwm {
75+
status = "okay";
76+
/* tim1_etr_pa12 is not available for PWM */
77+
/* Currently only the pins marked with ~ on the pin headers are enabled */
78+
/* pinctrl-0 = <&tim1_ch4_pa11 &tim1_ch3n_pb15 &tim1_ch1n_pb13 &tim1_ch2n_pb14>; */
79+
pinctrl-0 = <&tim1_ch4_pa11 &tim1_ch3n_pb15>;
80+
pinctrl-names = "default";
81+
};
82+
};
83+
84+
/* Currently only the pins marked with ~ on the pin headers are enabled */
85+
/* PB10 and PB11 conflict with I2C configuation */
86+
/*
87+
&timers2 {
88+
status = "okay";
89+
st,prescaler = <4>;
90+
91+
pwm2: pwm {
92+
status = "okay";
93+
pinctrl-0 = <&tim2_ch2_pb3 &tim2_ch3_pb10 &tim2_ch4_pb11>;
94+
pinctrl-names = "default";
95+
};
96+
};
97+
*/
98+
99+
&timers3 {
100+
status = "okay";
101+
st,prescaler = <4>;
102+
103+
pwm3: pwm {
104+
status = "okay";
105+
/* Currently only the pins marked with ~ on the pin headers are enabled */
106+
/* pinctrl-0 = <&tim3_ch3_pb0 &tim3_ch4_pb1 &tim3_ch1_pb4>; */
107+
pinctrl-0 = <&tim3_ch3_pb0 &tim3_ch4_pb1>;
108+
pinctrl-names = "default";
109+
};
110+
};
111+
112+
&timers4 {
113+
status = "okay";
114+
st,prescaler = <4>;
115+
116+
pwm4: pwm {
117+
status = "okay";
118+
/* PB6 PB7 not usable for PWM until dynamic pin muxing works */
119+
/* Currently only the pins marked with ~ on the pin headers are enabled */
120+
/* pinctrl-0 = <&tim4_ch3_pb8 &tim4_ch4_pb9 &tim4_ch1_pb6 &tim4_ch2_pb7>; */
121+
pinctrl-0 = <&tim4_ch3_pb8 &tim4_ch4_pb9>;
122+
pinctrl-names = "default";
123+
};
124+
};
125+
126+
&timers5 {
127+
status = "okay";
128+
st,prescaler = <4>;
129+
130+
pwm5: pwm {
131+
status = "okay";
132+
pinctrl-0 = <&tim5_ch1_ph10 &tim5_ch2_ph11 &tim5_ch3_ph12>;
133+
pinctrl-names = "default";
134+
};
135+
};
136+
137+
/* Currently only the pins marked with ~ on the pin headers are enabled */
138+
/*
139+
&timers8 {
140+
status = "okay";
141+
st,prescaler = <4>;
142+
143+
pwm8: pwm {
144+
status = "okay";
145+
pinctrl-0 = <&tim8_ch4n_pb2>;
146+
pinctrl-names = "default";
147+
};
148+
};
149+
*/
150+
68151
&timers16 {
69152
status = "okay";
70153
st,prescaler = <4>;
@@ -88,27 +171,28 @@
88171

89172
/ {
90173
zephyr,user {
91-
digital-pin-gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>, /* JDIGITAL */
92-
<&gpiob 6 GPIO_ACTIVE_HIGH>,
93-
<&gpiob 3 GPIO_ACTIVE_HIGH>,
94-
<&gpiob 0 GPIO_ACTIVE_HIGH>,
95-
<&gpioa 12 GPIO_ACTIVE_HIGH>,
96-
<&gpioa 11 GPIO_ACTIVE_HIGH>,
97-
<&gpiob 1 GPIO_ACTIVE_HIGH>,
98-
<&gpiob 2 GPIO_ACTIVE_HIGH>,
99-
<&gpiob 4 GPIO_ACTIVE_HIGH>,
100-
<&gpiob 8 GPIO_ACTIVE_HIGH>,
101-
<&gpiob 9 GPIO_ACTIVE_HIGH>,
102-
<&gpiob 15 GPIO_ACTIVE_HIGH>,
103-
<&gpiob 14 GPIO_ACTIVE_HIGH>,
104-
<&gpiob 13 GPIO_ACTIVE_HIGH>,
105-
106-
<&gpioa 4 GPIO_ACTIVE_HIGH>, /* ADCs */
107-
<&gpioa 5 GPIO_ACTIVE_HIGH>,
108-
<&gpioa 6 GPIO_ACTIVE_HIGH>,
109-
<&gpioa 7 GPIO_ACTIVE_HIGH>,
110-
<&gpioc 1 GPIO_ACTIVE_HIGH>,
111-
<&gpioc 0 GPIO_ACTIVE_HIGH>,
174+
digital-pin-gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>, /* D0 - PB7 */
175+
<&gpiob 6 GPIO_ACTIVE_HIGH>, /* D1 - PB6 */
176+
<&gpiob 3 GPIO_ACTIVE_HIGH>, /* D2 - PB3 */
177+
<&gpiob 0 GPIO_ACTIVE_HIGH>, /* D3 - PB0 */
178+
<&gpioa 12 GPIO_ACTIVE_HIGH>, /* D4 - PA12 */
179+
<&gpioa 11 GPIO_ACTIVE_HIGH>, /* D5 - PA11 */
180+
<&gpiob 1 GPIO_ACTIVE_HIGH>, /* D6 - PB1 */
181+
<&gpiob 2 GPIO_ACTIVE_HIGH>, /* D7 - PB2 */
182+
<&gpiob 4 GPIO_ACTIVE_HIGH>, /* D8 - PB4 */
183+
<&gpiob 8 GPIO_ACTIVE_HIGH>, /* D9 - PB8 */
184+
<&gpiob 9 GPIO_ACTIVE_HIGH>, /* D10 - PB9 */
185+
<&gpiob 15 GPIO_ACTIVE_HIGH>, /* D11 - PB15 */
186+
<&gpiob 14 GPIO_ACTIVE_HIGH>, /* D12 - PB14 */
187+
<&gpiob 13 GPIO_ACTIVE_HIGH>, /* D13 - PB13 */
188+
189+
/* ADCs */
190+
<&gpioa 4 GPIO_ACTIVE_HIGH>, /* A0 - PA4 */
191+
<&gpioa 5 GPIO_ACTIVE_HIGH>, /* A1 - PA5 */
192+
<&gpioa 6 GPIO_ACTIVE_HIGH>, /* A2 - PA6 */
193+
<&gpioa 7 GPIO_ACTIVE_HIGH>, /* A3 - PA7 */
194+
<&gpioc 1 GPIO_ACTIVE_HIGH>, /* A4 - PC1 */
195+
<&gpioc 0 GPIO_ACTIVE_HIGH>, /* A5 - PC0 */
112196

113197
<&gpiob 11 GPIO_ACTIVE_HIGH>, /* D20 - PB11 */
114198
<&gpiob 10 GPIO_ACTIVE_HIGH>, /* D21 - PB10 */
@@ -172,7 +256,27 @@
172256
<&gpioh 14 GPIO_ACTIVE_HIGH>,
173257
<&gpioh 15 GPIO_ACTIVE_HIGH>;
174258

175-
pwm-pin-gpios = <>;
259+
/* PWM pin mapping - Digital pins with their timer channels */
260+
/* Currently only the pins marked with ~ on the pin headers are enabled */
261+
pwm-pin-gpios =
262+
/* <&gpiob 6 0>, */ /* D1/PB6 - TIM4_CH1 */
263+
/* <&gpiob 3 0>, */ /* D2/PB3 - TIM2_CH2 */
264+
/* <&gpiob 3 0>, */ /* D2/PB3 - TIM2_CH2 */
265+
<&gpiob 0 0>, /* D3/PB0 - TIM3_CH3 */
266+
<&gpioa 11 0>, /* D5/PA11 - TIM1_CH4 */
267+
<&gpiob 1 0>, /* D6/PB1 - TIM3_CH4 */
268+
/* <&gpiob 2 0>, */ /* D7/PB2 - TIM8_CH4N */
269+
/* <&gpiob 4 0>, */ /* D8/PB4 - TIM3_CH1 */
270+
<&gpiob 8 0>, /* D9/PB8 - TIM4_CH3 */
271+
<&gpiob 9 0>, /* D10/PB9 - TIM4_CH4 */
272+
<&gpiob 15 0>, /* D11/PB15 - TIM1_CH3N */
273+
/* <&gpiob 14 0>, */ /* D12/PB14 - TIM1_CH2N */
274+
/* <&gpiob 13 0>, */ /* D13/PB13 - TIM1_CH1N */
275+
/* <&gpiob 11 0>, */ /* D20/PB11 - TIM2_CH4 */
276+
/* <&gpiob 10 0>; */ /* D21/PB10 - TIM2_CH3 */
277+
<&gpioh 10 0>, /* LED3_R - TIM5_CH1 */
278+
<&gpioh 11 0>, /* LED3_G - TIM5_CH2 */
279+
<&gpioh 12 0>; /* LED3_B - TIM5_CH3 */
176280

177281
adc-pin-gpios = <&gpioa 4 0>,
178282
<&gpioa 5 0>,
@@ -183,8 +287,28 @@
183287

184288
serials = <&usart1>, <&lpuart1>;
185289
i2cs = <&i2c2>, <&i2c4>;
186-
spis = <&spi3>;
187-
pwms = <>;
290+
spis = <&spi2>, <&spi3>;
291+
/* PWM mapping for the digital pins */
292+
/* Currently only the pins marked with ~ on the pin headers are enabled */
293+
pwms =
294+
/* <&pwm4 2 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D0/PB7 → TIM4_CH2 */
295+
/* <&pwm4 1 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D1/PB6 → TIM4_CH1 */
296+
/* <&pwm2 2 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D2/PB3 → TIM2_CH2 */
297+
<&pwm3 3 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D3/PB0 → TIM3_CH3 */
298+
<&pwm1 4 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D5/PA11 → TIM1_CH4 */
299+
<&pwm3 4 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D6/PB1 → TIM3_CH4 */
300+
/* <&pwm8 4 PWM_HZ(500) PWM_POLARITY_INVERTED>, */ /* D7/PB2 → TIM8_CH4N */
301+
/* <&pwm3 1 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D8/PB4 → TIM3_CH1 */
302+
<&pwm4 3 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D9/PB8 → TIM4_CH3 */
303+
<&pwm4 4 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D10/PB9 → TIM4_CH4 */
304+
<&pwm1 3 PWM_HZ(500) PWM_POLARITY_INVERTED>, /* D11/PB15 → TIM1_CH3N */
305+
/* <&pwm1 2 PWM_HZ(500) PWM_POLARITY_INVERTED>, */ /* D12/PB14 → TIM1_CH2N */
306+
/* <&pwm1 1 PWM_HZ(500) PWM_POLARITY_INVERTED>, */ /* D13/PB13 → TIM1_CH1N */
307+
/* <&pwm2 4 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D20/PB11 → TIM2_CH4 */
308+
/* <&pwm2 3 PWM_HZ(500) PWM_POLARITY_NORMAL>; */ /* D21/PB10 → TIM2_CH3 */
309+
<&pwm5 1 PWM_HZ(500) PWM_POLARITY_INVERTED>, /* LED3_R/PH10 → TIM5_CH1 */
310+
<&pwm5 2 PWM_HZ(500) PWM_POLARITY_INVERTED>, /* LED3_G/PH11 → TIM5_CH2 */
311+
<&pwm5 3 PWM_HZ(500) PWM_POLARITY_INVERTED>; /* LED3_B/PH12 → TIM5_CH3 */
188312

189313
control-gpios = <&gpiog 13 GPIO_ACTIVE_HIGH>; /* Internal SPI RDY */
190314
analog-switch-gpios = <&gpioa 2 GPIO_ACTIVE_HIGH>; /* Analog switch for VREF */

0 commit comments

Comments
 (0)