Hi,
ncs v3.2.0,nRF54LM20-DK,I drive a buzzer. When the buzzer doesn't ring, I need a low level. I tried it according to the following method. I can't output a low level when pwm is idle.
①Change PWM_POLARITY_NORMAL to PWM_POLARITY_INVERTED,Pwm can't output low when it is idle.
②nrf_pwm_channel_idle_set(NRF_PWM21, 0, false);Pwm can't output low when it is idle.
③void buzzer_off(void) function i had try
/* Code */
void buzzer_on(void)
{
if (!device_is_ready(buzzer_pwm.dev)) {
LOG_ERR("PWM device not ready");
return;
}
int ret = pwm_set_dt(&buzzer_pwm, PWM_PERIOD_2_7KHZ_NS, PWM_PERIOD_2_7KHZ_NS / 2);
if (ret < 0) {
LOG_ERR("Failed to turn on buzzer: %d", ret);
} else {
LOG_INF("Buzzer ON (2.7KHz)");
}
}
void buzzer_off(void)
{
int ret = pwm_set_pulse_dt(&buzzer_pwm, 0);
if (ret < 0) {
LOG_ERR("Failed to turn off buzzer: %d", ret);
} else {
LOG_INF("Buzzer OFF");
}
}
/* overlay */
