43#define CHIP_NAME "Solomon Systech SSD1315"
44#define MANUFACTURER_NAME "Solomon Systech"
45#define SUPPLY_VOLTAGE_MIN 1.65f
46#define SUPPLY_VOLTAGE_MAX 3.5f
47#define MAX_CURRENT 1.00f
48#define TEMPERATURE_MIN -40.0f
49#define TEMPERATURE_MAX 85.0f
50#define DRIVER_VERSION 1000
61#define SSD1315_CMD_LOWER_COLUMN_START_ADDRESS 0x00
62#define SSD1315_CMD_HIGHER_COLUMN_START_ADDRESS 0x10
63#define SSD1315_CMD_MEMORY_ADDRESSING_MODE 0x20
64#define SSD1315_CMD_SET_COLUMN_ADDRESS 0x21
65#define SSD1315_CMD_SET_PAGE_ADDRESS 0x22
66#define SSD1315_CMD_SET_FADE_OUT_AND_BLINKING 0x23
67#define SSD1315_CMD_RIGHT_HORIZONTAL_SCROLL 0x26
68#define SSD1315_CMD_LEFT_HORIZONTAL_SCROLL 0x27
69#define SSD1315_CMD_VERTICAL_RIGHT_HORIZONTAL_SCROLL 0x29
70#define SSD1315_CMD_VERTICAL_LEFT_HORIZONTAL_SCROLL 0x2A
71#define SSD1315_CMD_RIGHT_HORIZONTAL_SCROLL_SETUP 0x2C
72#define SSD1315_CMD_LEFT_HORIZONTAL_SCROLL_SETUP 0x2D
73#define SSD1315_CMD_DEACTIVATE_SCROLL 0x2E
74#define SSD1315_CMD_ACTIVATE_SCROLL 0x2F
75#define SSD1315_CMD_DISPLAY_START_LINE 0x40
76#define SSD1315_CMD_CONTRAST_CONTROL 0x81
77#define SSD1315_CMD_CHARGE_PUMP_SETTING 0x8D
78#define SSD1315_CMD_COLUMN_0_MAPPED_TO_SEG0 0xA0
79#define SSD1315_CMD_COLUMN_127_MAPPED_TO_SEG0 0xA1
80#define SSD1315_CMD_VERTICAL_SCROLL_AREA 0xA3
81#define SSD1315_CMD_ENTIRE_DISPLAY_OFF 0xA4
82#define SSD1315_CMD_ENTIRE_DISPLAY_ON 0xA5
83#define SSD1315_CMD_NORMAL_DISPLAY 0xA6
84#define SSD1315_CMD_INVERSE_DISPLAY 0xA7
85#define SSD1315_CMD_MULTIPLEX_RATIO 0xA8
86#define SSD1315_CMD_INTERNAL_IREF_SETTING 0xAD
87#define SSD1315_CMD_DISPLAY_OFF 0xAE
88#define SSD1315_CMD_DISPLAY_ON 0xAF
89#define SSD1315_CMD_PAGE_ADDR 0xB0
90#define SSD1315_CMD_SCAN_DIRECTION_COM0_START 0xC0
91#define SSD1315_CMD_SCAN_DIRECTION_COMN_1_START 0xC8
92#define SSD1315_CMD_DISPLAY_OFFSET 0xD3
93#define SSD1315_CMD_DISPLAY_CLOCK_DIVIDE 0xD5
94#define SSD1315_CMD_SET_ZOOM_IN 0xD6
95#define SSD1315_CMD_PRE_CHARGE_PERIOD 0xD9
96#define SSD1315_CMD_COM_PINS_CONF 0xDA
97#define SSD1315_CMD_COMH_DESLECT_LEVEL 0xDB
98#define SSD1315_CMD_NOP 0xE3
110static uint8_t a_ssd1315_write_byte(
ssd1315_handle_t *handle, uint8_t data, uint8_t cmd)
173static uint8_t a_ssd1315_multiple_write_byte(
ssd1315_handle_t *handle, uint8_t *data, uint8_t len, uint8_t cmd)
236static uint8_t a_ssd1315_gram_draw_point(
ssd1315_handle_t *handle, uint8_t x, uint8_t y, uint8_t data)
247 handle->
gram[x][pos] |= temp;
251 handle->
gram[x][pos] &= ~temp;
270static uint8_t a_ssd1315_gram_show_char(
ssd1315_handle_t *handle, uint8_t x, uint8_t y, uint8_t chr, uint8_t size, uint8_t mode)
274 uint8_t csize = (size / 8 + ((size % 8) ? 1 : 0)) * (size / 2);
277 for (t = 0; t < csize; t++)
281 temp = gsc_ssd1315_ascii_1206[chr][t];
285 temp = gsc_ssd1315_ascii_1608[chr][t];
289 temp = gsc_ssd1315_ascii_2412[chr][t];
295 for (t1 = 0; t1 < 8; t1++)
297 if ((temp & 0x80) != 0)
299 if (a_ssd1315_gram_draw_point(handle, x, y, mode) != 0)
306 if (a_ssd1315_gram_draw_point(handle, x, y, !mode) != 0)
313 if ((y - y0) == size)
350 for (i = 0; i < 8; i++)
354 handle->
debug_print(
"ssd1315: write byte failed.\n");
360 handle->
debug_print(
"ssd1315: write byte failed.\n");
366 handle->
debug_print(
"ssd1315: write byte failed.\n");
370 for (n = 0; n < 128; n++)
372 handle->
gram[n][i] = 0x00;
375 handle->
debug_print(
"ssd1315: write byte failed.\n");
409 for (i = 0; i < 8; i++)
413 handle->
debug_print(
"ssd1315: write byte failed.\n");
419 handle->
debug_print(
"ssd1315: write byte failed.\n");
425 handle->
debug_print(
"ssd1315: write byte failed.\n");
429 for (n = 0; n < 128; n++)
433 handle->
debug_print(
"ssd1315: write byte failed.\n");
471 if ((x > 127) || (y > 63))
473 handle->
debug_print(
"ssd1315: x or y is invalid.\n");
483 handle->
gram[x][pos] |= temp;
487 handle->
gram[x][pos] &= ~temp;
491 handle->
debug_print(
"ssd1315: write byte failed.\n");
497 handle->
debug_print(
"ssd1315: write byte failed.\n");
504 handle->
debug_print(
"ssd1315: write byte failed.\n");
510 handle->
debug_print(
"ssd1315: write byte failed.\n");
548 if ((x > 127) || (y > 63))
550 handle->
debug_print(
"ssd1315: x or y is invalid.\n");
558 if ((handle->
gram[x][pos] & temp) != 0)
598 if ((x > 127) || (y > 63))
600 handle->
debug_print(
"ssd1315: x or y is invalid.\n");
610 handle->
gram[x][pos] |= temp;
614 handle->
gram[x][pos] &= ~temp;
648 if ((x > 127) || (y > 63))
650 handle->
debug_print(
"ssd1315: x or y is invalid.\n");
658 if ((handle->
gram[x][pos] & temp) != 0)
697 if((x > 127) || (y > 63))
699 handle->
debug_print(
"ssd1315: x or y is invalid.\n");
704 while ((len != 0) && (*str <=
'~') && (*str >=
' '))
706 if (x > (127 - (font / 2)))
715 if (a_ssd1315_gram_show_char(handle, x, y, *str, font, color) != 0)
719 x += (uint8_t)(font / 2);
757 if ((left > 127) || (top > 63))
759 handle->
debug_print(
"ssd1315: left or top is invalid.\n");
763 if ((right > 127) || (bottom > 63))
765 handle->
debug_print(
"ssd1315: right or bottom is invalid.\n");
769 if ((left > right) || (top > bottom))
771 handle->
debug_print(
"ssd1315: left > right or top > bottom.\n");
776 for (x = left; x <= right; x++)
778 for (y = top; y <= bottom; y++)
780 if (a_ssd1315_gram_draw_point(handle, x, y, color) != 0)
820 if ((left > 127) || (top > 63))
822 handle->
debug_print(
"ssd1315: left or top is invalid.\n");
826 if ((right > 127) || (bottom > 63))
828 handle->
debug_print(
"ssd1315: right or bottom is invalid.\n");
832 if ((left > right) || (top > bottom))
834 handle->
debug_print(
"ssd1315: left > right or top > bottom.\n");
839 for (x = left; x <= right; x++)
841 for (y = top; y <= bottom; y++)
843 if (a_ssd1315_gram_draw_point(handle, x, y, *img) != 0)
879 handle->
debug_print(
"ssd1315: iic_init is null.\n");
885 handle->
debug_print(
"ssd1315: iic_deinit is null.\n");
891 handle->
debug_print(
"ssd1315: iic_write is null.\n");
897 handle->
debug_print(
"ssd1315: spi_init is null.\n");
903 handle->
debug_print(
"ssd1315: spi_deinit is null.\n");
909 handle->
debug_print(
"ssd1315: spi_write_cmd is null.\n");
915 handle->
debug_print(
"ssd1315: delay_ms is null.\n");
921 handle->
debug_print(
"ssd1315: spi_cmd_data_gpio_init is null.\n");
927 handle->
debug_print(
"ssd1315: spi_cmd_data_gpio_deinit is null.\n");
933 handle->
debug_print(
"ssd1315: spi_cmd_data_gpio_write is null.\n");
939 handle->
debug_print(
"ssd1315: reset_gpio_init is null.\n");
945 handle->
debug_print(
"ssd1315: reset_gpio_deinit is null.\n");
951 handle->
debug_print(
"ssd1315: reset_gpio_write is null.\n");
958 handle->
debug_print(
"ssd1315: spi cmd data gpio init failed.\n");
964 handle->
debug_print(
"ssd1315: reset gpio init failed.\n");
971 handle->
debug_print(
"ssd1315: reset gpio write failed.\n");
980 handle->
debug_print(
"ssd1315: reset gpio write failed.\n");
990 handle->
debug_print(
"ssd1315: iic init failed.\n");
1001 handle->
debug_print(
"ssd1315: spi init failed.\n");
1010 handle->
debug_print(
"ssd1315: interface is invalid.\n");
1049 buf[1] = 0x10 | (0 << 2);
1050 if (a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD) != 0)
1052 handle->
debug_print(
"ssd1315: write command failed.\n");
1058 handle->
debug_print(
"ssd1315: write command failed.\n");
1064 handle->
debug_print(
"ssd1315: reset gpio deinit failed.\n");
1070 handle->
debug_print(
"ssd1315: spi cmd data gpio deinit failed.\n");
1078 handle->
debug_print(
"ssd1315: iic deinit failed.\n");
1087 handle->
debug_print(
"ssd1315: spi deinit failed.\n");
1094 handle->
debug_print(
"ssd1315: interface is invalid.\n");
1119 handle->
iic_spi = (uint8_t)interface;
1161 handle->
iic_addr = (uint8_t)addr_pin;
1211 handle->
debug_print(
"ssd1315: addr is invalid.\n");
1243 handle->
debug_print(
"ssd1315: addr is invalid.\n");
1278 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
1307 if (start_addr > 0x7F)
1309 handle->
debug_print(
"ssd1315: start addr is invalid.\n");
1313 if (end_addr > 0x7F)
1315 handle->
debug_print(
"ssd1315: end addr is invalid.\n");
1321 buf[1] = start_addr & 0x7F;
1322 buf[2] = end_addr & 0x7F;
1324 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 3,
SSD1315_CMD);
1353 if (start_addr > 0x07)
1355 handle->
debug_print(
"ssd1315: start addr is invalid.\n");
1359 if (end_addr > 0x07)
1361 handle->
debug_print(
"ssd1315: end addr is invalid.\n");
1367 buf[1] = start_addr & 0x07;
1368 buf[2] = end_addr & 0x07;
1370 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 3,
SSD1315_CMD);
1400 handle->
debug_print(
"ssd1315: frames is invalid.\n");
1406 buf[1] = (uint8_t)((mode << 4) | (frames & 0x0F));
1408 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
1439 if (start_page_addr > 0x07)
1441 handle->
debug_print(
"ssd1315: start page addr is invalid.\n");
1445 if (end_page_addr > 0x07)
1447 handle->
debug_print(
"ssd1315: end page addr is invalid.\n");
1454 buf[2] = start_page_addr & 0x07;
1455 buf[3] = frames & 0x07;
1456 buf[4] = end_page_addr & 0x07;
1460 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 7,
SSD1315_CMD);
1491 if (start_page_addr > 0x07)
1493 handle->
debug_print(
"ssd1315: start_page_addr is invalid.\n");
1497 if (end_page_addr > 0x07)
1499 handle->
debug_print(
"ssd1315: end_page_addr is invalid.\n");
1506 buf[2] = start_page_addr & 0x07;
1507 buf[3] = frames & 0x07;
1508 buf[4] = end_page_addr & 0x07;
1512 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 7,
SSD1315_CMD);
1539 uint8_t start_page_addr, uint8_t end_page_addr,
1541 uint8_t start_column_addr, uint8_t end_column_addr)
1553 if (start_page_addr > 0x07)
1555 handle->
debug_print(
"ssd1315: start_page_addr is invalid.\n");
1559 if (end_page_addr > 0x07)
1561 handle->
debug_print(
"ssd1315: end_page_addr is invalid.\n");
1565 if (vertical_scrolling_offset > 0x3F)
1567 handle->
debug_print(
"ssd1315: vertical scrolling offset is invalid.\n");
1571 if (start_column_addr > 0x7F)
1573 handle->
debug_print(
"ssd1315: start column addr is invalid.\n");
1577 if (end_column_addr > 0x7F)
1579 handle->
debug_print(
"ssd1315: end column addr is invalid.\n");
1586 buf[2] = start_page_addr & 0x07;
1587 buf[3] = frames & 0x07;
1588 buf[4] = end_page_addr & 0x07;
1589 buf[5] = vertical_scrolling_offset & 0x3F;
1590 buf[6] = start_column_addr & 0x7F;
1591 buf[7] = end_column_addr & 0x7F;
1593 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 8,
SSD1315_CMD);
1620 uint8_t start_page_addr, uint8_t end_page_addr,
1622 uint8_t start_column_addr, uint8_t end_column_addr)
1634 if (start_page_addr > 0x07)
1636 handle->
debug_print(
"ssd1315: start_page_addr is invalid.\n");
1640 if (end_page_addr > 0x07)
1642 handle->
debug_print(
"ssd1315: end_page_addr is invalid.\n");
1646 if (vertical_scrolling_offset > 0x3F)
1648 handle->
debug_print(
"ssd1315: vertical scrolling offset is invalid.\n");
1652 if (start_column_addr > 0x7F)
1654 handle->
debug_print(
"ssd1315: start column addr is invalid.\n");
1658 if (end_column_addr > 0x7F)
1660 handle->
debug_print(
"ssd1315: end column addr is invalid.\n");
1667 buf[2] = start_page_addr & 0x07;
1668 buf[3] = frames & 0x07;
1669 buf[4] = end_page_addr & 0x07;
1670 buf[5] = vertical_scrolling_offset & 0x3F;
1671 buf[6] = start_column_addr & 0x7F;
1672 buf[7] = end_column_addr & 0x7F;
1674 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 8,
SSD1315_CMD);
1749 handle->
debug_print(
"ssd1315: line is invalid.\n");
1784 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
1813 buf[1] = (uint8_t)(0x10 | (enable << 2) |
1814 (((mode >> 1) & 0x1) << 7) | (((mode >> 0) & 0x1) << 0));
1816 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
1878 if (start_row > 0x3F)
1880 handle->
debug_print(
"ssd1315: start_row is invalid.\n");
1886 handle->
debug_print(
"ssd1315: end_row is invalid.\n");
1890 if (end_row > start_row)
1892 handle->
debug_print(
"ssd1315: end_row > start_row.\n");
1901 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 3,
SSD1315_CMD);
1993 if (multiplex < 0x0F)
1995 handle->
debug_print(
"ssd1315: multiplex is too small.\n");
1999 if (multiplex > 0x3F)
2001 handle->
debug_print(
"ssd1315: multiplex is too large.\n");
2009 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
2068 handle->
debug_print(
"ssd1315: addr is invalid.\n");
2134 handle->
debug_print(
"ssd1315: offset is invalid.\n");
2142 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
2171 if (oscillator_frequency> 0x0F)
2173 handle->
debug_print(
"ssd1315: oscillator frequency is invalid.\n");
2177 if (clock_divide> 0x0F)
2179 handle->
debug_print(
"ssd1315: clock divide is invalid.\n");
2185 buf[1] = (oscillator_frequency << 4) | clock_divide;
2187 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
2217 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
2246 if (phase1_period> 0x0F)
2248 handle->
debug_print(
"ssd1315: phase1 period is invalid.\n");
2252 if (phase2_period> 0x0F)
2254 handle->
debug_print(
"ssd1315: phase2 period is invalid.\n");
2260 buf[1] = (phase2_period << 4) | phase1_period;
2262 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
2291 buf[1] = (uint8_t)((conf << 4) | (remap << 5) | 0x02);
2293 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
2321 buf[1] = (uint8_t)(level << 4);
2323 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
2352 buf[1] = (uint8_t)((enable << 4) | (iref << 5));
2354 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 2,
SSD1315_CMD);
2376 uint8_t start_column_addr, uint8_t end_column_addr)
2390 handle->
debug_print(
"ssd1315: start_page > 5.\n");
2400 if (start_column_addr > 0x7F)
2402 handle->
debug_print(
"ssd1315: start_column_addr > 0x7F.\n");
2406 if (end_column_addr > 0x7F)
2408 handle->
debug_print(
"ssd1315: end_column_addr > 0x7F.\n");
2415 buf[2] = start_page;
2418 buf[5] = start_column_addr;
2419 buf[6] = end_column_addr;
2421 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 7,
SSD1315_CMD);
2443 uint8_t start_column_addr, uint8_t end_column_addr)
2457 handle->
debug_print(
"ssd1315: start_page > 5.\n");
2467 if (start_column_addr > 0x7F)
2469 handle->
debug_print(
"ssd1315: start_column_addr > 0x7F.\n");
2473 if (end_column_addr > 0x7F)
2475 handle->
debug_print(
"ssd1315: end_column_addr > 0x7F.\n");
2482 buf[2] = start_page;
2485 buf[5] = start_column_addr;
2486 buf[6] = end_column_addr;
2488 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, 7,
SSD1315_CMD);
2514 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, len,
SSD1315_CMD);
2540 return a_ssd1315_multiple_write_byte(handle, (uint8_t *)buf, len,
SSD1315_DATA);
#define SSD1315_CMD_MULTIPLEX_RATIO
#define SSD1315_CMD_DEACTIVATE_SCROLL
#define SSD1315_CMD_COM_PINS_CONF
#define SSD1315_CMD_COLUMN_0_MAPPED_TO_SEG0
#define SSD1315_CMD_SET_PAGE_ADDRESS
#define SSD1315_CMD_PRE_CHARGE_PERIOD
#define SSD1315_CMD_COLUMN_127_MAPPED_TO_SEG0
#define SSD1315_CMD_DISPLAY_OFFSET
#define SSD1315_CMD_COMH_DESLECT_LEVEL
#define SSD1315_CMD_LEFT_HORIZONTAL_SCROLL
#define SSD1315_CMD_LOWER_COLUMN_START_ADDRESS
chip command definition
#define SSD1315_CMD_DISPLAY_START_LINE
#define SSD1315_CMD_ENTIRE_DISPLAY_ON
#define SUPPLY_VOLTAGE_MAX
#define SSD1315_CMD_ENTIRE_DISPLAY_OFF
#define SSD1315_CMD_VERTICAL_LEFT_HORIZONTAL_SCROLL
#define SSD1315_CMD_SET_FADE_OUT_AND_BLINKING
#define SSD1315_CMD_CONTRAST_CONTROL
#define SSD1315_CMD_MEMORY_ADDRESSING_MODE
#define SSD1315_CMD_PAGE_ADDR
#define SSD1315_CMD_SET_ZOOM_IN
#define SSD1315_CMD_ACTIVATE_SCROLL
#define SSD1315_CMD
chip command data definition
#define SSD1315_CMD_DISPLAY_CLOCK_DIVIDE
#define SSD1315_CMD_RIGHT_HORIZONTAL_SCROLL
#define SSD1315_CMD_NORMAL_DISPLAY
#define SSD1315_CMD_DISPLAY_ON
#define MANUFACTURER_NAME
#define SUPPLY_VOLTAGE_MIN
#define SSD1315_CMD_LEFT_HORIZONTAL_SCROLL_SETUP
#define SSD1315_CMD_VERTICAL_SCROLL_AREA
#define SSD1315_CMD_SCAN_DIRECTION_COMN_1_START
#define SSD1315_CMD_CHARGE_PUMP_SETTING
#define SSD1315_CMD_INVERSE_DISPLAY
#define SSD1315_CMD_INTERNAL_IREF_SETTING
#define SSD1315_CMD_SCAN_DIRECTION_COM0_START
#define SSD1315_CMD_VERTICAL_RIGHT_HORIZONTAL_SCROLL
#define SSD1315_CMD_DISPLAY_OFF
#define CHIP_NAME
chip information definition
#define SSD1315_CMD_SET_COLUMN_ADDRESS
#define SSD1315_CMD_HIGHER_COLUMN_START_ADDRESS
#define SSD1315_CMD_RIGHT_HORIZONTAL_SCROLL_SETUP
driver ssd1315 header file
driver ssd1315 font header file
uint8_t ssd1315_gram_write_point(ssd1315_handle_t *handle, uint8_t x, uint8_t y, uint8_t data)
write a point in the gram
uint8_t ssd1315_clear(ssd1315_handle_t *handle)
clear the screen
uint8_t ssd1315_set_entire_display(ssd1315_handle_t *handle, ssd1315_entire_display_t enable)
enable or disable the entire display
ssd1315_fade_blinking_mode_t
ssd1315 fade blinking mode enumeration definition
ssd1315_iref_value_t
ssd1315 iref value enumeration definition
uint8_t ssd1315_set_vertical_scroll_area(ssd1315_handle_t *handle, uint8_t start_row, uint8_t end_row)
set the vertical scroll area
ssd1315_interface_t
ssd1315 interface enumeration definition
uint8_t ssd1315_gram_read_point(ssd1315_handle_t *handle, uint8_t x, uint8_t y, uint8_t *data)
read a point from the gram
uint8_t ssd1315_set_zoom_in(ssd1315_handle_t *handle, ssd1315_zoom_in_t zoom)
set the display zoom in
uint8_t ssd1315_set_memory_addressing_mode(ssd1315_handle_t *handle, ssd1315_memory_addressing_mode_t mode)
set the memory addressing mode
ssd1315_scan_direction_t
ssd1315 scan direction enumeration definition
uint8_t ssd1315_set_left_horizontal_scroll(ssd1315_handle_t *handle, uint8_t start_page_addr, uint8_t end_page_addr, ssd1315_scroll_frame_t frames)
set the left horizontal scroll
uint8_t ssd1315_set_left_horizontal_scroll_one_column(ssd1315_handle_t *handle, uint8_t start_page, uint8_t end_page, uint8_t start_column_addr, uint8_t end_column_addr)
set left horizontal scroll by one column
uint8_t ssd1315_set_display_mode(ssd1315_handle_t *handle, ssd1315_display_mode_t mode)
set the display mode
uint8_t ssd1315_read_point(ssd1315_handle_t *handle, uint8_t x, uint8_t y, uint8_t *data)
read a point
uint8_t ssd1315_init(ssd1315_handle_t *handle)
initialize the chip
uint8_t ssd1315_deactivate_scroll(ssd1315_handle_t *handle)
deactivate the scroll
ssd1315_display_mode_t
ssd1315 display mode enumeration definition
ssd1315_memory_addressing_mode_t
ssd1315 memory addressing mode enumeration definition
uint8_t ssd1315_set_multiplex_ratio(ssd1315_handle_t *handle, uint8_t multiplex)
set the multiplex ratio
uint8_t ssd1315_set_display_start_line(ssd1315_handle_t *handle, uint8_t l)
set the display start line
uint8_t ssd1315_set_segment_remap(ssd1315_handle_t *handle, ssd1315_segment_column_remap_t remap)
set the segment remap
uint8_t ssd1315_set_display(ssd1315_handle_t *handle, ssd1315_display_t on_off)
enable or disable the display
uint8_t ssd1315_set_interface(ssd1315_handle_t *handle, ssd1315_interface_t interface)
set the chip interface
uint8_t ssd1315_get_addr_pin(ssd1315_handle_t *handle, ssd1315_address_t *addr_pin)
get the chip iic address
uint8_t ssd1315_set_iref(ssd1315_handle_t *handle, ssd1315_iref_t enable, ssd1315_iref_value_t iref)
set iref
uint8_t ssd1315_set_charge_pump(ssd1315_handle_t *handle, ssd1315_charge_pump_t enable, ssd1315_charge_pump_mode_t mode)
enable or disable the charge pump
uint8_t ssd1315_gram_fill_rect(ssd1315_handle_t *handle, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t color)
fill a rectangle in the gram
uint8_t ssd1315_set_vertical_right_horizontal_scroll(ssd1315_handle_t *handle, ssd1315_horizontal_scroll_t enable, uint8_t start_page_addr, uint8_t end_page_addr, uint8_t vertical_scrolling_offset, ssd1315_scroll_frame_t frames, uint8_t start_column_addr, uint8_t end_column_addr)
set the vertical right horizontal scroll
struct ssd1315_handle_s ssd1315_handle_t
ssd1315 handle structure definition
uint8_t ssd1315_set_precharge_period(ssd1315_handle_t *handle, uint8_t phase1_period, uint8_t phase2_period)
set the pre charge period
ssd1315_scroll_frame_t
ssd1315 scroll frame enumeration definition
uint8_t ssd1315_set_scan_direction(ssd1315_handle_t *handle, ssd1315_scan_direction_t dir)
set the scan direction
ssd1315_pin_conf_t
ssd1315 pin conf enumeration definition
uint8_t ssd1315_set_right_horizontal_scroll(ssd1315_handle_t *handle, uint8_t start_page_addr, uint8_t end_page_addr, ssd1315_scroll_frame_t frames)
set the right horizontal scroll
uint8_t ssd1315_set_display_clock(ssd1315_handle_t *handle, uint8_t oscillator_frequency, uint8_t clock_divide)
set the display clock
ssd1315_deselect_level_t
ssd1315 deselect level enumeration definition
uint8_t ssd1315_set_page_address_range(ssd1315_handle_t *handle, uint8_t start_addr, uint8_t end_addr)
set the page address range
uint8_t ssd1315_gram_write_string(ssd1315_handle_t *handle, uint8_t x, uint8_t y, char *str, uint16_t len, uint8_t color, ssd1315_font_t font)
draw a string in the gram
uint8_t ssd1315_set_fade_blinking_mode(ssd1315_handle_t *handle, ssd1315_fade_blinking_mode_t mode, uint8_t frames)
set the fade blinking mode
uint8_t ssd1315_set_high_column_start_address(ssd1315_handle_t *handle, uint8_t addr)
set the high column start address
uint8_t ssd1315_activate_scroll(ssd1315_handle_t *handle)
activate the scroll
uint8_t ssd1315_set_low_column_start_address(ssd1315_handle_t *handle, uint8_t addr)
set the low column start address
ssd1315_font_t
ssd1315 font enumeration definition
ssd1315_zoom_in_t
ssd1315 zoom in enumeration definition
uint8_t ssd1315_info(ssd1315_info_t *info)
get chip's information
uint8_t ssd1315_set_display_offset(ssd1315_handle_t *handle, uint8_t offset)
set the display offset
ssd1315_charge_pump_t
ssd1315 charge pump enumeration definition
uint8_t ssd1315_set_addr_pin(ssd1315_handle_t *handle, ssd1315_address_t addr_pin)
set the chip iic address
ssd1315_left_right_remap_t
ssd1315 left right remap enumeration definition
uint8_t ssd1315_set_right_horizontal_scroll_one_column(ssd1315_handle_t *handle, uint8_t start_page, uint8_t end_page, uint8_t start_column_addr, uint8_t end_column_addr)
set right horizontal scroll by one column
uint8_t ssd1315_write_point(ssd1315_handle_t *handle, uint8_t x, uint8_t y, uint8_t data)
write a point
uint8_t ssd1315_get_interface(ssd1315_handle_t *handle, ssd1315_interface_t *interface)
get the chip interface
uint8_t ssd1315_gram_update(ssd1315_handle_t *handle)
update the gram data
ssd1315_address_t
ssd1315 address pin enumeration definition
uint8_t ssd1315_set_contrast(ssd1315_handle_t *handle, uint8_t contrast)
set the display contrast
struct ssd1315_info_s ssd1315_info_t
ssd1315 information structure definition
ssd1315_segment_column_remap_t
ssd1315 segment column remap enumeration definition
uint8_t ssd1315_set_vertical_left_horizontal_scroll(ssd1315_handle_t *handle, ssd1315_horizontal_scroll_t enable, uint8_t start_page_addr, uint8_t end_page_addr, uint8_t vertical_scrolling_offset, ssd1315_scroll_frame_t frames, uint8_t start_column_addr, uint8_t end_column_addr)
set the vertical left horizontal scroll
uint8_t ssd1315_set_com_pins_hardware_conf(ssd1315_handle_t *handle, ssd1315_pin_conf_t conf, ssd1315_left_right_remap_t remap)
set the hardware com pins
ssd1315_display_t
ssd1315 display enumeration definition
uint8_t ssd1315_deinit(ssd1315_handle_t *handle)
close the chip
uint8_t ssd1315_set_page_address(ssd1315_handle_t *handle, uint8_t addr)
set the page address
uint8_t ssd1315_gram_draw_picture(ssd1315_handle_t *handle, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t *img)
draw a picture in the gram
uint8_t ssd1315_set_deselect_level(ssd1315_handle_t *handle, ssd1315_deselect_level_t level)
set the deselect level
ssd1315_horizontal_scroll_t
ssd1315 horizontal scroll enumeration definition
ssd1315_entire_display_t
ssd1315 entire display enumeration definition
ssd1315_iref_t
ssd1315 iref enumeration definition
uint8_t ssd1315_set_column_address_range(ssd1315_handle_t *handle, uint8_t start_addr, uint8_t end_addr)
set the column address range
ssd1315_charge_pump_mode_t
ssd1315 charge pump mode enumeration definition
uint8_t ssd1315_write_data(ssd1315_handle_t *handle, uint8_t *buf, uint8_t len)
write the register data
uint8_t ssd1315_write_cmd(ssd1315_handle_t *handle, uint8_t *buf, uint8_t len)
write the register command
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* spi_cmd_data_gpio_deinit)(void)
uint8_t(* reset_gpio_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* iic_init)(void)
uint8_t(* spi_deinit)(void)
uint8_t(* reset_gpio_init)(void)
uint8_t(* spi_cmd_data_gpio_init)(void)
uint8_t(* spi_write_cmd)(uint8_t *buf, uint16_t len)
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* spi_cmd_data_gpio_write)(uint8_t value)
uint8_t(* reset_gpio_write)(uint8_t value)
uint8_t(* iic_deinit)(void)
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v