leddriver16  2.1.0.0
leddriver16.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2020 MikroElektronika d.o.o.
3 ** Contact: https://www.mikroe.com/contact
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a copy
6 ** of this software and associated documentation files (the "Software"), to deal
7 ** in the Software without restriction, including without limitation the rights
8 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 ** copies of the Software, and to permit persons to whom the Software is
10 ** furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be
12 ** included in all copies or substantial portions of the Software.
13 **
14 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 ** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19 ** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 ** USE OR OTHER DEALINGS IN THE SOFTWARE.
21 ****************************************************************************/
22 
28 #ifndef LEDDRIVER16_H
29 #define LEDDRIVER16_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_spi_master.h"
38 #include "spi_specifics.h"
39 
60 #define LEDDRIVER16_REG_MODE1 0x00
61 #define LEDDRIVER16_REG_MODE2 0x01
62 #define LEDDRIVER16_REG_LEDOUT0 0x02
63 #define LEDDRIVER16_REG_LEDOUT1 0x03
64 #define LEDDRIVER16_REG_LEDOUT2 0x04
65 #define LEDDRIVER16_REG_LEDOUT3 0x05
66 #define LEDDRIVER16_REG_GRPPWM 0x06
67 #define LEDDRIVER16_REG_GRPFREQ 0x07
68 #define LEDDRIVER16_REG_PWM0 0x08
69 #define LEDDRIVER16_REG_PWM1 0x09
70 #define LEDDRIVER16_REG_PWM2 0x0A
71 #define LEDDRIVER16_REG_PWM3 0x0B
72 #define LEDDRIVER16_REG_PWM4 0x0C
73 #define LEDDRIVER16_REG_PWM5 0x0D
74 #define LEDDRIVER16_REG_PWM6 0x0E
75 #define LEDDRIVER16_REG_PWM7 0x0F
76 #define LEDDRIVER16_REG_PWM8 0x10
77 #define LEDDRIVER16_REG_PWM9 0x11
78 #define LEDDRIVER16_REG_PWM10 0x12
79 #define LEDDRIVER16_REG_PWM11 0x13
80 #define LEDDRIVER16_REG_PWM12 0x14
81 #define LEDDRIVER16_REG_PWM13 0x15
82 #define LEDDRIVER16_REG_PWM14 0x16
83 #define LEDDRIVER16_REG_PWM15 0x17
84 #define LEDDRIVER16_REG_IREF0 0x18
85 #define LEDDRIVER16_REG_IREF1 0x19
86 #define LEDDRIVER16_REG_IREF2 0x1A
87 #define LEDDRIVER16_REG_IREF3 0x1B
88 #define LEDDRIVER16_REG_IREF4 0x1C
89 #define LEDDRIVER16_REG_IREF5 0x1D
90 #define LEDDRIVER16_REG_IREF6 0x1E
91 #define LEDDRIVER16_REG_IREF7 0x1F
92 #define LEDDRIVER16_REG_IREF8 0x20
93 #define LEDDRIVER16_REG_IREF9 0x21
94 #define LEDDRIVER16_REG_IREF10 0x22
95 #define LEDDRIVER16_REG_IREF11 0x23
96 #define LEDDRIVER16_REG_IREF12 0x24
97 #define LEDDRIVER16_REG_IREF13 0x25
98 #define LEDDRIVER16_REG_IREF14 0x26
99 #define LEDDRIVER16_REG_IREF15 0x27
100 #define LEDDRIVER16_REG_RAMP_RATE_GRP0 0x28
101 #define LEDDRIVER16_REG_STEP_TIME_GRP0 0x29
102 #define LEDDRIVER16_REG_HOLD_CNTL_GRP0 0x2A
103 #define LEDDRIVER16_REG_IREF_GRP0 0x2B
104 #define LEDDRIVER16_REG_RAMP_RATE_GRP1 0x2C
105 #define LEDDRIVER16_REG_STEP_TIME_GRP1 0x2D
106 #define LEDDRIVER16_REG_HOLD_CNTL_GRP1 0x2E
107 #define LEDDRIVER16_REG_IREF_GRP1 0x2F
108 #define LEDDRIVER16_REG_RAMP_RATE_GRP2 0x30
109 #define LEDDRIVER16_REG_STEP_TIME_GRP2 0x31
110 #define LEDDRIVER16_REG_HOLD_CNTL_GRP2 0x32
111 #define LEDDRIVER16_REG_IREF_GRP2 0x33
112 #define LEDDRIVER16_REG_RAMP_RATE_GRP3 0x34
113 #define LEDDRIVER16_REG_STEP_TIME_GRP3 0x35
114 #define LEDDRIVER16_REG_HOLD_CNTL_GRP3 0x36
115 #define LEDDRIVER16_REG_IREF_GRP3 0x37
116 #define LEDDRIVER16_REG_GRAD_MODE_SEL0 0x38
117 #define LEDDRIVER16_REG_GRAD_MODE_SEL1 0x39
118 #define LEDDRIVER16_REG_GRAD_GRP_SEL0 0x3A
119 #define LEDDRIVER16_REG_GRAD_GRP_SEL1 0x3B
120 #define LEDDRIVER16_REG_GRAD_GRP_SEL2 0x3C
121 #define LEDDRIVER16_REG_GRAD_GRP_SEL3 0x3D
122 #define LEDDRIVER16_REG_GRAD_CNTL 0x3E
123 #define LEDDRIVER16_REG_OFFSET 0x3F
124 #define LEDDRIVER16_REG_PWMALL 0x40
125 #define LEDDRIVER16_REG_IREFALL 0x41
126 #define LEDDRIVER16_REG_EFLAG0 0x42
127 #define LEDDRIVER16_REG_EFLAG1 0x43
128 #define LEDDRIVER16_REG_EFLAG2 0x44
129 #define LEDDRIVER16_REG_EFLAG3 0x45
130  // leddriver16_reg
132 
147 #define LEDDRIVER16_MODE1_NORMAL_MODE 0x00
148 #define LEDDRIVER16_MODE1_LOW_POWER_MODE 0x10
149 
154 #define LEDDRIVER16_MODE2_OVERTEMP 0x80
155 #define LEDDRIVER16_MODE2_ERROR 0x40
156 #define LEDDRIVER16_MODE2_DMBLNK 0x20
157 #define LEDDRIVER16_MODE2_CLRERR 0x10
158 #define LEDDRIVER16_MODE2_EXP_EN 0x04
159 
164 #define LEDDRIVER16_LEDOUT_OFF 0x00
165 #define LEDDRIVER16_LEDOUT_ON 0x01
166 #define LEDDRIVER16_LEDOUT_PWM_ALL 0x02
167 #define LEDDRIVER16_LEDOUT_PWM_GRPPWM 0x03
168 #define LEDDRIVER16_LEDOUT_MASK 0x03
169 
174 #define LEDDRIVER16_PWM_DUTY_MIN 0x00
175 #define LEDDRIVER16_PWM_DUTY_MAX 0xFF
176 
181 #define LEDDRIVER16_IREF_MIN 0x00
182 #define LEDDRIVER16_IREF_MAX 0xFF
183 
188 #define LEDDRIVER16_LED_CHANNEL_0 0x0001u
189 #define LEDDRIVER16_LED_CHANNEL_1 0x0002u
190 #define LEDDRIVER16_LED_CHANNEL_2 0x0004u
191 #define LEDDRIVER16_LED_CHANNEL_3 0x0008u
192 #define LEDDRIVER16_LED_CHANNEL_4 0x0010u
193 #define LEDDRIVER16_LED_CHANNEL_5 0x0020u
194 #define LEDDRIVER16_LED_CHANNEL_6 0x0040u
195 #define LEDDRIVER16_LED_CHANNEL_7 0x0080u
196 #define LEDDRIVER16_LED_CHANNEL_8 0x0100u
197 #define LEDDRIVER16_LED_CHANNEL_9 0x0200u
198 #define LEDDRIVER16_LED_CHANNEL_10 0x0400u
199 #define LEDDRIVER16_LED_CHANNEL_11 0x0800u
200 #define LEDDRIVER16_LED_CHANNEL_12 0x1000u
201 #define LEDDRIVER16_LED_CHANNEL_13 0x2000u
202 #define LEDDRIVER16_LED_CHANNEL_14 0x4000u
203 #define LEDDRIVER16_LED_CHANNEL_15 0x8000u
204 #define LEDDRIVER16_LED_CHANNEL_GRP0 0x000Fu
205 #define LEDDRIVER16_LED_CHANNEL_GRP1 0x00F0u
206 #define LEDDRIVER16_LED_CHANNEL_GRP2 0x0F00u
207 #define LEDDRIVER16_LED_CHANNEL_GRP3 0xF000u
208 #define LEDDRIVER16_LED_CHANNEL_ALL 0xFFFFu
209 
218 #define LEDDRIVER16_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
219 #define LEDDRIVER16_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
220  // leddriver16_set
222 
237 #define LEDDRIVER16_MAP_MIKROBUS( cfg, mikrobus ) \
238  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
239  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
240  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
241  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
242  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
243  cfg.oe = MIKROBUS( mikrobus, MIKROBUS_PWM );
244  // leddriver16_map // leddriver16
247 
252 typedef struct
253 {
254  // Output pins
255  digital_out_t rst;
256  digital_out_t oe;
258  // Modules
259  spi_master_t spi;
261  pin_name_t chip_select;
263 } leddriver16_t;
264 
269 typedef struct
270 {
271  // Communication gpio pins
272  pin_name_t miso;
273  pin_name_t mosi;
274  pin_name_t sck;
275  pin_name_t cs;
277  // Additional gpio pins
278  pin_name_t rst;
279  pin_name_t oe;
281  // static variable
282  uint32_t spi_speed;
283  spi_master_mode_t spi_mode;
284  spi_master_chip_select_polarity_t cs_polarity;
287 
292 typedef enum
293 {
295  LEDDRIVER16_ERROR = -1
296 
298 
315 
330 
344 
357 err_t leddriver16_write_register ( leddriver16_t *ctx, uint8_t reg, uint8_t data_in );
358 
371 err_t leddriver16_read_register ( leddriver16_t *ctx, uint8_t reg, uint8_t *data_out );
372 
382 
392 
402 
412 
424 
443 err_t leddriver16_set_led_state ( leddriver16_t *ctx, uint16_t led_ch_mask, uint8_t state );
444 
459 err_t leddriver16_set_led_pwm ( leddriver16_t *ctx, uint16_t led_ch_mask, uint8_t duty_cycle );
460 
473 err_t leddriver16_set_led_iref ( leddriver16_t *ctx, uint16_t led_ch_mask, uint8_t iref );
474 
475 #ifdef __cplusplus
476 }
477 #endif
478 #endif // LEDDRIVER16_H
479  // leddriver16
481 
482 // ------------------------------------------------------------------------ END
leddriver16_enable_device
void leddriver16_enable_device(leddriver16_t *ctx)
LED Driver 16 enable device function.
leddriver16_t::chip_select
pin_name_t chip_select
Definition: leddriver16.h:261
leddriver16_cfg_t::spi_speed
uint32_t spi_speed
Definition: leddriver16.h:282
leddriver16_cfg_t::rst
pin_name_t rst
Definition: leddriver16.h:278
leddriver16_t::spi
spi_master_t spi
Definition: leddriver16.h:259
leddriver16_disable_output
void leddriver16_disable_output(leddriver16_t *ctx)
LED Driver 16 disable output function.
leddriver16_cfg_t::cs
pin_name_t cs
Definition: leddriver16.h:275
leddriver16_set_led_iref
err_t leddriver16_set_led_iref(leddriver16_t *ctx, uint16_t led_ch_mask, uint8_t iref)
LED Driver 16 set led iref function.
leddriver16_enable_output
void leddriver16_enable_output(leddriver16_t *ctx)
LED Driver 16 enable output function.
leddriver16_t
LED Driver 16 Click context object.
Definition: leddriver16.h:253
leddriver16_set_led_state
err_t leddriver16_set_led_state(leddriver16_t *ctx, uint16_t led_ch_mask, uint8_t state)
LED Driver 16 set led state function.
spi_specifics.h
This file contains SPI specific macros, functions, etc.
leddriver16_cfg_setup
void leddriver16_cfg_setup(leddriver16_cfg_t *cfg)
LED Driver 16 configuration object setup function.
leddriver16_read_register
err_t leddriver16_read_register(leddriver16_t *ctx, uint8_t reg, uint8_t *data_out)
LED Driver 16 read register function.
leddriver16_disable_device
void leddriver16_disable_device(leddriver16_t *ctx)
LED Driver 16 disable device function.
leddriver16_t::rst
digital_out_t rst
Definition: leddriver16.h:255
leddriver16_clear_errors
err_t leddriver16_clear_errors(leddriver16_t *ctx)
LED Driver 16 clear errors function.
leddriver16_cfg_t::miso
pin_name_t miso
Definition: leddriver16.h:272
leddriver16_cfg_t::oe
pin_name_t oe
Definition: leddriver16.h:279
LEDDRIVER16_ERROR
@ LEDDRIVER16_ERROR
Definition: leddriver16.h:295
leddriver16_cfg_t::sck
pin_name_t sck
Definition: leddriver16.h:274
leddriver16_set_led_pwm
err_t leddriver16_set_led_pwm(leddriver16_t *ctx, uint16_t led_ch_mask, uint8_t duty_cycle)
LED Driver 16 set led pwm function.
leddriver16_default_cfg
err_t leddriver16_default_cfg(leddriver16_t *ctx)
LED Driver 16 default configuration function.
leddriver16_init
err_t leddriver16_init(leddriver16_t *ctx, leddriver16_cfg_t *cfg)
LED Driver 16 initialization function.
leddriver16_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: leddriver16.h:284
LEDDRIVER16_OK
@ LEDDRIVER16_OK
Definition: leddriver16.h:294
leddriver16_cfg_t::mosi
pin_name_t mosi
Definition: leddriver16.h:273
leddriver16_t::oe
digital_out_t oe
Definition: leddriver16.h:256
leddriver16_cfg_t
LED Driver 16 Click configuration object.
Definition: leddriver16.h:270
leddriver16_write_register
err_t leddriver16_write_register(leddriver16_t *ctx, uint8_t reg, uint8_t data_in)
LED Driver 16 write register function.
leddriver16_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: leddriver16.h:283
leddriver16_return_value_t
leddriver16_return_value_t
LED Driver 16 Click return value data.
Definition: leddriver16.h:293