oledswitch  2.0.0.0
oledswitch.h
Go to the documentation of this file.
1 /*
2  * MikroSDK - MikroE Software Development Kit
3  * Copyright© 2020 MikroElektronika d.o.o.
4  *
5  * Permission is hereby granted, free of charge, to any person
6  * obtaining a copy of this software and associated documentation
7  * files (the "Software"), to deal in the Software without restriction,
8  * including without limitation the rights to use, copy, modify, merge,
9  * publish, distribute, sublicense, and/or sell copies of the Software,
10  * and to permit persons to whom the Software is furnished to do so,
11  * subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22  * OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24 
33 // ----------------------------------------------------------------------------
34 
35 #ifndef OLEDSWITCH_H
36 #define OLEDSWITCH_H
37 
42 #ifdef PREINIT_SUPPORTED
43 #include "preinit.h"
44 #endif
45 
46 #ifdef MikroCCoreVersion
47  #if MikroCCoreVersion >= 1
48  #include "delays.h"
49  #endif
50 #endif
51 
52 #include "drv_digital_out.h"
53 #include "drv_digital_in.h"
54 #include "drv_spi_master.h"
55 
56 // -------------------------------------------------------------- PUBLIC MACROS
67 #define OLEDSWITCH_MAP_MIKROBUS( cfg, mikrobus ) \
68  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
69  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
70  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
71  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
72  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
73  cfg.cd = MIKROBUS( mikrobus, MIKROBUS_PWM )
74 
80 #define OLEDSWITCH_RETVAL uint8_t
81 
82 #define OLEDSWITCH_OK 0x00
83 #define OLEDSWITCH_INIT_ERROR 0xFF
84 
90 #define OLEDSWITCH_15_CONTRAST_FOR_COLOR_A_1 0x81
91 #define OLEDSWITCH_15_CONTRAST_FOR_COLOR_A_2 0x19
92 #define OLEDSWITCH_15_CONTRAST_FOR_COLOR_B_1 0x82
93 #define OLEDSWITCH_15_CONTRAST_FOR_COLOR_B_2 0x14
94 #define OLEDSWITCH_15_CONTRAST_FOR_COLOR_C_1 0x83
95 #define OLEDSWITCH_15_CONTRAST_FOR_COLOR_C_2 0x24
96 
97 #define OLEDSWITCH_30_CONTRAST_FOR_COLOR_A_1 0x81
98 #define OLEDSWITCH_30_CONTRAST_FOR_COLOR_A_2 0x15
99 #define OLEDSWITCH_30_CONTRAST_FOR_COLOR_B_1 0x82
100 #define OLEDSWITCH_30_CONTRAST_FOR_COLOR_B_2 0x1A
101 #define OLEDSWITCH_30_CONTRAST_FOR_COLOR_C_1 0x83
102 #define OLEDSWITCH_30_CONTRAST_FOR_COLOR_C_2 0x17
103 
104 #define OLEDSWITCH_MASTER_CURRENT_CONTROL_1 0x87
105 #define OLEDSWITCH_MASTER_CURRENT_CONTROL_2 0x0F
106 
107 #define OLEDSWITCH_REMAP_AND_COLOR_DEPTH_SETTING_1 0xA0
108 #define OLEDSWITCH_REMAP_AND_COLOR_DEPTH_SETTING_2 0x70
109 
110 #define OLEDSWITCH_SET_DISPLAY_START_LINE_1 0xA1
111 #define OLEDSWITCH_SET_DISPLAY_START_LINE_2 0x00
112 
113 #define OLEDSWITCH_SET_DISPLAY_OFFSET_1 0xA2
114 #define OLEDSWITCH_SET_DISPLAY_OFFSET_2 0x10
115 
116 #define OLEDSWITCH_NORMAL_DISPLAY 0xA4
117 
118 #define OLEDSWITCH_MULTIPLEX_RATIO_1 0xA8
119 #define OLEDSWITCH_MULTIPLEX_RATIO_2 0x2F
120 
121 #define OLEDSWITCH_DIM_MODE_SETTING_FOR_COLOR_A_B_C_1 0xAB
122 #define OLEDSWITCH_DIM_MODE_SETTING_FOR_COLOR_A_B_C_2 0x00
123 #define OLEDSWITCH_DIM_MODE_SETTING_FOR_COLOR_A_B_C_3 0x12
124 #define OLEDSWITCH_DIM_MODE_SETTING_FOR_COLOR_A_B_C_4 0x0C
125 #define OLEDSWITCH_DIM_MODE_SETTING_FOR_COLOR_A_B_C_5 0x14
126 #define OLEDSWITCH_DIM_MODE_SETTING_FOR_COLOR_A_B_C_6 0x12
127 
128 #define OLEDSWITCH_MASTER_CONFIGURATION_1 0xAD
129 #define OLEDSWITCH_MASTER_CONFIGURATION_2 0x8E
130 
131 #define OLEDSWITCH_POWER_SAVE_MODE_1 0xB0
132 #define OLEDSWITCH_POWER_SAVE_MODE_2 0x0B
133 
134 #define OLEDSWITCH_PHASE_1_AND_2_PERIOD_ADJUSTMENT_1 0xB1
135 #define OLEDSWITCH_PHASE_1_AND_2_PERIOD_ADJUSTMENT_2 0x44
136 
137 #define OLEDSWITCH_DISPLAY_CLOCK_DIVIDER_OSCILLATOR_FREQUENCY_1 0xB3
138 #define OLEDSWITCH_DISPLAY_CLOCK_DIVIDER_OSCILLATOR_FREQUENCY_2 0xA0
139 
140 #define OLEDSWITCH_ENABLE_LINEAR_GRAY_SCALE 0xB9
141 
142 #define OLEDSWITCH_PRE_CHARGE_LEVEL_1 0xBB
143 #define OLEDSWITCH_PRE_CHARGE_LEVEL_2 0x12
144 
145 #define OLEDSWITCH_15_SET_VCOMH_1 0xBE
146 #define OLEDSWITCH_15_SET_VCOMH_2 0x28
147 
148 #define OLEDSWITCH_30_SET_VCOMH_1 0xBE
149 #define OLEDSWITCH_30_SET_VCOMH_2 0x3E
150 
151 #define OLEDSWITCH_DISPLAY_ON_IN_NORMAL_MODE 0xAF
152 
158 #define OLEDSWITCH_BUFFER_SIZE_BIG 0x00
159 #define OLEDSWITCH_BUFFER_SIZE_SMALL 0x01
160 
161 #define OLEDSWITCH_FILL_ENABLE_DISABLE 0x26
162 
163 #define OLEDSWITCH_ROW_RANGE 0x75
164 
165 #define OLEDSWITCH_COLUMN_RANGE 0x15
166 
167 #define OLEDSWITCH_CLEAR_WINDOW 0x25
168 
169 #define OLEDSWITCH_DEACTIVATE_SCROLLING 0x2E
170 
171 #define OLEDSWITCH_ACTIVATE_SCROLLING 0x2F
172 
173 #define OLEDSWITCH_SCROLLING_SETUP 0x27
174 
175 #define OLEDSWITCH_IMG_SIZE_NORMAL 6144
176 #define OLEDSWITCH_IMG_SIZE_BIG 12288
177  // End group macro
187 // --------------------------------------------------------------- PUBLIC TYPES
196 typedef struct
197 {
201  uint8_t row_offset;
202  uint8_t interval;
203 
205 
209 typedef struct
210 {
211  uint8_t column_start;
212  uint8_t column_end;
213  uint8_t row_start;
214  uint8_t row_end;
215 
217 
221 typedef struct
222 {
223  uint8_t r;
224  uint8_t g;
225  uint8_t b;
226 
228 
232 typedef struct
233 {
234  uint8_t a;
235  uint8_t b;
236  uint8_t c;
237 
239 
243 typedef struct
244 {
245  // Output pins
246 
247  digital_out_t rst;
248  digital_out_t cd;
249  digital_out_t cs;
250 
251  // Modules
252 
253  spi_master_t spi;
254  pin_name_t chip_select;
255 
260 
261 } oledswitch_t;
262 
266 typedef struct
267 {
268  // Communication gpio pins
269 
270  pin_name_t miso;
271  pin_name_t mosi;
272  pin_name_t sck;
273  pin_name_t cs;
274 
275  // Additional gpio pins
276 
277  pin_name_t rst;
278  pin_name_t cd;
279 
280  // static variable
281 
282  uint32_t spi_speed;
283  spi_master_mode_t spi_mode;
284  spi_master_chip_select_polarity_t cs_polarity;
285 
287  // End types group
289 // ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
290 
295 #ifdef __cplusplus
296 extern "C"{
297 #endif
298 
308 
317 
325 void oledswitch_default_cfg ( oledswitch_t *ctx, uint8_t buffer_size );
326 
336 void oledswitch_reg_write ( oledswitch_t *ctx, uint8_t *write_buf, uint8_t len );
337 
347 void oledswitch_draw_image ( oledswitch_t *ctx, const uint8_t *image_buf, uint16_t image_size );
348 
357 
366 
375 
384 
393 
402 
411 
420 
429 
438 
447 
457 
466 
475 
484 
493 
503 void oledswitch_set_row_range ( oledswitch_t *ctx, uint8_t start, uint8_t end );
504 
514 void oledswitch_set_column_range ( oledswitch_t *ctx, uint8_t start, uint8_t end );
515 
525 
534 
543 
552 
561 
569 void oledswitch_digital_write_pwm ( oledswitch_t *ctx, uint8_t signal );
570 
578 void oledswitch_digital_write_rst ( oledswitch_t *ctx, uint8_t signal );
579 
580 #ifdef __cplusplus
581 }
582 #endif
583 #endif // _OLEDSWITCH_H_
584  // End public_function group
587 
588 // ------------------------------------------------------------------------- END
oledswitch_cfg_t::rst
pin_name_t rst
Definition: oledswitch.h:277
oledswitch_set_column_range
void oledswitch_set_column_range(oledswitch_t *ctx, uint8_t start, uint8_t end)
Set column range function.
oledswitch_set_multiplex_ratio
void oledswitch_set_multiplex_ratio(oledswitch_t *ctx)
Set multiplex ratio function.
OLEDSWITCH_RETVAL
#define OLEDSWITCH_RETVAL
Definition: oledswitch.h:80
oledswitch_set_phase_period_adjustment
void oledswitch_set_phase_period_adjustment(oledswitch_t *ctx)
Set phase period adjustment function.
oledswitch_coordinate_t
Coordinate structure.
Definition: oledswitch.h:210
oledswitch_scroll_t::row_offset
uint8_t row_offset
Definition: oledswitch.h:201
oledswitch_demo_scrolling_setup
void oledswitch_demo_scrolling_setup(oledswitch_t *ctx)
Demo scroling setup function.
oledswitch_coordinate_t::column_end
uint8_t column_end
Definition: oledswitch.h:212
oledswitch_reg_write
void oledswitch_reg_write(oledswitch_t *ctx, uint8_t *write_buf, uint8_t len)
Register write function.
oledswitch_scroll_t::interval
uint8_t interval
Definition: oledswitch.h:202
oledswitch_t::spi
spi_master_t spi
Definition: oledswitch.h:253
oledswitch_display_clock_divider_oscillator_frequency
void oledswitch_display_clock_divider_oscillator_frequency(oledswitch_t *ctx)
Display clock divider oscillator frequency function.
oledswitch_pre_charge_level
void oledswitch_pre_charge_level(oledswitch_t *ctx)
Set pre-charge level function.
oledswitch_contrast_t::a
uint8_t a
Definition: oledswitch.h:234
oledswitch_color_t::g
uint8_t g
Definition: oledswitch.h:224
oledswitch_clear_window
void oledswitch_clear_window(oledswitch_t *ctx)
Clear window function.
oledswitch_set_row_range
void oledswitch_set_row_range(oledswitch_t *ctx, uint8_t start, uint8_t end)
Set row range function.
oledswitch_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: oledswitch.h:283
oledswitch_set_dim_mode
void oledswitch_set_dim_mode(oledswitch_t *ctx)
Set dim mode function.
oledswitch_color_t::r
uint8_t r
Definition: oledswitch.h:223
oledswitch_contrast_t::c
uint8_t c
Definition: oledswitch.h:236
oledswitch_cfg_t::miso
pin_name_t miso
Definition: oledswitch.h:270
oledswitch_init
OLEDSWITCH_RETVAL oledswitch_init(oledswitch_t *ctx, oledswitch_cfg_t *cfg)
Initialization function.
oledswitch_set_display_offset
void oledswitch_set_display_offset(oledswitch_t *ctx)
Set display offset function.
oledswitch_set_contrast
void oledswitch_set_contrast(oledswitch_t *ctx)
Set contrast function.
oledswitch_set_vcomh
void oledswitch_set_vcomh(oledswitch_t *ctx)
Set vcomh function.
oledswitch_contrast_t
Contrast structure.
Definition: oledswitch.h:233
oledswitch_t::cs
digital_out_t cs
Definition: oledswitch.h:249
oledswitch_cfg_setup
void oledswitch_cfg_setup(oledswitch_cfg_t *cfg)
Config Object Initialization function.
oledswitch_coordinate_t::column_start
uint8_t column_start
Definition: oledswitch.h:211
oledswitch_software_reset
void oledswitch_software_reset(oledswitch_t *ctx)
Software reset function.
oledswitch_t::coordinate
oledswitch_coordinate_t coordinate
Definition: oledswitch.h:256
oledswitch_t
Click ctx object definition.
Definition: oledswitch.h:244
oledswitch_set_master_current
void oledswitch_set_master_current(oledswitch_t *ctx)
Set master current function.
oledswitch_display_normal_mode
void oledswitch_display_normal_mode(oledswitch_t *ctx)
Display normal mode function.
oledswitch_set_master_config
void oledswitch_set_master_config(oledswitch_t *ctx)
Set master config function.
oledswitch_cfg_t::sck
pin_name_t sck
Definition: oledswitch.h:272
oledswitch_default_cfg
void oledswitch_default_cfg(oledswitch_t *ctx, uint8_t buffer_size)
Click Default Configuration function.
oledswitch_coordinate_t::row_end
uint8_t row_end
Definition: oledswitch.h:214
oledswitch_cfg_t::cd
pin_name_t cd
Definition: oledswitch.h:278
oledswitch_t::color
oledswitch_color_t color
Definition: oledswitch.h:259
oledswitch_scroll_t
Scroll structure.
Definition: oledswitch.h:197
oledswitch_scroll_t::column_horizontal_shift
uint8_t column_horizontal_shift
Definition: oledswitch.h:198
oledswitch_set_display_start_line
void oledswitch_set_display_start_line(oledswitch_t *ctx)
Set display start line function.
oledswitch_digital_write_pwm
void oledswitch_digital_write_pwm(oledswitch_t *ctx, uint8_t signal)
Digital write pwm function.
oledswitch_cfg_t::mosi
pin_name_t mosi
Definition: oledswitch.h:271
oledswitch_activate_scrolling
void oledswitch_activate_scrolling(oledswitch_t *ctx)
Activate scrolling function.
oledswitch_coordinate_t::row_start
uint8_t row_start
Definition: oledswitch.h:213
oledswitch_deactivate_scrolling
void oledswitch_deactivate_scrolling(oledswitch_t *ctx)
Deactivate scrolling function.
oledswitch_t::cd
digital_out_t cd
Definition: oledswitch.h:248
oledswitch_contrast_t::b
uint8_t b
Definition: oledswitch.h:235
oledswitch_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: oledswitch.h:284
oledswitch_color_t::b
uint8_t b
Definition: oledswitch.h:225
oledswitch_cfg_t::spi_speed
uint32_t spi_speed
Definition: oledswitch.h:282
oledswitch_digital_write_rst
void oledswitch_digital_write_rst(oledswitch_t *ctx, uint8_t signal)
Digital write reset function.
oledswitch_draw_image
void oledswitch_draw_image(oledswitch_t *ctx, const uint8_t *image_buf, uint16_t image_size)
Register write function.
oledswitch_scroll_t::row_vertical_shift
uint8_t row_vertical_shift
Definition: oledswitch.h:200
oledswitch_scroll_t::row_horizontal_shift
uint8_t row_horizontal_shift
Definition: oledswitch.h:199
oledswitch_set_normal_display
void oledswitch_set_normal_display(oledswitch_t *ctx)
Set normal display function.
oledswitch_set_remap_color_depth
void oledswitch_set_remap_color_depth(oledswitch_t *ctx)
Set remap color depth function.
oledswitch_set_power_save_mode
void oledswitch_set_power_save_mode(oledswitch_t *ctx)
Set power save mode function.
oledswitch_color_t
Color structure.
Definition: oledswitch.h:222
oledswitch_cfg_t
Click configuration structure definition.
Definition: oledswitch.h:267
oledswitch_cfg_t::cs
pin_name_t cs
Definition: oledswitch.h:273
oledswitch_enable_linear_gray_scale
void oledswitch_enable_linear_gray_scale(oledswitch_t *ctx)
Enable linear gray scale function.
oledswitch_t::contrast
oledswitch_contrast_t contrast
Definition: oledswitch.h:257
oledswitch_t::chip_select
pin_name_t chip_select
Definition: oledswitch.h:254
oledswitch_t::rst
digital_out_t rst
Definition: oledswitch.h:247
oledswitch_t::scroll
oledswitch_scroll_t scroll
Definition: oledswitch.h:258