generated from hulk/gd32e23x_template_cmake_vscode
46 lines
1.6 KiB
C
46 lines
1.6 KiB
C
// ...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); |