37#ifndef DRIVER_SSD1681_H
38#define DRIVER_SSD1681_H
62#ifndef SSD1681_BUSY_MAX_DELAY_MS
63 #define SSD1681_BUSY_MAX_DELAY_MS 10
69#ifndef SSD1681_BUSY_MAX_RETRY_TIMES
70 #define SSD1681_BUSY_MAX_RETRY_TIMES 2000
588#define DRIVER_SSD1681_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
596#define DRIVER_SSD1681_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
604#define DRIVER_SSD1681_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
612#define DRIVER_SSD1681_LINK_SPI_WRITE_CMD(HANDLE, FUC) (HANDLE)->spi_write_cmd = FUC
620#define DRIVER_SSD1681_LINK_SPI_READ_CMD(HANDLE, FUC) (HANDLE)->spi_read_cmd = FUC
628#define DRIVER_SSD1681_LINK_SPI_CMD_DATA_GPIO_INIT(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_init = FUC
636#define DRIVER_SSD1681_LINK_SPI_CMD_DATA_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_deinit = FUC
644#define DRIVER_SSD1681_LINK_SPI_CMD_DATA_GPIO_WRITE(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_write = FUC
652#define DRIVER_SSD1681_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
660#define DRIVER_SSD1681_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
668#define DRIVER_SSD1681_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
676#define DRIVER_SSD1681_LINK_BUSY_GPIO_INIT(HANDLE, FUC) (HANDLE)->busy_gpio_init = FUC
684#define DRIVER_SSD1681_LINK_BUSY_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->busy_gpio_deinit = FUC
692#define DRIVER_SSD1681_LINK_BUSY_GPIO_READ(HANDLE, FUC) (HANDLE)->busy_gpio_read = FUC
700#define DRIVER_SSD1681_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
708#define DRIVER_SSD1681_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
1080 uint8_t phase1, uint8_t phase2,
1081 uint8_t phase3, uint8_t duration);
uint8_t ssd1681_otp_program_selection(ssd1681_handle_t *handle)
program otp selection
ssd1681_step_width_t
ssd1681 step width enumeration definition
uint8_t ssd1681_deinit(ssd1681_handle_t *handle)
close the chip
ssd1681_driving_strength_t
ssd1681 driving strength enumeration definition
uint8_t ssd1681_set_display_sequence(ssd1681_handle_t *handle, ssd1681_display_sequence_t sequence)
set the display sequence
uint8_t ssd1681_write_temperature_sensor(ssd1681_handle_t *handle, uint16_t control)
write the temperature sensor
uint8_t ssd1681_init(ssd1681_handle_t *handle)
initialize the chip
ssd1681_min_off_time_t
ssd1681 min off time enumeration definition
uint8_t ssd1681_get_ram(ssd1681_handle_t *handle)
get the ram
struct ssd1681_info_s ssd1681_info_t
ssd1681 information structure definition
uint8_t ssd1681_set_ram_y_address_counter(ssd1681_handle_t *handle, uint16_t cnt)
set the ram y address counter
struct ssd1681_handle_s ssd1681_handle_t
ssd1681 handle structure definition
uint8_t ssd1681_set_lut_register(ssd1681_handle_t *handle, uint8_t *reg, uint16_t len)
set the lut register
uint8_t ssd1681_otp_initial_read(ssd1681_handle_t *handle)
read register for initial code setting
uint8_t ssd1681_set_user_id(ssd1681_handle_t *handle, uint8_t id[10])
set the user id
uint8_t ssd1681_set_red_ram(ssd1681_handle_t *handle)
set the red ram
ssd1681_step_height_t
ssd1681 step height enumeration definition
uint8_t ssd1681_set_vcom_sense_duration(ssd1681_handle_t *handle, uint8_t duration)
set the vcom sense duration
uint8_t ssd1681_otp_load_waveform(ssd1681_handle_t *handle)
load otp of waveform setting
uint8_t ssd1681_otp_read_register(ssd1681_handle_t *handle, uint8_t param[11])
otp register read for display option
ssd1681_otp_mode_t
ssd1681 otp mode enumeration definition
uint8_t ssd1681_get_user_id(ssd1681_handle_t *handle, uint8_t id[10])
get the user id
uint8_t ssd1681_read_temperature_sensor(ssd1681_handle_t *handle, uint16_t *control)
read the temperature sensor
uint8_t ssd1681_write_temperature_sensor_ext(ssd1681_handle_t *handle, uint8_t param[3])
write command to external temperature sensor
uint8_t ssd1681_set_vcom_control_reg(ssd1681_handle_t *handle)
write register for vcom control
ssd1681_end_opt_t
ssd1681 end opt enumeration definition
ssd1681_color_t
ssd1681 color enumeration definition
uint8_t ssd1681_set_master_activate(ssd1681_handle_t *handle)
master activate
ssd1681_vbd_fix_level_t
ssd1681 vbd fix level enumeration definition
uint8_t ssd1681_set_driver_output(ssd1681_handle_t *handle, uint16_t mux, ssd1681_bool_t gd, ssd1681_bool_t sm, ssd1681_bool_t tb)
set the driver output
uint8_t ssd1681_gram_draw_picture(ssd1681_handle_t *handle, ssd1681_color_t color, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t *img)
draw a picture in the gram
uint8_t ssd1681_gram_write_string(ssd1681_handle_t *handle, ssd1681_color_t color, uint8_t x, uint8_t y, char *str, uint16_t len, uint8_t data, ssd1681_font_t font)
draw a string in the gram
uint8_t ssd1681_gram_clear(ssd1681_handle_t *handle, ssd1681_color_t color)
clear the screen in the gram
ssd1681_bool_t
ssd1681 bool enumeration definition
ssd1681_address_direction_t
ssd1681 address direction enumeration definition
uint8_t ssd1681_info(ssd1681_info_t *info)
get chip's information
ssd1681_mode_t
ssd1681 mode enumeration definition
uint8_t ssd1681_gram_fill_rect(ssd1681_handle_t *handle, ssd1681_color_t color, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t data)
fill a rectangle in the gram
uint8_t ssd1681_set_display_update_control(ssd1681_handle_t *handle, ssd1681_display_control_t red_control, ssd1681_display_control_t black_control)
set the display update control
uint8_t ssd1681_otp_program_mode(ssd1681_handle_t *handle, ssd1681_otp_mode_t mode)
set the otp program mode
uint8_t ssd1681_set_read_ram(ssd1681_handle_t *handle, ssd1681_read_ram_t ram)
set the read ram
uint8_t ssd1681_gram_read_point(ssd1681_handle_t *handle, ssd1681_color_t color, uint8_t x, uint8_t y, uint8_t *data)
read a point from the gram
uint8_t ssd1681_set_end_option(ssd1681_handle_t *handle, ssd1681_end_opt_t opt)
end option
uint8_t ssd1681_set_ram_y(ssd1681_handle_t *handle, uint16_t start, uint16_t end)
set the ram y range
ssd1681_temperature_sensor_t
ssd1681 temperature sensor enumeration definition
uint8_t ssd1681_software_reset(ssd1681_handle_t *handle)
software reset
ssd1681_display_sequence_t
ssd1681 display sequence enumeration definition
ssd1681_font_t
ssd1681 font enumeration definition
uint8_t ssd1681_set_mode(ssd1681_handle_t *handle, ssd1681_mode_t mode)
set the mode
uint8_t ssd1681_set_gate_driving_voltage(ssd1681_handle_t *handle, ssd1681_gate_driving_voltage_t voltage)
set the gate driving voltage
ssd1681_vci_level_t
ssd1681 vci level enumeration definition
uint8_t ssd1681_set_hv_ready_detection(ssd1681_handle_t *handle, uint8_t cool_down_duration, uint8_t cool_down_loop_num)
set the hv ready detection
uint8_t ssd1681_set_ram_x_address_counter(ssd1681_handle_t *handle, uint8_t cnt)
set the ram x address counter
ssd1681_vbd_transition_t
ssd1681 vbd transition enumeration definition
uint8_t ssd1681_otp_program_vcom(ssd1681_handle_t *handle)
program vcom otp
uint8_t ssd1681_set_auto_write_black_ram(ssd1681_handle_t *handle, ssd1681_step_height_t height, ssd1681_step_width_t width)
set the auto write black ram
uint8_t ssd1681_otp_initial(ssd1681_handle_t *handle)
initial code setting otp program
uint8_t ssd1681_otp_write_register(ssd1681_handle_t *handle, uint8_t param[11])
otp write register for display option
uint8_t ssd1681_set_auto_write_red_ram(ssd1681_handle_t *handle, ssd1681_step_height_t height, ssd1681_step_width_t width)
set the auto write red ram
uint8_t ssd1681_set_crc_calculation(ssd1681_handle_t *handle)
set the crc calculation
uint8_t ssd1681_otp_initial_write(ssd1681_handle_t *handle, uint8_t param[4])
write register for initial code setting
uint8_t ssd1681_gram_write_point(ssd1681_handle_t *handle, ssd1681_color_t color, uint8_t x, uint8_t y, uint8_t data)
write a point in the gram
uint8_t ssd1681_set_enter_vcom_sense(ssd1681_handle_t *handle)
set enter vcom sense
ssd1681_vsh_t
ssd1681 vsh enumeration definition
ssd1681_vcom_t
ssd1681 vcom enumeration definition
ssd1681_read_ram_t
ssd1681 read ram enumeration definition
uint8_t ssd1681_set_booster_soft_start(ssd1681_handle_t *handle, uint8_t phase1, uint8_t phase2, uint8_t phase3, uint8_t duration)
set the booster soft start
uint8_t ssd1681_set_source_driving_voltage(ssd1681_handle_t *handle, ssd1681_vsh_t vsh1, ssd1681_vsh_t vsh2, ssd1681_vsl_t vsl)
set the source driving voltage
ssd1681_gs_transition_t
ssd1681 gs transition enumeration definition
uint8_t ssd1681_set_temperature_sensor(ssd1681_handle_t *handle, ssd1681_temperature_sensor_t sensor)
set the temperature sensor
ssd1681_gate_driving_voltage_t
ssd1681 gate driving voltage enumeration definition
uint8_t ssd1681_set_vcom_register(ssd1681_handle_t *handle, ssd1681_vcom_t vcom)
write vcom register
uint8_t ssd1681_set_data_entry_mode(ssd1681_handle_t *handle, ssd1681_address_mode_t mode, ssd1681_address_direction_t direction)
set the data entry mode
uint8_t ssd1681_clear(ssd1681_handle_t *handle, ssd1681_color_t color)
clear the screen
uint8_t ssd1681_get_status(ssd1681_handle_t *handle, uint8_t *status)
get the status
uint8_t ssd1681_set_ram_x(ssd1681_handle_t *handle, uint8_t start, uint8_t end)
set the ram x range
ssd1681_vbd_t
ssd1681 vbd enumeration definition
uint8_t ssd1681_nop(ssd1681_handle_t *handle)
nop command
ssd1681_phase_duration_t
ssd1681 phase duration enumeration definition
uint8_t ssd1681_set_border_waveform(ssd1681_handle_t *handle, ssd1681_vbd_t vbd, ssd1681_vbd_fix_level_t level, ssd1681_gs_transition_t gs_tran, ssd1681_vbd_transition_t vbd_tran)
set the border waveform
uint8_t ssd1681_set_vci_detection(ssd1681_handle_t *handle, ssd1681_vci_level_t level)
set the vci detection
uint8_t ssd1681_gram_update(ssd1681_handle_t *handle, ssd1681_color_t color)
update the gram data
uint8_t ssd1681_otp_program_waveform(ssd1681_handle_t *handle)
program otp of waveform setting
uint8_t ssd1681_set_black_ram(ssd1681_handle_t *handle)
set the black ram
ssd1681_address_mode_t
ssd1681 address mode enumeration definition
ssd1681_vsl_t
ssd1681 vsl enumeration definition
ssd1681_display_control_t
ssd1681 display control enumeration definition
uint8_t ssd1681_get_crc_status(ssd1681_handle_t *handle, uint16_t *status)
get the crc status
@ SSD1681_DRIVING_STRENGTH_1
@ SSD1681_DRIVING_STRENGTH_5
@ SSD1681_DRIVING_STRENGTH_8
@ SSD1681_DRIVING_STRENGTH_4
@ SSD1681_DRIVING_STRENGTH_7
@ SSD1681_DRIVING_STRENGTH_3
@ SSD1681_DRIVING_STRENGTH_6
@ SSD1681_DRIVING_STRENGTH_2
@ SSD1681_MIN_OFF_TIME_3P9
@ SSD1681_MIN_OFF_TIME_11P5
@ SSD1681_MIN_OFF_TIME_6P3
@ SSD1681_MIN_OFF_TIME_9P8
@ SSD1681_MIN_OFF_TIME_8P4
@ SSD1681_MIN_OFF_TIME_5P4
@ SSD1681_MIN_OFF_TIME_2P6
@ SSD1681_MIN_OFF_TIME_7P3
@ SSD1681_MIN_OFF_TIME_3P2
@ SSD1681_MIN_OFF_TIME_4P6
@ SSD1681_MIN_OFF_TIME_16P5
@ SSD1681_MIN_OFF_TIME_13P8
@ SSD1681_STEP_HEIGHT_128
@ SSD1681_STEP_HEIGHT_200
@ SSD1681_OTP_MODE_NORMAL
@ SSD1681_OTP_MODE_INTERNAL
@ SSD1681_END_OPT_KEEP_BEFORE_OUTPUT
@ SSD1681_VBD_FIX_LEVEL_VSH2
@ SSD1681_VBD_FIX_LEVEL_VSS
@ SSD1681_VBD_FIX_LEVEL_VSH1
@ SSD1681_VBD_FIX_LEVEL_VSL
@ SSD1681_ADDRESS_DIRECTION_UPDATED_Y
@ SSD1681_ADDRESS_DIRECTION_UPDATED_X
@ SSD1681_MODE_DEEP_SLEEP_1
@ SSD1681_MODE_DEEP_SLEEP_2
@ SSD1681_TEMPERATURE_SENSOR_INTERNAL
@ SSD1681_TEMPERATURE_SENSOR_EXTERNAL
@ SSD1681_DISPLAY_SEQUENCE_8
@ SSD1681_DISPLAY_SEQUENCE_1
@ SSD1681_DISPLAY_SEQUENCE_9
@ SSD1681_DISPLAY_SEQUENCE_0
@ SSD1681_DISPLAY_SEQUENCE_2
@ SSD1681_DISPLAY_SEQUENCE_6
@ SSD1681_DISPLAY_SEQUENCE_4
@ SSD1681_DISPLAY_SEQUENCE_10
@ SSD1681_DISPLAY_SEQUENCE_5
@ SSD1681_DISPLAY_SEQUENCE_11
@ SSD1681_DISPLAY_SEQUENCE_3
@ SSD1681_DISPLAY_SEQUENCE_7
@ SSD1681_VBD_TRANSITION_LUT2
@ SSD1681_VBD_TRANSITION_LUT1
@ SSD1681_VBD_TRANSITION_LUT3
@ SSD1681_VBD_TRANSITION_LUT0
@ SSD1681_VCOM_NEGATIVE_0P5
@ SSD1681_VCOM_NEGATIVE_0P2
@ SSD1681_VCOM_NEGATIVE_1P4
@ SSD1681_VCOM_NEGATIVE_2P6
@ SSD1681_VCOM_NEGATIVE_2P5
@ SSD1681_VCOM_NEGATIVE_1P2
@ SSD1681_VCOM_NEGATIVE_3P0
@ SSD1681_VCOM_NEGATIVE_1P6
@ SSD1681_VCOM_NEGATIVE_2P2
@ SSD1681_VCOM_NEGATIVE_2P8
@ SSD1681_VCOM_NEGATIVE_1P9
@ SSD1681_VCOM_NEGATIVE_2P0
@ SSD1681_VCOM_NEGATIVE_2P9
@ SSD1681_VCOM_NEGATIVE_1P0
@ SSD1681_VCOM_NEGATIVE_0P3
@ SSD1681_VCOM_NEGATIVE_1P1
@ SSD1681_VCOM_NEGATIVE_1P3
@ SSD1681_VCOM_NEGATIVE_0P9
@ SSD1681_VCOM_NEGATIVE_1P5
@ SSD1681_VCOM_NEGATIVE_0P8
@ SSD1681_VCOM_NEGATIVE_0P4
@ SSD1681_VCOM_NEGATIVE_2P7
@ SSD1681_VCOM_NEGATIVE_2P3
@ SSD1681_VCOM_NEGATIVE_1P7
@ SSD1681_VCOM_NEGATIVE_0P7
@ SSD1681_VCOM_NEGATIVE_2P4
@ SSD1681_VCOM_NEGATIVE_2P1
@ SSD1681_VCOM_NEGATIVE_1P8
@ SSD1681_VCOM_NEGATIVE_0P6
@ SSD1681_GS_TRANSITION_FOLLOW_LUT
@ SSD1681_GS_TRANSITION_FOLLOW_LUT_RED
@ SSD1681_GATE_DRIVING_VOLTAGE_19P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_20V
@ SSD1681_GATE_DRIVING_VOLTAGE_13V
@ SSD1681_GATE_DRIVING_VOLTAGE_12V
@ SSD1681_GATE_DRIVING_VOLTAGE_18P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_14V
@ SSD1681_GATE_DRIVING_VOLTAGE_11V
@ SSD1681_GATE_DRIVING_VOLTAGE_16P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_12P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_10V
@ SSD1681_GATE_DRIVING_VOLTAGE_17V
@ SSD1681_GATE_DRIVING_VOLTAGE_13P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_15P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_16V
@ SSD1681_GATE_DRIVING_VOLTAGE_10P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_19V
@ SSD1681_GATE_DRIVING_VOLTAGE_15V
@ SSD1681_GATE_DRIVING_VOLTAGE_18V
@ SSD1681_GATE_DRIVING_VOLTAGE_14P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_11P5V
@ SSD1681_GATE_DRIVING_VOLTAGE_17P5V
@ SSD1681_VBD_GS_TRANSITION
@ SSD1681_PHASE_DURATION_40MS
@ SSD1681_PHASE_DURATION_30MS
@ SSD1681_PHASE_DURATION_20MS
@ SSD1681_PHASE_DURATION_10MS
@ SSD1681_ADDRESS_MODE_Y_DECREMENT_X_INCREMENT
@ SSD1681_ADDRESS_MODE_Y_INCREMENT_X_INCREMENT
@ SSD1681_ADDRESS_MODE_Y_INCREMENT_X_DECREMENT
@ SSD1681_ADDRESS_MODE_Y_DECREMENT_X_DECREMENT
@ SSD1681_VSL_NEGATIVE_6P5
@ SSD1681_VSL_NEGATIVE_9P5
@ SSD1681_VSL_NEGATIVE_11P5
@ SSD1681_VSL_NEGATIVE_15P5
@ SSD1681_VSL_NEGATIVE_14P5
@ SSD1681_VSL_NEGATIVE_11
@ SSD1681_VSL_NEGATIVE_16P5
@ SSD1681_VSL_NEGATIVE_5P5
@ SSD1681_VSL_NEGATIVE_13P5
@ SSD1681_VSL_NEGATIVE_10
@ SSD1681_VSL_NEGATIVE_10P5
@ SSD1681_VSL_NEGATIVE_15
@ SSD1681_VSL_NEGATIVE_12
@ SSD1681_VSL_NEGATIVE_8P5
@ SSD1681_VSL_NEGATIVE_16
@ SSD1681_VSL_NEGATIVE_17
@ SSD1681_VSL_NEGATIVE_13
@ SSD1681_VSL_NEGATIVE_12P5
@ SSD1681_VSL_NEGATIVE_14
@ SSD1681_VSL_NEGATIVE_7P5
@ SSD1681_DISPLAY_CONTROL_NORMAL
@ SSD1681_DISPLAY_CONTROL_BYPASS
@ SSD1681_DISPLAY_CONTROL_INVERSE
uint8_t ssd1681_read_data(ssd1681_handle_t *handle, uint8_t *buf, uint8_t len)
read the register data
uint8_t ssd1681_write_cmd(ssd1681_handle_t *handle, uint8_t *buf, uint8_t len)
write the register command
uint8_t ssd1681_write_data(ssd1681_handle_t *handle, uint8_t *buf, uint8_t len)
write the register data
ssd1681 handle structure definition
uint8_t red_gram[200][25]
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* busy_gpio_init)(void)
uint8_t(* spi_read_cmd)(uint8_t *buf, uint16_t len)
uint8_t(* spi_cmd_data_gpio_deinit)(void)
uint8_t(* reset_gpio_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* busy_gpio_deinit)(void)
uint8_t(* spi_deinit)(void)
uint8_t(* reset_gpio_init)(void)
uint8_t black_gram[200][25]
uint8_t(* spi_cmd_data_gpio_init)(void)
uint8_t(* busy_gpio_read)(uint8_t *value)
uint8_t(* spi_write_cmd)(uint8_t *buf, uint16_t len)
uint8_t(* spi_cmd_data_gpio_write)(uint8_t value)
uint8_t(* reset_gpio_write)(uint8_t value)
ssd1681 information structure definition
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v