为了进行测试,我尝试使用带有 MB1166 OTM8009A LCD 的
STM32F769-DISCO 板读取当前 LCD 亮度 - 0x5E 寄存器。
DSI 已针对命令模式正确配置 - 写入工作正常。我知道,因为显示已正确初始化。
我到处看了看,但没有找到有关如何使用
HAL_DSI_Read()的示例。
我遇到的一篇文章建议
首先调用 HAL_DSI_ConfigFlowControl(hdsi, DSI_FLOW_CONTROL_BTA)。这似乎有所帮助,没有超时错误,但没有任何内容被读取。
请指教。这似乎是反复出现的问题,没有答案,甚至没有人成功的迹象。以下是我尝试过的。
- void test() {
- uint8_t buffer[2];
- memset(buffer, 0, 2);
- MyDsiRead1Param(&hdsi_discovery, 0x5E, buffer, 2);
- }
- void MyDsiReadCmd(DSI_HandleTypeDef *hdsi, uint8_t cmd, uint8_t *buffer, uint32_t size) {
- HAL_StatusTypeDef status = HAL_DSI_ConfigFlowControl(hdsi, DSI_FLOW_CONTROL_BTA);
- if (status != HAL_OK) MBED_ERROR(status, "Error calling HAL_DSI_ConfigFlowControl().");
- status = HAL_DSI_Read(hdsi, LCD_CHANEL_ID, buffer, size, DSI_DCS_SHORT_PKT_READ, cmd, (uint8_t[]){0, 0});
- if (status != HAL_OK) MBED_ERROR(status, "Error calling HAL_DSI_Read().");
- }
- void MyDsiRead1Param(DSI_HandleTypeDef *hdsi, uint8_t param, uint8_t *buffer, uint32_t size) {
- HAL_StatusTypeDef status = HAL_DSI_ConfigFlowControl(hdsi, DSI_FLOW_CONTROL_BTA);
- if (status != HAL_OK) MBED_ERROR(status, "Error calling HAL_DSI_ConfigFlowControl().");
- status = HAL_DSI_Read(hdsi, LCD_CHANEL_ID, buffer, size, DSI_GEN_SHORT_PKT_READ_P1, 0, (uint8_t[]){param, 0});
- if (status != HAL_OK) MBED_ERROR(status, "Error calling HAL_DSI_Read().");
- }