43#define CHIP_NAME "Solomon Systech SSD1681"
44#define MANUFACTURER_NAME "Solomon Systech"
45#define SUPPLY_VOLTAGE_MIN 2.2f
46#define SUPPLY_VOLTAGE_MAX 3.7f
47#define MAX_CURRENT 500.00f
48#define TEMPERATURE_MIN -40.0f
49#define TEMPERATURE_MAX 85.0f
50#define DRIVER_VERSION 1000
61#define SSD1681_CMD_DRIVER_OUTPUT_CONTROL 0x01
62#define SSD1681_CMD_GATE_DRIVING_VOLTAGE_CONTROL 0x03
63#define SSD1681_CMD_SOURCE_DRIVING_VOLTAGE_CONTROL 0x04
64#define SSD1681_CMD_INITIAL_CODE_SETTING_OTP_PROGRAM 0x08
65#define SSD1681_CMD_WRITE_REGISTER_FOR_INITIAL_CODE_SETTING 0x09
66#define SSD1681_CMD_READ_REGISTER_FOR_INITIAL_CODE_SETTING 0x0A
67#define SSD1681_CMD_BOOSTER_SOFT_START_CONTROL 0x0C
68#define SSD1681_CMD_DEEP_SLEEP_MODE 0x10
69#define SSD1681_CMD_DATA_ENTRY_MODE_SETTING 0x11
70#define SSD1681_CMD_SW_RESET 0x12
71#define SSD1681_CMD_HV_READY_DETECTION 0x14
72#define SSD1681_CMD_VCI_DETECTION 0x15
73#define SSD1681_CMD_TEMPERATURE_SENSOR_CONTROL 0x18
74#define SSD1681_CMD_TEMPERATURE_SENSOR_CONTROL_WRITE 0x1A
76#define SSD1681_CMD_TEMPERATURE_SENSOR_CONTROL_READ 0x1B
78#define SSD1681_CMD_TEMPERATURE_SENSOR_CONTROL_WRITE_EXT 0x1C
80#define SSD1681_CMD_MASTER_ACTIVATION 0x20
81#define SSD1681_CMD_DISPLAY_UPDATA_CONTROL_1 0x21
82#define SSD1681_CMD_DISPLAY_UPDATA_CONTROL_2 0x22
83#define SSD1681_CMD_WRITE_RAM_BLACK 0x24
84#define SSD1681_CMD_WRITE_RAM_RED 0x26
85#define SSD1681_CMD_READ_RAM 0x27
86#define SSD1681_CMD_VCOM_SENSE 0x28
87#define SSD1681_CMD_VCOM_SENSE_DURATION 0x29
88#define SSD1681_CMD_PROGRAM_VCOM_OTP 0x2A
89#define SSD1681_CMD_WRITE_REGISTER_FOR_VCOM_CONTROL 0x2B
90#define SSD1681_CMD_WRITE_VCOM_REGISTER 0x2C
91#define SSD1681_CMD_OTP_REGISTER_READ_FOR_DISPLAY_OPTION 0x2D
92#define SSD1681_CMD_USER_ID_READ 0x2E
93#define SSD1681_CMD_STATUS_BIT_READ 0x2F
94#define SSD1681_CMD_PROGRAM_WS_OTP 0x30
95#define SSD1681_CMD_LOAD_WS_OTP 0x31
96#define SSD1681_CMD_WRITE_LUT_REGISTER 0x32
97#define SSD1681_CMD_CRC_CALCULATION 0x34
98#define SSD1681_CMD_CRC_STATUS_READ 0x35
99#define SSD1681_CMD_PROGRAM_OTP_SELECTION 0x36
100#define SSD1681_CMD_WRITE_REGISTER_FOR_DISPLAY_OPTION 0x37
101#define SSD1681_CMD_WRITE_REGISTER_FOR_USER_ID 0x38
102#define SSD1681_CMD_OTP_PROGRAM_MODE 0x39
103#define SSD1681_CMD_BORDER_WAVEFORM_CONTROL 0x3C
104#define SSD1681_CMD_END_OPTION 0x3F
105#define SSD1681_CMD_READ_RAM_OPTION 0x41
106#define SSD1681_CMD_SET_RAM_X 0x44
107#define SSD1681_CMD_SET_RAM_Y 0x45
108#define SSD1681_CMD_AUTO_WRITE_RED_RAM_FOR_REGULAR_PATTERN 0x46
109#define SSD1681_CMD_AUTO_WRITE_BW_RAM_FOR_REGULAR_PATTERN 0x47
110#define SSD1681_CMD_SET_RAM_X_ADDRESS_COUNTER 0x4E
111#define SSD1681_CMD_SET_RAM_Y_ADDRESS_COUNTER 0x4F
112#define SSD1681_CMD_NOP 0x7F
125static uint8_t a_ssd1681_multiple_write_byte(
ssd1681_handle_t *handle, uint8_t command, uint8_t *data, uint16_t len)
170 for (i = 0; i < len; i++)
193static uint8_t a_ssd1681_multiple_read_byte(
ssd1681_handle_t *handle, uint8_t command, uint8_t *data, uint16_t len)
238 for (i = 0; i < len; i++)
286 buf[0] = (mux >> 0) & 0xFF;
287 buf[1] = (mux >> 8) & 0x01;
306 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
343 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
384 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
418 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
453 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
487 handle->
debug_print(
"ssd1681: multiple read byte failed.\n");
510 uint8_t phase1, uint8_t phase2,
511 uint8_t phase3, uint8_t duration)
525 buf[0] = 0x80 | phase1;
526 buf[1] = 0x80 | phase2;
527 buf[2] = 0x80 | phase3;
532 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
569 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
603 buf[0] = (uint8_t)((mode << 0) | (direction << 2));
607 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
641 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
678 if (cool_down_duration > 0x7)
680 handle->
debug_print(
"ssd1681: cool_down_duration is over 7.\n");
684 if (cool_down_loop_num > 0x7)
686 handle->
debug_print(
"ssd1681: cool_down_loop_num is over 7.\n");
691 buf[0] = (cool_down_duration << 4) | (cool_down_loop_num << 0);
695 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
732 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
769 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
804 handle->
debug_print(
"ssd1681: control is over 0xFFF.\n");
809 buf[0] = (control >> 4) & 0xFF;
810 buf[1] = ((control >> 0) << 4) & 0xFF;
814 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
850 handle->
debug_print(
"ssd1681: multiple read byte failed.\n");
854 *control = (((uint16_t)buf[0]) << 4) | ((buf[1] >> 4) & 0xFF);
886 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
920 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
954 buf[0] = (uint8_t)((red_control << 4) | (black_control << 0));
958 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
995 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1029 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1063 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1097 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1131 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1168 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1202 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1239 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1276 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1311 handle->
debug_print(
"ssd1681: multiple read byte failed.\n");
1346 handle->
debug_print(
"ssd1681: multiple read byte failed.\n");
1381 handle->
debug_print(
"ssd1681: multiple read byte failed.\n");
1415 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1449 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1485 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1519 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1555 handle->
debug_print(
"ssd1681: multiple read byte failed.\n");
1559 *status = (uint16_t)(buf[0] << 0) | buf[1];
1590 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1625 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1660 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1697 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1734 buf[0] = (uint8_t)((vbd << 6) | (level << 4) | (gs_tran << 2) | (vbd_tran << 0));
1738 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1775 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1812 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1865 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1899 buf[0] = start & 0xFF;
1900 buf[1] = (start >> 8) & 0x1;
1901 buf[2] = end & 0xFF;
1902 buf[3] = (end >> 8) & 0x01;
1906 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1940 buf[0] = (uint8_t)((height << 4) | (width << 0));
1944 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
1978 buf[0] = (uint8_t)((height << 4) | (width << 0));
1982 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2026 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2066 buf[0] = cnt & 0xFF;
2067 buf[1] = (cnt >> 8)& 0x01;
2071 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2102 res = a_ssd1681_multiple_write_byte(handle,
SSD1681_CMD_NOP, NULL, 0);
2105 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2133 temp = 1 << (7 - bx);
2174static uint8_t a_ssd1681_gram_show_char(
ssd1681_handle_t *handle,
ssd1681_color_t color, uint8_t x, uint8_t y, uint8_t chr, uint8_t size, uint8_t mode)
2176 uint8_t temp, t, t1;
2178 uint8_t csize = (size / 8 + ((size % 8) ? 1 : 0)) * (size / 2);
2181 for (t = 0; t < csize; t++)
2185 temp = gsc_ssd1681_ascii_1206[chr][t];
2187 else if (size == 16)
2189 temp = gsc_ssd1681_ascii_1608[chr][t];
2193 temp = gsc_ssd1681_ascii_2412[chr][t];
2199 for (t1 = 0; t1 < 8; t1++)
2201 if ((temp & 0x80) != 0)
2203 if (a_ssd1681_gram_draw_point(handle, color, x, y, mode) != 0)
2210 if (a_ssd1681_gram_draw_point(handle, color, x, y, !mode) != 0)
2217 if ((y - y0) == size)
2261 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2270 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2279 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2286 handle->
debug_print(
"ssd1681: spi cmd data gpio write failed.\n");
2290 for (i = 0; i < 200; i++)
2292 for (j = 0; j < 25; j++)
2298 handle->
debug_print(
"ssd1681: spi write cmd failed.\n");
2310 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2317 handle->
debug_print(
"ssd1681: spi cmd data gpio write failed.\n");
2321 for (i = 0; i < 200; i++)
2323 for (j = 0; j < 25; j++)
2329 handle->
debug_print(
"ssd1681: spi write cmd failed.\n");
2341 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2348 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2387 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2396 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2405 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2412 handle->
debug_print(
"ssd1681: spi cmd data gpio write failed.\n");
2416 for (i = 0; i < 200; i++)
2418 for (j = 0; j < 25; j++)
2423 handle->
debug_print(
"ssd1681: spi write cmd failed.\n");
2435 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2442 handle->
debug_print(
"ssd1681: spi cmd data gpio write failed.\n");
2446 for (i = 0; i < 200; i++)
2448 for (j = 0; j < 25; j++)
2453 handle->
debug_print(
"ssd1681: spi write cmd failed.\n");
2465 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2472 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
2507 for (i = 0; i < 200; i++)
2509 for (j = 0; j < 25; j++)
2517 for (i = 0; i < 200; i++)
2519 for (j = 0; j < 25; j++)
2558 if ((x > 200) || (y > 200))
2560 handle->
debug_print(
"ssd1681: x or y is invalid.\n");
2567 temp = 1 << (7 - bx);
2623 if ((x > 200) || (y > 200))
2625 handle->
debug_print(
"ssd1681: x or y is invalid.\n");
2632 temp = 1 << (7 - bx);
2635 if ((handle->
black_gram[x][pos] & temp) != 0)
2646 if ((handle->
red_gram[x][pos] & temp) != 0)
2687 if((x > 199) || (y > 199))
2689 handle->
debug_print(
"ssd1681: x or y is invalid.\n");
2694 while ((len != 0) && (*str <=
'~') && (*str >=
' '))
2696 if (x > (199 - (font / 2)))
2701 if (y > (199 - font))
2705 if (a_ssd1681_gram_show_char(handle, color, x, y, *str, font, data) != 0)
2709 x += (uint8_t)(font / 2);
2748 if ((left > 199) || (top > 199))
2750 handle->
debug_print(
"ssd1681: left or top is invalid.\n");
2754 if ((right > 199) || (bottom > 199))
2756 handle->
debug_print(
"ssd1681: right or bottom is invalid.\n");
2760 if ((left > right) || (top > bottom))
2762 handle->
debug_print(
"ssd1681: left > right or top > bottom.\n");
2767 for (x = left; x <= right; x++)
2769 for (y = top; y <= bottom; y++)
2771 if (a_ssd1681_gram_draw_point(handle, color, x, y, data) != 0)
2812 if ((left > 199) || (top > 199))
2814 handle->
debug_print(
"ssd1681: left or top is invalid.\n");
2818 if ((right > 199) || (bottom > 199))
2820 handle->
debug_print(
"ssd1681: right or bottom is invalid.\n");
2824 if ((left > right) || (top > bottom))
2826 handle->
debug_print(
"ssd1681: left > right or top > bottom.\n");
2831 for (x = left; x <= right; x++)
2833 for (y = top; y <= bottom; y++)
2835 if (a_ssd1681_gram_draw_point(handle, color, x, y, *img) != 0)
2870 handle->
debug_print(
"ssd1681: spi_init is null.\n");
2876 handle->
debug_print(
"ssd1681: spi_deinit is null.\n");
2882 handle->
debug_print(
"ssd1681: spi_write_cmd is null.\n");
2888 handle->
debug_print(
"ssd1681: delay_ms is null.\n");
2894 handle->
debug_print(
"ssd1681: spi_cmd_data_gpio_init is null.\n");
2900 handle->
debug_print(
"ssd1681: spi_cmd_data_gpio_deinit is null.\n");
2906 handle->
debug_print(
"ssd1681: spi_cmd_data_gpio_write is null.\n");
2912 handle->
debug_print(
"ssd1681: reset_gpio_init is null.\n");
2918 handle->
debug_print(
"ssd1681: reset_gpio_deinit is null.\n");
2924 handle->
debug_print(
"ssd1681: reset_gpio_write is null.\n");
2930 handle->
debug_print(
"ssd1681: busy_gpio_init is null.\n");
2936 handle->
debug_print(
"ssd1681: busy_gpio_deinit is null.\n");
2942 handle->
debug_print(
"ssd1681: busy_gpio_read is null.\n");
2949 handle->
debug_print(
"ssd1681: spi cmd data gpio init failed.\n");
2955 handle->
debug_print(
"ssd1681: reset gpio init failed.\n");
2962 handle->
debug_print(
"ssd1681: busy gpio init failed.\n");
2971 handle->
debug_print(
"ssd1681: reset gpio write failed.\n");
2981 handle->
debug_print(
"ssd1681: reset gpio write failed.\n");
2992 handle->
debug_print(
"ssd1681: spi init failed.\n");
3037 handle->
debug_print(
"ssd1681: multiple write byte failed.\n");
3045 handle->
debug_print(
"ssd1681: reset gpio deinit failed.\n");
3051 handle->
debug_print(
"ssd1681: spi cmd data gpio deinit failed.\n");
3057 handle->
debug_print(
"ssd1681: busy gpio deinit failed.\n");
3064 handle->
debug_print(
"ssd1681: spi deinit failed.\n");
3105 for (i = 0; i < len; i++)
3147 for (i = 0; i < len; i++)
3189 for (i = 0; i < len; i++)
#define SSD1681_CMD_VCOM_SENSE
#define SSD1681_CMD_WRITE_REGISTER_FOR_VCOM_CONTROL
#define SSD1681_CMD_SOURCE_DRIVING_VOLTAGE_CONTROL
#define SSD1681_CMD_VCOM_SENSE_DURATION
#define SSD1681_CMD_LOAD_WS_OTP
#define SSD1681_CMD_MASTER_ACTIVATION
#define SSD1681_CMD_PROGRAM_WS_OTP
#define SSD1681_CMD_READ_REGISTER_FOR_INITIAL_CODE_SETTING
#define SSD1681_CMD_PROGRAM_VCOM_OTP
#define SSD1681_CMD_DATA_ENTRY_MODE_SETTING
#define SSD1681_CMD_READ_RAM
#define SSD1681_CMD_SW_RESET
#define SSD1681_CMD_PROGRAM_OTP_SELECTION
#define SSD1681_CMD_SET_RAM_X_ADDRESS_COUNTER
#define SSD1681_CMD_CRC_STATUS_READ
#define SSD1681_CMD_DEEP_SLEEP_MODE
#define SSD1681_CMD_SET_RAM_Y_ADDRESS_COUNTER
#define SSD1681_CMD_CRC_CALCULATION
#define SSD1681_CMD_WRITE_LUT_REGISTER
#define SSD1681_CMD_WRITE_RAM_BLACK
#define SSD1681_CMD_TEMPERATURE_SENSOR_CONTROL_WRITE_EXT
#define SSD1681_CMD_AUTO_WRITE_RED_RAM_FOR_REGULAR_PATTERN
#define SUPPLY_VOLTAGE_MAX
#define SSD1681_CMD_END_OPTION
#define SSD1681_CMD_OTP_PROGRAM_MODE
#define SSD1681_CMD_BOOSTER_SOFT_START_CONTROL
#define SSD1681_CMD_WRITE_REGISTER_FOR_INITIAL_CODE_SETTING
#define SSD1681_CMD_DISPLAY_UPDATA_CONTROL_1
#define SSD1681_CMD
chip command data definition
#define SSD1681_CMD_WRITE_RAM_RED
#define SSD1681_CMD_DISPLAY_UPDATA_CONTROL_2
#define SSD1681_CMD_GATE_DRIVING_VOLTAGE_CONTROL
#define SSD1681_CMD_WRITE_REGISTER_FOR_DISPLAY_OPTION
#define SSD1681_CMD_OTP_REGISTER_READ_FOR_DISPLAY_OPTION
#define MANUFACTURER_NAME
#define SUPPLY_VOLTAGE_MIN
#define SSD1681_CMD_TEMPERATURE_SENSOR_CONTROL
#define SSD1681_CMD_READ_RAM_OPTION
#define SSD1681_CMD_USER_ID_READ
#define SSD1681_CMD_VCI_DETECTION
#define SSD1681_CMD_BORDER_WAVEFORM_CONTROL
#define SSD1681_CMD_AUTO_WRITE_BW_RAM_FOR_REGULAR_PATTERN
#define SSD1681_CMD_TEMPERATURE_SENSOR_CONTROL_WRITE
#define SSD1681_CMD_STATUS_BIT_READ
#define SSD1681_CMD_SET_RAM_Y
#define SSD1681_CMD_SET_RAM_X
#define CHIP_NAME
chip information definition
#define SSD1681_CMD_INITIAL_CODE_SETTING_OTP_PROGRAM
#define SSD1681_CMD_HV_READY_DETECTION
#define SSD1681_CMD_TEMPERATURE_SENSOR_CONTROL_READ
#define SSD1681_CMD_WRITE_REGISTER_FOR_USER_ID
#define SSD1681_CMD_DRIVER_OUTPUT_CONTROL
chip command definition
#define SSD1681_CMD_WRITE_VCOM_REGISTER
driver ssd1681 header file
driver ssd1681 font header file
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
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
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
#define SSD1681_BUSY_MAX_DELAY_MS
ssd1681 busy max delay definition
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
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
#define SSD1681_BUSY_MAX_RETRY_TIMES
ssd1681 busy max retry times definition
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
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
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)
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v