// ...existing code... /* function declarations */ i2c_result_t i2c_config(void); i2c_result_t i2c_bus_reset(void); void i2c_scan(void); /* generic read/write functions with configurable length */ i2c_result_t i2c_write(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t length); i2c_result_t i2c_read(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t length); /* compatibility functions for legacy code */ i2c_result_t i2c_write_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data[2]); i2c_result_t i2c_read_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data); /* convenience functions for common operations */ i2c_result_t i2c_write_8bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data); i2c_result_t i2c_read_8bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data); i2c_result_t i2c_write_32bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data[4]); i2c_result_t i2c_read_32bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data); #ifdef DEBUG_VERBOSE const char* i2c_get_status_string(i2c_result_t status); #endif // ...existing code... // 读取显示面板参数 (13字节) uint8_t display_params[13]; i2c_result_t result = i2c_read_display_params(0x3C, 0x0F, display_params, 13); // 或者使用通用函数 result = i2c_read(0x3C, 0x0F, display_params, 13); // 读取单个参数 uint8_t startup_mode; result = i2c_read_8bits(0x3C, 0x0F, &startup_mode); // 读取2字节参数(如显示界面宽度) uint8_t width_data[2]; result = i2c_read(0x3C, 0x10, width_data, 2); // 写入多字节配置 uint8_t config_data[5] = {0x01, 0x02, 0x03, 0x04, 0x05}; result = i2c_write(0x3C, 0x20, config_data, 5);