Skip to content

Commit 0caf51d

Browse files
committed
Merge branch 'fix/esp_lcd_i2c_ng_v5.2' into 'release/v5.2'
fix(esp_lcd): Fix I2C receive without param (v5.2) See merge request espressif/esp-idf!32413
2 parents 037f1ea + 335e8b4 commit 0caf51d

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

components/esp_lcd/src/esp_lcd_panel_io_i2c_v2.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,10 @@ static esp_err_t panel_io_i2c_rx_buffer(esp_lcd_panel_io_t *io, int lcd_cmd, voi
121121
lcd_panel_io_i2c_t *i2c_panel_io = __containerof(io, lcd_panel_io_i2c_t, base);
122122
bool send_param = (lcd_cmd >= 0);
123123

124-
int write_size = 0;
125-
uint8_t write_buffer[CONTROL_PHASE_LENGTH + CMD_LENGTH] = {0};
126-
127124
if (send_param) {
125+
int write_size = 0;
126+
uint8_t write_buffer[CONTROL_PHASE_LENGTH + CMD_LENGTH] = {0};
127+
128128
if (i2c_panel_io->control_phase_enabled) {
129129
write_buffer[0] = i2c_panel_io->control_phase_cmd;
130130
write_size += 1;
@@ -136,9 +136,12 @@ static esp_err_t panel_io_i2c_rx_buffer(esp_lcd_panel_io_t *io, int lcd_cmd, voi
136136
memcpy(write_buffer + write_size, cmds + (sizeof(cmds) - cmds_size), cmds_size);
137137
write_size += cmds_size;
138138
}
139+
140+
ESP_GOTO_ON_ERROR(i2c_master_transmit_receive(i2c_panel_io->i2c_handle, write_buffer, write_size, buffer, buffer_size, -1), err, TAG, "i2c transaction failed");
141+
} else {
142+
ESP_GOTO_ON_ERROR(i2c_master_receive(i2c_panel_io->i2c_handle, buffer, buffer_size, -1), err, TAG, "i2c transaction failed");
139143
}
140144

141-
ESP_GOTO_ON_ERROR(i2c_master_transmit_receive(i2c_panel_io->i2c_handle, write_buffer, write_size, buffer, buffer_size, -1), err, TAG, "i2c transaction failed");
142145
return ESP_OK;
143146
err:
144147
return ret;

0 commit comments

Comments
 (0)