37#ifndef DRIVER_SSD1309_H
38#define DRIVER_SSD1309_H
212 uint8_t (*
iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
263#define DRIVER_SSD1309_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
271#define DRIVER_SSD1309_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
279#define DRIVER_SSD1309_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
287#define DRIVER_SSD1309_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
295#define DRIVER_SSD1309_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
303#define DRIVER_SSD1309_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
311#define DRIVER_SSD1309_LINK_SPI_WRITE_COMMAND(HANDLE, FUC) (HANDLE)->spi_write_cmd = FUC
319#define DRIVER_SSD1309_LINK_SPI_COMMAND_DATA_GPIO_INIT(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_init = FUC
327#define DRIVER_SSD1309_LINK_SPI_COMMAND_DATA_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_deinit = FUC
335#define DRIVER_SSD1309_LINK_SPI_COMMAND_DATA_GPIO_WRITE(HANDLE, FUC) (HANDLE)->spi_cmd_data_gpio_write = FUC
343#define DRIVER_SSD1309_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
351#define DRIVER_SSD1309_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
359#define DRIVER_SSD1309_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
367#define DRIVER_SSD1309_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
375#define DRIVER_SSD1309_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
717 uint8_t start_column_addr, uint8_t end_column_addr);
743 uint8_t start_column_addr, uint8_t end_column_addr);
772 uint8_t start_page_addr, uint8_t end_page_addr,
774 uint8_t start_column_addr, uint8_t end_column_addr);
803 uint8_t start_page_addr, uint8_t end_page_addr,
805 uint8_t start_column_addr, uint8_t end_column_addr);
1068 uint8_t end_page_addr, uint8_t start_column_addr,
1069 uint8_t end_column_addr);
1093 uint8_t end_page_addr, uint8_t start_column_addr,
1094 uint8_t end_column_addr);
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_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_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_64
@ SSD1309_SCROLL_FRAME_256
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(* 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
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v