LibDriver SSD1309
Loading...
Searching...
No Matches
driver_ssd1309.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_SSD1309_H
38#define DRIVER_SSD1309_H
39
40#include <stdint.h>
41#include <stdio.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
67
76
80typedef enum
81{
85
95
110
119
128
137
146
155
164
173
183
194
198typedef enum
199{
204
208typedef struct ssd1309_handle_s
209{
210 uint8_t (*iic_init)(void);
211 uint8_t (*iic_deinit)(void);
212 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
213 uint8_t (*spi_init)(void);
214 uint8_t (*spi_deinit)(void);
215 uint8_t (*spi_write_cmd)(uint8_t *buf, uint16_t len);
216 uint8_t (*spi_cmd_data_gpio_init)(void);
217 uint8_t (*spi_cmd_data_gpio_deinit)(void);
218 uint8_t (*spi_cmd_data_gpio_write)(uint8_t value);
219 uint8_t (*reset_gpio_init)(void);
220 uint8_t (*reset_gpio_deinit)(void);
221 uint8_t (*reset_gpio_write)(uint8_t value);
222 void (*debug_print)(const char *const fmt, ...);
223 void (*delay_ms)(uint32_t ms);
224 uint8_t inited;
225 uint8_t iic_addr;
226 uint8_t iic_spi;
227 uint8_t gram[128][8];
229
245
249
256
263#define DRIVER_SSD1309_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
264
271#define DRIVER_SSD1309_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
272
279#define DRIVER_SSD1309_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
280
287#define DRIVER_SSD1309_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
288
295#define DRIVER_SSD1309_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
296
303#define DRIVER_SSD1309_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
304
311#define DRIVER_SSD1309_LINK_SPI_WRITE_COMMAND(HANDLE, FUC) (HANDLE)->spi_write_cmd = FUC
312
319#define DRIVER_SSD1309_LINK_SPI_COMMAND_DATA_GPIO_INIT(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_init = FUC
320
327#define DRIVER_SSD1309_LINK_SPI_COMMAND_DATA_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_deinit = FUC
328
335#define DRIVER_SSD1309_LINK_SPI_COMMAND_DATA_GPIO_WRITE(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_write = FUC
336
343#define DRIVER_SSD1309_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
344
351#define DRIVER_SSD1309_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
352
359#define DRIVER_SSD1309_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
360
367#define DRIVER_SSD1309_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
368
375#define DRIVER_SSD1309_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
376
380
387
396uint8_t ssd1309_info(ssd1309_info_t *info);
397
408
419
430
441
455uint8_t ssd1309_init(ssd1309_handle_t *handle);
456
471uint8_t ssd1309_deinit(ssd1309_handle_t *handle);
472
483uint8_t ssd1309_clear(ssd1309_handle_t *handle);
484
499uint8_t ssd1309_write_point(ssd1309_handle_t *handle, uint8_t x, uint8_t y, uint8_t data);
500
515uint8_t ssd1309_read_point(ssd1309_handle_t *handle, uint8_t x, uint8_t y, uint8_t *data);
516
531uint8_t ssd1309_gram_write_point(ssd1309_handle_t *handle, uint8_t x, uint8_t y, uint8_t data);
532
547uint8_t ssd1309_gram_read_point(ssd1309_handle_t *handle, uint8_t x, uint8_t y, uint8_t *data);
548
566uint8_t ssd1309_gram_write_string(ssd1309_handle_t *handle, uint8_t x, uint8_t y, char *str, uint16_t len, uint8_t color, ssd1309_font_t font);
567
586uint8_t ssd1309_gram_fill_rect(ssd1309_handle_t *handle, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t color);
587
606uint8_t ssd1309_gram_draw_picture(ssd1309_handle_t *handle, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t *img);
607
619
632uint8_t ssd1309_set_low_column_start_address(ssd1309_handle_t *handle, uint8_t addr);
633
646uint8_t ssd1309_set_high_column_start_address(ssd1309_handle_t *handle, uint8_t addr);
647
660
675uint8_t ssd1309_set_column_address_range(ssd1309_handle_t *handle, uint8_t start_addr, uint8_t end_addr);
676
691uint8_t ssd1309_set_page_address_range(ssd1309_handle_t *handle, uint8_t start_addr, uint8_t end_addr);
692
715uint8_t ssd1309_set_right_horizontal_scroll(ssd1309_handle_t *handle, uint8_t start_page_addr,
716 uint8_t end_page_addr, ssd1309_scroll_frame_t frames,
717 uint8_t start_column_addr, uint8_t end_column_addr);
718
741uint8_t ssd1309_set_left_horizontal_scroll(ssd1309_handle_t *handle, uint8_t start_page_addr,
742 uint8_t end_page_addr, ssd1309_scroll_frame_t frames,
743 uint8_t start_column_addr, uint8_t end_column_addr);
744
772 uint8_t start_page_addr, uint8_t end_page_addr,
773 uint8_t rows, ssd1309_scroll_frame_t frames,
774 uint8_t start_column_addr, uint8_t end_column_addr);
775
803 uint8_t start_page_addr, uint8_t end_page_addr,
804 uint8_t rows, ssd1309_scroll_frame_t frames,
805 uint8_t start_column_addr, uint8_t end_column_addr);
806
818
830
843uint8_t ssd1309_set_display_start_line(ssd1309_handle_t *handle, uint8_t l);
844
856uint8_t ssd1309_set_contrast(ssd1309_handle_t *handle, uint8_t contrast);
857
870
888uint8_t ssd1309_set_vertical_scroll_area(ssd1309_handle_t *handle, uint8_t start_row, uint8_t end_row);
889
902
915
929uint8_t ssd1309_set_multiplex_ratio(ssd1309_handle_t *handle, uint8_t multiplex);
930
943
956uint8_t ssd1309_set_page_address(ssd1309_handle_t *handle, uint8_t addr);
957
970
983uint8_t ssd1309_set_display_offset(ssd1309_handle_t *handle, uint8_t offset);
984
1000uint8_t ssd1309_set_display_clock(ssd1309_handle_t *handle, uint8_t oscillator_frequency, uint8_t clock_divide);
1001
1017uint8_t ssd1309_set_precharge_period(ssd1309_handle_t *handle, uint8_t phase1_period, uint8_t phase2_period);
1018
1032
1045
1067uint8_t ssd1309_set_right_horizontal_scroll_one_column(ssd1309_handle_t *handle, uint8_t start_page_addr,
1068 uint8_t end_page_addr, uint8_t start_column_addr,
1069 uint8_t end_column_addr);
1070
1092uint8_t ssd1309_set_left_horizontal_scroll_one_column(ssd1309_handle_t *handle, uint8_t start_page_addr,
1093 uint8_t end_page_addr, uint8_t start_column_addr,
1094 uint8_t end_column_addr);
1095
1107uint8_t ssd1309_set_gpio(ssd1309_handle_t *handle, ssd1309_gpio_t gpio);
1108
1121
1125
1132
1145uint8_t ssd1309_write_cmd(ssd1309_handle_t *handle, uint8_t *buf, uint8_t len);
1146
1159uint8_t ssd1309_write_data(ssd1309_handle_t *handle, uint8_t *buf, uint8_t len);
1160
1164
1168
1169#ifdef __cplusplus
1170}
1171#endif
1172
1173#endif
ssd1309_bool_t
ssd1309 bool enumeration definition
uint8_t ssd1309_set_page_address(ssd1309_handle_t *handle, uint8_t addr)
set the page address
uint8_t ssd1309_set_vertical_left_horizontal_scroll(ssd1309_handle_t *handle, ssd1309_bool_t horizontal_scroll, uint8_t start_page_addr, uint8_t end_page_addr, uint8_t rows, ssd1309_scroll_frame_t frames, uint8_t start_column_addr, uint8_t end_column_addr)
set the vertical left horizontal scroll
uint8_t ssd1309_set_right_horizontal_scroll(ssd1309_handle_t *handle, uint8_t start_page_addr, uint8_t end_page_addr, ssd1309_scroll_frame_t frames, uint8_t start_column_addr, uint8_t end_column_addr)
set the right horizontal scroll
uint8_t ssd1309_read_point(ssd1309_handle_t *handle, uint8_t x, uint8_t y, uint8_t *data)
read a point
uint8_t ssd1309_set_mcu_interface_lock(ssd1309_handle_t *handle, ssd1309_bool_t enable)
enable or disable mcu interface lock
uint8_t ssd1309_deactivate_scroll(ssd1309_handle_t *handle)
deactivate the scroll
uint8_t ssd1309_set_column_address_range(ssd1309_handle_t *handle, uint8_t start_addr, uint8_t end_addr)
set the column address range
ssd1309_interface_t
ssd1309 interface enumeration definition
uint8_t ssd1309_deinit(ssd1309_handle_t *handle)
close the chip
uint8_t ssd1309_get_addr_pin(ssd1309_handle_t *handle, ssd1309_address_t *addr_pin)
get the chip iic address
uint8_t ssd1309_gram_write_string(ssd1309_handle_t *handle, uint8_t x, uint8_t y, char *str, uint16_t len, uint8_t color, ssd1309_font_t font)
draw a string in the gram
uint8_t ssd1309_set_display_clock(ssd1309_handle_t *handle, uint8_t oscillator_frequency, uint8_t clock_divide)
set the display clock
uint8_t ssd1309_set_left_horizontal_scroll(ssd1309_handle_t *handle, uint8_t start_page_addr, uint8_t end_page_addr, ssd1309_scroll_frame_t frames, uint8_t start_column_addr, uint8_t end_column_addr)
set the left horizontal scroll
uint8_t ssd1309_info(ssd1309_info_t *info)
get chip's information
uint8_t ssd1309_set_high_column_start_address(ssd1309_handle_t *handle, uint8_t addr)
set the high column start address
uint8_t ssd1309_set_display(ssd1309_handle_t *handle, ssd1309_display_t on_off)
enable or disable the display
uint8_t ssd1309_set_addr_pin(ssd1309_handle_t *handle, ssd1309_address_t addr_pin)
set the chip iic address
uint8_t ssd1309_gram_write_point(ssd1309_handle_t *handle, uint8_t x, uint8_t y, uint8_t data)
write a point in the gram
uint8_t ssd1309_init(ssd1309_handle_t *handle)
initialize the chip
ssd1309_memory_addressing_mode_t
ssd1309 memory addressing mode enumeration definition
ssd1309_display_mode_t
ssd1309 display mode enumeration definition
struct ssd1309_info_s ssd1309_info_t
ssd1309 information structure definition
ssd1309_segment_column_remap_t
ssd1309 segment column remap enumeration definition
ssd1309_pin_conf_t
ssd1309 pin conf enumeration definition
uint8_t ssd1309_set_memory_addressing_mode(ssd1309_handle_t *handle, ssd1309_memory_addressing_mode_t mode)
set the memory addressing mode
struct ssd1309_handle_s ssd1309_handle_t
ssd1309 handle structure definition
uint8_t ssd1309_set_gpio(ssd1309_handle_t *handle, ssd1309_gpio_t gpio)
set gpio
uint8_t ssd1309_set_display_offset(ssd1309_handle_t *handle, uint8_t offset)
set the display offset
uint8_t ssd1309_set_right_horizontal_scroll_one_column(ssd1309_handle_t *handle, uint8_t start_page_addr, uint8_t end_page_addr, uint8_t start_column_addr, uint8_t end_column_addr)
set right horizontal scroll one column
uint8_t ssd1309_set_vertical_scroll_area(ssd1309_handle_t *handle, uint8_t start_row, uint8_t end_row)
set the vertical scroll area
uint8_t ssd1309_write_point(ssd1309_handle_t *handle, uint8_t x, uint8_t y, uint8_t data)
write a point
ssd1309_scan_direction_t
ssd1309 scan direction enumeration definition
uint8_t ssd1309_set_left_horizontal_scroll_one_column(ssd1309_handle_t *handle, uint8_t start_page_addr, uint8_t end_page_addr, uint8_t start_column_addr, uint8_t end_column_addr)
set left horizontal scroll one column
uint8_t ssd1309_set_interface(ssd1309_handle_t *handle, ssd1309_interface_t interface)
set the chip interface
uint8_t ssd1309_set_entire_display(ssd1309_handle_t *handle, ssd1309_entire_display_t enable)
enable or disable the entire display
ssd1309_display_t
ssd1309 display enumeration definition
uint8_t ssd1309_gram_draw_picture(ssd1309_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 ssd1309_activate_scroll(ssd1309_handle_t *handle)
activate the scroll
uint8_t ssd1309_set_scan_direction(ssd1309_handle_t *handle, ssd1309_scan_direction_t dir)
set the scan direction
uint8_t ssd1309_set_display_start_line(ssd1309_handle_t *handle, uint8_t l)
set the display start line
uint8_t ssd1309_set_deselect_level(ssd1309_handle_t *handle, ssd1309_deselect_level_t level)
set the deselect level
uint8_t ssd1309_set_low_column_start_address(ssd1309_handle_t *handle, uint8_t addr)
set the low column start address
ssd1309_address_t
ssd1309 address pin enumeration definition
uint8_t ssd1309_set_page_address_range(ssd1309_handle_t *handle, uint8_t start_addr, uint8_t end_addr)
set the page address range
uint8_t ssd1309_set_display_mode(ssd1309_handle_t *handle, ssd1309_display_mode_t mode)
set the display mode
uint8_t ssd1309_set_multiplex_ratio(ssd1309_handle_t *handle, uint8_t multiplex)
set the multiplex ratio
uint8_t ssd1309_gram_read_point(ssd1309_handle_t *handle, uint8_t x, uint8_t y, uint8_t *data)
read a point from the gram
uint8_t ssd1309_set_vertical_right_horizontal_scroll(ssd1309_handle_t *handle, ssd1309_bool_t horizontal_scroll, uint8_t start_page_addr, uint8_t end_page_addr, uint8_t rows, ssd1309_scroll_frame_t frames, uint8_t start_column_addr, uint8_t end_column_addr)
set the vertical right horizontal scroll
ssd1309_deselect_level_t
ssd1309 deselect level enumeration definition
ssd1309_entire_display_t
ssd1309 entire display enumeration definition
ssd1309_left_right_remap_t
ssd1309 left right remap enumeration definition
uint8_t ssd1309_set_contrast(ssd1309_handle_t *handle, uint8_t contrast)
set the display contrast
uint8_t ssd1309_set_com_pins_hardware_conf(ssd1309_handle_t *handle, ssd1309_pin_conf_t conf, ssd1309_left_right_remap_t remap)
set the hardware com pins
ssd1309_gpio_t
ssd1309 gpio enumeration definition
uint8_t ssd1309_gram_fill_rect(ssd1309_handle_t *handle, uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t color)
fill a rectangle in the gram
ssd1309_scroll_frame_t
ssd1309 scroll frame enumeration definition
uint8_t ssd1309_clear(ssd1309_handle_t *handle)
clear the screen
uint8_t ssd1309_get_interface(ssd1309_handle_t *handle, ssd1309_interface_t *interface)
get the chip interface
uint8_t ssd1309_set_precharge_period(ssd1309_handle_t *handle, uint8_t phase1_period, uint8_t phase2_period)
set the pre charge period
uint8_t ssd1309_gram_update(ssd1309_handle_t *handle)
update the gram data
uint8_t ssd1309_set_segment_remap(ssd1309_handle_t *handle, ssd1309_segment_column_remap_t remap)
set the segment remap
ssd1309_font_t
ssd1309 font enumeration definition
@ SSD1309_BOOL_FALSE
@ SSD1309_BOOL_TRUE
@ SSD1309_INTERFACE_SPI
@ SSD1309_INTERFACE_IIC
@ SSD1309_MEMORY_ADDRESSING_MODE_VERTICAL
@ SSD1309_MEMORY_ADDRESSING_MODE_PAGE
@ SSD1309_MEMORY_ADDRESSING_MODE_HORIZONTAL
@ SSD1309_DISPLAY_MODE_INVERSE
@ SSD1309_DISPLAY_MODE_NORMAL
@ SSD1309_SEGMENT_COLUMN_ADDRESS_127
@ SSD1309_SEGMENT_COLUMN_ADDRESS_0
@ SSD1309_PIN_CONF_SEQUENTIAL
@ SSD1309_PIN_CONF_ALTERNATIVE
@ SSD1309_SCAN_DIRECTION_COM0_START
@ SSD1309_SCAN_DIRECTION_COMN_1_START
@ SSD1309_DISPLAY_ON
@ SSD1309_DISPLAY_OFF
@ SSD1309_ADDR_SA0_0
@ SSD1309_ADDR_SA0_1
@ SSD1309_DESELECT_LEVEL_0P64
@ SSD1309_DESELECT_LEVEL_0P78
@ SSD1309_DESELECT_LEVEL_0P84
@ SSD1309_ENTIRE_DISPLAY_OFF
@ SSD1309_ENTIRE_DISPLAY_ON
@ SSD1309_LEFT_RIGHT_REMAP_ENABLE
@ SSD1309_LEFT_RIGHT_REMAP_DISABLE
@ SSD1309_GPIO_HIZ_INPUT_DISABLE
@ SSD1309_GPIO_OUTPUT_LOW
@ SSD1309_GPIO_OUTPUT_HIGH
@ SSD1309_GPIO_HIZ_INPUT_ENABLE
@ SSD1309_SCROLL_FRAME_128
@ SSD1309_SCROLL_FRAME_3
@ SSD1309_SCROLL_FRAME_64
@ SSD1309_SCROLL_FRAME_4
@ SSD1309_SCROLL_FRAME_2
@ SSD1309_SCROLL_FRAME_5
@ SSD1309_SCROLL_FRAME_256
@ SSD1309_SCROLL_FRAME_1
@ SSD1309_FONT_16
@ SSD1309_FONT_12
@ SSD1309_FONT_24
uint8_t ssd1309_write_cmd(ssd1309_handle_t *handle, uint8_t *buf, uint8_t len)
write the register command
uint8_t ssd1309_write_data(ssd1309_handle_t *handle, uint8_t *buf, uint8_t len)
write the register data
ssd1309 handle structure definition
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 gram[128][8]
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)
ssd1309 information structure definition
uint32_t driver_version
char manufacturer_name[32]