mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
rgb_lcd: added API to manually refresh the LCD
This commit is contained in:
parent
140536892d
commit
1dab4af3e8
@ -181,12 +181,19 @@ esp_err_t esp_lcd_rgb_panel_register_event_callbacks(esp_lcd_panel_handle_t pane
|
||||
* - ESP_OK: Get frame buffer address successfully
|
||||
*/
|
||||
esp_err_t esp_lcd_rgb_panel_get_frame_buffer(esp_lcd_panel_handle_t panel, uint32_t fb_num, void **fb0, ...);
|
||||
|
||||
/**
|
||||
* @brief Manually trigger once transmission of the frame buffer to the LCD panel
|
||||
*
|
||||
* @note This function should only be called when the RGB panel is working under the `refresh_on_demand` mode.
|
||||
*
|
||||
* @param[in] panel LCD panel handle, returned from `esp_lcd_new_rgb_panel()`
|
||||
* @return
|
||||
* - ESP_ERR_NOT_SUPPORTED if frequency is unreachable
|
||||
* - ESP_ERR_INVALID_ARG if parameter panel is invalid
|
||||
* - ESP_OK on success
|
||||
* - ESP_ERR_INVALID_ARG: Start a refresh failed because of invalid argument
|
||||
* - ESP_ERR_INVALID_STATE: Start a refresh failed because the LCD panel is not created with the `refresh_on_demand` flag enabled.
|
||||
* - ESP_OK: Start a refresh successfully
|
||||
*/
|
||||
esp_err_t esp_rgb_panel_set_pclk(esp_lcd_panel_handle_t panel, uint32_t freq_hz);
|
||||
esp_err_t esp_lcd_rgb_panel_refresh(esp_lcd_panel_handle_t panel);
|
||||
|
||||
#endif // SOC_LCD_RGB_SUPPORTED
|
||||
|
||||
|
@ -338,6 +338,15 @@ esp_err_t esp_lcd_rgb_panel_get_frame_buffer(esp_lcd_panel_handle_t panel, uint3
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t esp_lcd_rgb_panel_refresh(esp_lcd_panel_handle_t panel)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE(panel, ESP_ERR_INVALID_ARG, TAG, "invalid argument");
|
||||
esp_rgb_panel_t *rgb_panel = __containerof(panel, esp_rgb_panel_t, base);
|
||||
ESP_RETURN_ON_FALSE(!rgb_panel->flags.stream_mode, ESP_ERR_INVALID_STATE, TAG, "refresh on demand is not enabled");
|
||||
lcd_rgb_panel_start_transmission(rgb_panel);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static esp_err_t rgb_panel_del(esp_lcd_panel_t *panel)
|
||||
{
|
||||
esp_rgb_panel_t *rgb_panel = __containerof(panel, esp_rgb_panel_t, base);
|
||||
|
@ -268,6 +268,7 @@ LCD
|
||||
- :cpp:func:`esp_lcd_panel_disp_off` is deprecated, please use :cpp:func:`esp_lcd_panel_disp_on_off` instead.
|
||||
- ``dc_as_cmd_phase`` is removed. The SPI LCD driver currently doesn't support a 9bit SPI LCD. Please always use a dedicated GPIO to control the LCD D/C line.
|
||||
- The way to register RGB panel event callbacks has been moved from the :cpp:type:`esp_lcd_rgb_panel_config_t` into a separate API :cpp:func:`esp_lcd_rgb_panel_register_event_callbacks`. However, the event callback signature is not changed.
|
||||
- If the RGB LCD is created with the ``refresh_on_demand`` flag enabled, the driver won't start a refresh in the :cpp:func:`esp_lcd_panel_draw_bitmap`. Now you have to call :cpp:func:`esp_lcd_rgb_panel_refresh` to refresh the screen by yourself.
|
||||
|
||||
.. only:: SOC_MCPWM_SUPPORTED
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user