-
Notifications
You must be signed in to change notification settings - Fork 802
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feat/add_mipi_components' into 'master'
feat(lcd): Add some mipi components Closes AEG-1535, AEG-1538, AEG-1539, and AEG-1540 See merge request ae_group/esp-iot-solution!987
- Loading branch information
Showing
89 changed files
with
6,700 additions
and
1,393 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# ChangeLog | ||
|
||
## v0.1.0 - 2024-05-07 | ||
|
||
### Enhancements: | ||
|
||
* Implement the driver for the EK79007 MIPI-DSI LCD controller |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
idf_component_register(SRCS "esp_lcd_ek79007.c" INCLUDE_DIRS "include" PRIV_REQUIRES "driver" REQUIRES "esp_lcd") | ||
|
||
include(package_manager) | ||
cu_pkg_define_version(${CMAKE_CURRENT_LIST_DIR}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
# ESP LCD EK79007 | ||
|
||
[![Component Registry](https://components.espressif.com/components/espressif/esp_lcd_ek79007/badge.svg)](https://components.espressif.com/components/espressif/esp_lcd_ek79007) | ||
|
||
Implementation of the EK79007 LCD controller with esp_lcd component. | ||
|
||
| LCD controller | Communication interface | Component name | Link to datasheet | | ||
| :------------: | :---------------------: | :------------: | :-----------------------------------------------------------------------------------: | | ||
| EK79007 | MIPI-DSI | esp_lcd_ek79007 | [PDF](https://dl.espressif.com/AE/esp-iot-solution/EK79007DA-H3_DS_V0.01_20200819.pdf) | | ||
|
||
**Note**: MIPI-DSI interface only supports ESP-IDF v5.3 and above versions. | ||
|
||
## Add to project | ||
|
||
Packages from this repository are uploaded to [Espressif's component service](https://components.espressif.com/). | ||
You can add them to your project via `idf.py add-dependancy`, e.g. | ||
|
||
``` | ||
idf.py add-dependency "espressif/esp_lcd_ek79007" | ||
``` | ||
|
||
Alternatively, you can create `idf_component.yml`. More is in [Espressif's documentation](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-component-manager.html). | ||
|
||
## Example use | ||
|
||
```c | ||
/** | ||
* Uncomment these line if use custom initialization commands. | ||
* The array should be declared as static const and positioned outside the function. | ||
*/ | ||
// static const ek79007_lcd_init_cmd_t lcd_init_cmds[] = { | ||
// {cmd, { data }, data_size, delay_ms} | ||
// {0xE0, (uint8_t []){0x00}, 1, 0}, | ||
// {0xE1, (uint8_t []){0x93}, 1, 0}, | ||
// {0xE2, (uint8_t []){0x65}, 1, 0}, | ||
// {0xE3, (uint8_t []){0xF8}, 1, 0}, | ||
// ... | ||
// }; | ||
|
||
ESP_LOGI(TAG, "MIPI DSI PHY Powered on"); | ||
esp_ldo_channel_handle_t ldo_mipi_phy = NULL; | ||
esp_ldo_channel_config_t ldo_mipi_phy_config = { | ||
.chan_id = 3, | ||
.voltage_mv = 2500, | ||
}; | ||
ESP_ERROR_CHECK(esp_ldo_acquire_channel(&ldo_mipi_phy_config, &ldo_mipi_phy)); | ||
|
||
ESP_LOGI(TAG, "Initialize MIPI DSI bus"); | ||
esp_lcd_dsi_bus_handle_t mipi_dsi_bus = NULL; | ||
esp_lcd_dsi_bus_config_t bus_config = EK79007_PANEL_BUS_DSI_2CH_CONFIG(); | ||
ESP_ERROR_CHECK(esp_lcd_new_dsi_bus(&bus_config, &mipi_dsi_bus)); | ||
|
||
ESP_LOGI(TAG, "Install panel IO"); | ||
esp_lcd_panel_io_handle_t mipi_dbi_io = NULL; | ||
esp_lcd_dbi_io_config_t dbi_config = EK79007_PANEL_IO_DBI_CONFIG(); | ||
ESP_ERROR_CHECK(esp_lcd_new_panel_io_dbi(mipi_dsi_bus, &dbi_config, &mipi_dbi_io)); | ||
|
||
ESP_LOGI(TAG, "Install EK79007S panel driver"); | ||
esp_lcd_panel_handle_t panel_handle = NULL; | ||
const esp_lcd_dpi_panel_config_t dpi_config = EK79007_1024_600_PANEL_60HZ_CONFIG(EXAMPLE_MIPI_DPI_PX_FORMAT); | ||
ek79007_vendor_config_t vendor_config = { | ||
.flags = { | ||
.use_mipi_interface = 1, | ||
}, | ||
.mipi_config = { | ||
.dsi_bus = mipi_dsi_bus, | ||
.dpi_config = &dpi_config, | ||
}, | ||
}; | ||
const esp_lcd_panel_dev_config_t panel_config = { | ||
.reset_gpio_num = EXAMPLE_LCD_IO_RST, // Set to -1 if not use | ||
.rgb_ele_order = LCD_RGB_ELEMENT_ORDER_RGB, // Implemented by LCD command `36h` | ||
.bits_per_pixel = EXAMPLE_LCD_BIT_PER_PIXEL, // Implemented by LCD command `3Ah` (16/18/24) | ||
.vendor_config = &vendor_config, | ||
}; | ||
ESP_ERROR_CHECK(esp_lcd_new_panel_ek79007(mipi_dbi_io, &panel_config, &panel_handle)); | ||
ESP_ERROR_CHECK(esp_lcd_panel_reset(panel_handle)); | ||
ESP_ERROR_CHECK(esp_lcd_panel_init(panel_handle)); | ||
ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_handle, true)); | ||
``` |
Oops, something went wrong.