mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-04 05:04:33 +02:00
Merge branch 'feature/LEDC_support_invert_channel_output' into 'master'
LEDC: Support invert channel output Closes IDF-2869 See merge request espressif/esp-idf!13310
This commit is contained in:
@@ -76,6 +76,7 @@ esp_err_t ledc_update_duty(ledc_mode_t speed_mode, ledc_channel_t channel);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set LEDC output gpio.
|
* @brief Set LEDC output gpio.
|
||||||
|
* @deprecated This function is redundant, please use ledc_channel_config to set gpio pins.
|
||||||
*
|
*
|
||||||
* @param gpio_num The LEDC output gpio
|
* @param gpio_num The LEDC output gpio
|
||||||
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
||||||
@@ -85,8 +86,8 @@ esp_err_t ledc_update_duty(ledc_mode_t speed_mode, ledc_channel_t channel);
|
|||||||
* - ESP_OK Success
|
* - ESP_OK Success
|
||||||
* - ESP_ERR_INVALID_ARG Parameter error
|
* - ESP_ERR_INVALID_ARG Parameter error
|
||||||
*/
|
*/
|
||||||
esp_err_t ledc_set_pin(int gpio_num, ledc_mode_t speed_mode, ledc_channel_t ledc_channel);
|
esp_err_t ledc_set_pin(int gpio_num, ledc_mode_t speed_mode, ledc_channel_t ledc_channel)
|
||||||
|
__attribute__((deprecated("use ledc_channel_config instead")));
|
||||||
/**
|
/**
|
||||||
* @brief LEDC stop.
|
* @brief LEDC stop.
|
||||||
* Disable LEDC output, and set idle level
|
* Disable LEDC output, and set idle level
|
||||||
|
@@ -372,6 +372,7 @@ esp_err_t ledc_channel_config(const ledc_channel_config_t* ledc_conf)
|
|||||||
uint32_t intr_type = ledc_conf->intr_type;
|
uint32_t intr_type = ledc_conf->intr_type;
|
||||||
uint32_t duty = ledc_conf->duty;
|
uint32_t duty = ledc_conf->duty;
|
||||||
uint32_t hpoint = ledc_conf->hpoint;
|
uint32_t hpoint = ledc_conf->hpoint;
|
||||||
|
bool output_invert = ledc_conf->flags.output_invert;
|
||||||
LEDC_ARG_CHECK(ledc_channel < LEDC_CHANNEL_MAX, "ledc_channel");
|
LEDC_ARG_CHECK(ledc_channel < LEDC_CHANNEL_MAX, "ledc_channel");
|
||||||
LEDC_ARG_CHECK(speed_mode < LEDC_SPEED_MODE_MAX, "speed_mode");
|
LEDC_ARG_CHECK(speed_mode < LEDC_SPEED_MODE_MAX, "speed_mode");
|
||||||
LEDC_ARG_CHECK(GPIO_IS_VALID_OUTPUT_GPIO(gpio_num), "gpio_num");
|
LEDC_ARG_CHECK(GPIO_IS_VALID_OUTPUT_GPIO(gpio_num), "gpio_num");
|
||||||
@@ -405,7 +406,7 @@ esp_err_t ledc_channel_config(const ledc_channel_config_t* ledc_conf)
|
|||||||
/*set LEDC signal in gpio matrix*/
|
/*set LEDC signal in gpio matrix*/
|
||||||
gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[gpio_num], PIN_FUNC_GPIO);
|
gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[gpio_num], PIN_FUNC_GPIO);
|
||||||
gpio_set_direction(gpio_num, GPIO_MODE_OUTPUT);
|
gpio_set_direction(gpio_num, GPIO_MODE_OUTPUT);
|
||||||
esp_rom_gpio_connect_out_signal(gpio_num, ledc_periph_signal[speed_mode].sig_out0_idx + ledc_channel, 0, 0);
|
esp_rom_gpio_connect_out_signal(gpio_num, ledc_periph_signal[speed_mode].sig_out0_idx + ledc_channel, output_invert, 0);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@@ -134,6 +134,10 @@ typedef struct {
|
|||||||
ledc_timer_t timer_sel; /*!< Select the timer source of channel (0 - 3) */
|
ledc_timer_t timer_sel; /*!< Select the timer source of channel (0 - 3) */
|
||||||
uint32_t duty; /*!< LEDC channel duty, the range of duty setting is [0, (2**duty_resolution)] */
|
uint32_t duty; /*!< LEDC channel duty, the range of duty setting is [0, (2**duty_resolution)] */
|
||||||
int hpoint; /*!< LEDC channel hpoint value, the max value is 0xfffff */
|
int hpoint; /*!< LEDC channel hpoint value, the max value is 0xfffff */
|
||||||
|
struct {
|
||||||
|
unsigned int output_invert: 1;/*!< Enable (1) or disable (0) gpio output invert */
|
||||||
|
} flags; /*!< LEDC flags */
|
||||||
|
|
||||||
} ledc_channel_config_t;
|
} ledc_channel_config_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -102,7 +102,8 @@ void app_main(void)
|
|||||||
.gpio_num = LEDC_HS_CH0_GPIO,
|
.gpio_num = LEDC_HS_CH0_GPIO,
|
||||||
.speed_mode = LEDC_HS_MODE,
|
.speed_mode = LEDC_HS_MODE,
|
||||||
.hpoint = 0,
|
.hpoint = 0,
|
||||||
.timer_sel = LEDC_HS_TIMER
|
.timer_sel = LEDC_HS_TIMER,
|
||||||
|
.flags.output_invert = 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.channel = LEDC_HS_CH1_CHANNEL,
|
.channel = LEDC_HS_CH1_CHANNEL,
|
||||||
@@ -110,7 +111,8 @@ void app_main(void)
|
|||||||
.gpio_num = LEDC_HS_CH1_GPIO,
|
.gpio_num = LEDC_HS_CH1_GPIO,
|
||||||
.speed_mode = LEDC_HS_MODE,
|
.speed_mode = LEDC_HS_MODE,
|
||||||
.hpoint = 0,
|
.hpoint = 0,
|
||||||
.timer_sel = LEDC_HS_TIMER
|
.timer_sel = LEDC_HS_TIMER,
|
||||||
|
.flags.output_invert = 0
|
||||||
},
|
},
|
||||||
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32C3
|
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32C3
|
||||||
{
|
{
|
||||||
@@ -119,7 +121,8 @@ void app_main(void)
|
|||||||
.gpio_num = LEDC_LS_CH0_GPIO,
|
.gpio_num = LEDC_LS_CH0_GPIO,
|
||||||
.speed_mode = LEDC_LS_MODE,
|
.speed_mode = LEDC_LS_MODE,
|
||||||
.hpoint = 0,
|
.hpoint = 0,
|
||||||
.timer_sel = LEDC_LS_TIMER
|
.timer_sel = LEDC_LS_TIMER,
|
||||||
|
.flags.output_invert = 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.channel = LEDC_LS_CH1_CHANNEL,
|
.channel = LEDC_LS_CH1_CHANNEL,
|
||||||
@@ -127,7 +130,8 @@ void app_main(void)
|
|||||||
.gpio_num = LEDC_LS_CH1_GPIO,
|
.gpio_num = LEDC_LS_CH1_GPIO,
|
||||||
.speed_mode = LEDC_LS_MODE,
|
.speed_mode = LEDC_LS_MODE,
|
||||||
.hpoint = 0,
|
.hpoint = 0,
|
||||||
.timer_sel = LEDC_LS_TIMER
|
.timer_sel = LEDC_LS_TIMER,
|
||||||
|
.flags.output_invert = 0
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
@@ -136,7 +140,8 @@ void app_main(void)
|
|||||||
.gpio_num = LEDC_LS_CH2_GPIO,
|
.gpio_num = LEDC_LS_CH2_GPIO,
|
||||||
.speed_mode = LEDC_LS_MODE,
|
.speed_mode = LEDC_LS_MODE,
|
||||||
.hpoint = 0,
|
.hpoint = 0,
|
||||||
.timer_sel = LEDC_LS_TIMER
|
.timer_sel = LEDC_LS_TIMER,
|
||||||
|
.flags.output_invert = 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.channel = LEDC_LS_CH3_CHANNEL,
|
.channel = LEDC_LS_CH3_CHANNEL,
|
||||||
@@ -144,7 +149,8 @@ void app_main(void)
|
|||||||
.gpio_num = LEDC_LS_CH3_GPIO,
|
.gpio_num = LEDC_LS_CH3_GPIO,
|
||||||
.speed_mode = LEDC_LS_MODE,
|
.speed_mode = LEDC_LS_MODE,
|
||||||
.hpoint = 0,
|
.hpoint = 0,
|
||||||
.timer_sel = LEDC_LS_TIMER
|
.timer_sel = LEDC_LS_TIMER,
|
||||||
|
.flags.output_invert = 1
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user