leddriver9  2.0.0.0
leddriver9.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 LEDDRIVER9_H
29 #define LEDDRIVER9_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "mikrosdk_version.h"
36 
37 #ifdef __GNUC__
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
40 #else
41 #include "delays.h"
42 #endif
43 #endif
44 
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_i2c_master.h"
48 
69 #define LEDDRIVER9_REG_MODE1 0x00
70 
75 #define LEDDRIVER9_REG_MODE2 0x01
76 
81 #define LEDDRIVER9_REG_PWM0 0x02
82 
87 #define LEDDRIVER9_REG_PWM1 0x03
88 
93 #define LEDDRIVER9_REG_PWM2 0x04
94 
99 #define LEDDRIVER9_REG_PWM3 0x05
100 
105 #define LEDDRIVER9_REG_PWM4 0x06
106 
111 #define LEDDRIVER9_REG_PWM5 0x07
112 
117 #define LEDDRIVER9_REG_PWM6 0x08
118 
123 #define LEDDRIVER9_REG_PWM7 0x09
124 
129 #define LEDDRIVER9_REG_PWM8 0x0A
130 
135 #define LEDDRIVER9_REG_PWM9 0x0B
136 
141 #define LEDDRIVER9_REG_PWM10 0x0C
142 
147 #define LEDDRIVER9_REG_PWM11 0x0D
148 
153 #define LEDDRIVER9_REG_PWM12 0x0E
154 
159 #define LEDDRIVER9_REG_PWM13 0x0F
160 
165 #define LEDDRIVER9_REG_PWM14 0x10
166 
171 #define LEDDRIVER9_REG_PWM15 0x11
172 
177 #define LEDDRIVER9_REG_GRPPWM 0x12
178 
183 #define LEDDRIVER9_REG_GRPFREQ 0x13
184 
189 #define LEDDRIVER9_REG_LEDOUT0 0x14
190 
195 #define LEDDRIVER9_REG_LEDOUT1 0x15
196 
201 #define LEDDRIVER9_REG_LEDOUT2 0x16
202 
207 #define LEDDRIVER9_REG_LEDOUT3 0x17
208 
213 #define LEDDRIVER9_REG_SUBADR1 0x18
214 
219 #define LEDDRIVER9_REG_SUBADR2 0x19
220 
225 #define LEDDRIVER9_REG_SUBADR3 0x1A
226 
231 #define LEDDRIVER9_REG_ALLCALLADR 0x1B
232 
237 #define LEDDRIVER9_REG_IREF 0x1C
238 
243 #define LEDDRIVER9_REG_EFLAG1 0x1D
244 
249 #define LEDDRIVER9_REG_EFLAG2 0x1E
250  // leddriver9_reg
252 
268 #define LEDDRIVER9_SET_DEV_ADDR 0x60
269  // leddriver9_set
271 
286 #define LEDDRIVER9_MAP_MIKROBUS( cfg, mikrobus ) \
287  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
288  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
289  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST )
290  // leddriver9_map // leddriver9
293 
298 typedef struct
299 {
300  // Output pins
301 
302  digital_out_t rst;
303 
304  // Modules
305 
306  i2c_master_t i2c;
308  // I2C slave address
309 
310  uint8_t slave_address;
312 } leddriver9_t;
313 
318 typedef struct
319 {
320  pin_name_t scl;
321  pin_name_t sda;
323  pin_name_t rst;
325  uint32_t i2c_speed;
326  uint8_t i2c_address;
329 
334 typedef enum
335 {
337  LEDDRIVER9_ERROR = -1
338 
340 
341 
346 typedef enum
347 {
364 
366 
367 
372 typedef enum
373 {
380 
381 
386 typedef struct
387 {
388  union
389  {
390  uint8_t byte;
391  struct
392  {
393  uint8_t ALLCALL : 1;
394  uint8_t SUB3 : 1;
395  uint8_t SUB2 : 1;
396  uint8_t SUB1 : 1;
397  uint8_t OSC : 1;
398  uint8_t AI0 : 1;
399  uint8_t AI1 : 1;
400  uint8_t AI2 : 1;
401  };
402  } mode_1;
403 
404  union
405  {
406  uint8_t byte;
407  struct
408  {
409  uint8_t RES : 3;
410  uint8_t OCH : 1;
411  uint8_t RES1 : 1;
412  uint8_t DMBLNK : 1;
413  uint8_t RES2 : 1;
414  uint8_t EFCLR : 1;
415  };
416  } mode_2;
417 
419 
424 typedef struct
425 {
426  union
427  {
428  uint8_t byte;
429  struct
430  {
431  uint8_t LDR0 : 2;
432  uint8_t LDR1 : 2;
433  uint8_t LDR2 : 2;
434  uint8_t LDR3 : 2;
435  };
436  } LEDOUT0;
437 
438  union
439  {
440  uint8_t byte;
441  struct
442  {
443  uint8_t LDR4 : 2;
444  uint8_t LDR5 : 2;
445  uint8_t LDR6 : 2;
446  uint8_t LDR7 : 2;
447  };
448  } LEDOUT1;
449 
450  union
451  {
452  uint8_t byte;
453  struct
454  {
455  uint8_t LDR8 : 2;
456  uint8_t LDR9 : 2;
457  uint8_t LDR10 : 2;
458  uint8_t LDR11 : 2;
459  };
460  } LEDOUT2;
461 
462  union
463  {
464  uint8_t byte;
465  struct
466  {
467  uint8_t LDR12 : 2;
468  uint8_t LDR13 : 2;
469  uint8_t LDR14 : 2;
470  uint8_t LDR15 : 2;
471  };
472  } LEDOUT3;
473 
475 
494 
512 
526 
544 err_t leddriver9_generic_write ( leddriver9_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len );
545 
563 err_t leddriver9_generic_read ( leddriver9_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len );
564 
581 
598 
615 
632 
649 
665 err_t leddriver9_set_pwm ( leddriver9_t *ctx, leddriver9_channel_sel_t ch_out, float duty_cycle );
666 
683 err_t leddriver9_set_dimmer_pwm ( leddriver9_t *ctx, float duty_cycle );
684 
701 err_t leddriver9_set_blink_period ( leddriver9_t *ctx, float period );
702 
714 
715 #ifdef __cplusplus
716 }
717 #endif
718 #endif // LEDDRIVER9_H
719  // leddriver9
721 
722 // ------------------------------------------------------------------------ END
leddriver9_set_pwm
err_t leddriver9_set_pwm(leddriver9_t *ctx, leddriver9_channel_sel_t ch_out, float duty_cycle)
LED Driver 9 set PWM function.
leddriver9_mode1_reg_read
err_t leddriver9_mode1_reg_read(leddriver9_t *ctx, leddriver9_mode_reg_t *mode_reg)
LED Driver 9 MODE1 reg read function.
LEDDRIVER9_INDIVIDUAL
@ LEDDRIVER9_INDIVIDUAL
Definition: leddriver9.h:376
leddriver9_output_state_t::LDR0
uint8_t LDR0
Definition: leddriver9.h:431
LEDDRIVER9_CHANNEL9
@ LEDDRIVER9_CHANNEL9
Definition: leddriver9.h:357
leddriver9_output_state_t::LDR1
uint8_t LDR1
Definition: leddriver9.h:432
leddriver9_t::slave_address
uint8_t slave_address
Definition: leddriver9.h:310
LEDDRIVER9_CHANNEL14
@ LEDDRIVER9_CHANNEL14
Definition: leddriver9.h:362
leddriver9_mode1_reg_write
err_t leddriver9_mode1_reg_write(leddriver9_t *ctx, leddriver9_mode_reg_t *mode_reg)
LED Driver 9 MODE1 reg write function.
LEDDRIVER9_CHANNEL8
@ LEDDRIVER9_CHANNEL8
Definition: leddriver9.h:356
LEDDRIVER9_CHANNEL5
@ LEDDRIVER9_CHANNEL5
Definition: leddriver9.h:353
leddriver9_return_value_t
leddriver9_return_value_t
LED Driver 9 Click return value data.
Definition: leddriver9.h:335
leddriver9_output_state_t::LDR8
uint8_t LDR8
Definition: leddriver9.h:455
leddriver9_cfg_setup
void leddriver9_cfg_setup(leddriver9_cfg_t *cfg)
LED Driver 9 configuration object setup function.
LEDDRIVER9_CHANNEL11
@ LEDDRIVER9_CHANNEL11
Definition: leddriver9.h:359
leddriver9_hardware_reset
void leddriver9_hardware_reset(leddriver9_t *ctx)
LED Driver 9 hardware reset function.
leddriver9_output_state_t::byte
uint8_t byte
Definition: leddriver9.h:428
LEDDRIVER9_CHANNEL10
@ LEDDRIVER9_CHANNEL10
Definition: leddriver9.h:358
leddriver9_init
err_t leddriver9_init(leddriver9_t *ctx, leddriver9_cfg_t *cfg)
LED Driver 9 initialization function.
LEDDRIVER9_FULL_ON
@ LEDDRIVER9_FULL_ON
Definition: leddriver9.h:375
LEDDRIVER9_CHANNEL6
@ LEDDRIVER9_CHANNEL6
Definition: leddriver9.h:354
leddriver9_ledout_sel_t
leddriver9_ledout_sel_t
LED Driver 9 Click ledout select options.
Definition: leddriver9.h:373
leddriver9_mode_reg_t::SUB2
uint8_t SUB2
Definition: leddriver9.h:395
leddriver9_mode_reg_t::ALLCALL
uint8_t ALLCALL
Definition: leddriver9.h:393
leddriver9_channel_sel_t
leddriver9_channel_sel_t
LED Driver 9 Click channel select options.
Definition: leddriver9.h:347
LEDDRIVER9_ERROR
@ LEDDRIVER9_ERROR
Definition: leddriver9.h:337
LEDDRIVER9_CHANNEL13
@ LEDDRIVER9_CHANNEL13
Definition: leddriver9.h:361
leddriver9_set_dimmer_pwm
err_t leddriver9_set_dimmer_pwm(leddriver9_t *ctx, float duty_cycle)
LED Driver 9 set dimmer PWM function.
leddriver9_cfg_t
LED Driver 9 Click configuration object.
Definition: leddriver9.h:319
leddriver9_set_blink_period
err_t leddriver9_set_blink_period(leddriver9_t *ctx, float period)
LED Driver 9 set blink period function.
leddriver9_output_state_t::LDR4
uint8_t LDR4
Definition: leddriver9.h:443
leddriver9_generic_write
err_t leddriver9_generic_write(leddriver9_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len)
LED Driver 9 I2C writing function.
leddriver9_generic_read
err_t leddriver9_generic_read(leddriver9_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len)
LED Driver 9 I2C reading function.
leddriver9_mode2_reg_read
err_t leddriver9_mode2_reg_read(leddriver9_t *ctx, leddriver9_mode_reg_t *mode_reg)
LED Driver 9 MODE2 reg read function.
leddriver9_mode_reg_t::byte
uint8_t byte
Definition: leddriver9.h:390
leddriver9_ledout_state
err_t leddriver9_ledout_state(leddriver9_t *ctx, leddriver9_output_state_t *output_state)
LED Driver 9 LEDOUT state function.
leddriver9_t::rst
digital_out_t rst
Definition: leddriver9.h:302
leddriver9_output_state_t::LDR7
uint8_t LDR7
Definition: leddriver9.h:446
leddriver9_t::i2c
i2c_master_t i2c
Definition: leddriver9.h:306
LEDDRIVER9_CHANNEL2
@ LEDDRIVER9_CHANNEL2
Definition: leddriver9.h:350
leddriver9_output_state_t::LDR10
uint8_t LDR10
Definition: leddriver9.h:457
leddriver9_cfg_t::sda
pin_name_t sda
Definition: leddriver9.h:321
leddriver9_t
LED Driver 9 Click context object.
Definition: leddriver9.h:299
leddriver9_output_state_t::LDR13
uint8_t LDR13
Definition: leddriver9.h:468
leddriver9_cfg_t::i2c_address
uint8_t i2c_address
Definition: leddriver9.h:326
leddriver9_output_state_t::LDR11
uint8_t LDR11
Definition: leddriver9.h:458
leddriver9_output_state_t::LDR5
uint8_t LDR5
Definition: leddriver9.h:444
LEDDRIVER9_CHANNEL3
@ LEDDRIVER9_CHANNEL3
Definition: leddriver9.h:351
leddriver9_output_state_t::LDR3
uint8_t LDR3
Definition: leddriver9.h:434
LEDDRIVER9_CHANNEL0
@ LEDDRIVER9_CHANNEL0
Definition: leddriver9.h:348
leddriver9_mode_reg_t::SUB1
uint8_t SUB1
Definition: leddriver9.h:396
leddriver9_mode_reg_t::AI0
uint8_t AI0
Definition: leddriver9.h:398
leddriver9_output_state_t::LDR12
uint8_t LDR12
Definition: leddriver9.h:467
leddriver9_cfg_t::rst
pin_name_t rst
Definition: leddriver9.h:323
leddriver9_mode_reg_t::OSC
uint8_t OSC
Definition: leddriver9.h:397
leddriver9_mode_reg_t::OCH
uint8_t OCH
Definition: leddriver9.h:410
LEDDRIVER9_GROUP
@ LEDDRIVER9_GROUP
Definition: leddriver9.h:377
leddriver9_output_state_t::LDR15
uint8_t LDR15
Definition: leddriver9.h:470
leddriver9_output_state_t::LDR14
uint8_t LDR14
Definition: leddriver9.h:469
LEDDRIVER9_OFF
@ LEDDRIVER9_OFF
Definition: leddriver9.h:374
leddriver9_mode_reg_t::RES1
uint8_t RES1
Definition: leddriver9.h:411
leddriver9_mode_reg_t::EFCLR
uint8_t EFCLR
Definition: leddriver9.h:414
LEDDRIVER9_CHANNEL4
@ LEDDRIVER9_CHANNEL4
Definition: leddriver9.h:352
LEDDRIVER9_CHANNEL1
@ LEDDRIVER9_CHANNEL1
Definition: leddriver9.h:349
leddriver9_mode2_reg_write
err_t leddriver9_mode2_reg_write(leddriver9_t *ctx, leddriver9_mode_reg_t *mode_reg)
LED Driver 9 MODE2 reg write function.
leddriver9_cfg_t::scl
pin_name_t scl
Definition: leddriver9.h:320
leddriver9_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: leddriver9.h:325
leddriver9_output_state_t
LED Driver 9 Click LED output state registers.
Definition: leddriver9.h:425
leddriver9_output_state_t::LDR9
uint8_t LDR9
Definition: leddriver9.h:456
leddriver9_mode_reg_t::RES
uint8_t RES
Definition: leddriver9.h:409
leddriver9_default_cfg
void leddriver9_default_cfg(leddriver9_t *ctx)
LED Driver 9 default configuration function.
leddriver9_mode_reg_t::DMBLNK
uint8_t DMBLNK
Definition: leddriver9.h:412
LEDDRIVER9_CHANNEL7
@ LEDDRIVER9_CHANNEL7
Definition: leddriver9.h:355
LEDDRIVER9_OK
@ LEDDRIVER9_OK
Definition: leddriver9.h:336
leddriver9_mode_reg_t::AI2
uint8_t AI2
Definition: leddriver9.h:400
LEDDRIVER9_CHANNEL12
@ LEDDRIVER9_CHANNEL12
Definition: leddriver9.h:360
leddriver9_output_state_t::LDR2
uint8_t LDR2
Definition: leddriver9.h:433
LEDDRIVER9_CHANNEL15
@ LEDDRIVER9_CHANNEL15
Definition: leddriver9.h:363
leddriver9_output_state_t::LDR6
uint8_t LDR6
Definition: leddriver9.h:445
leddriver9_mode_reg_t
LED Driver 9 Click mode registers.
Definition: leddriver9.h:387
leddriver9_mode_reg_t::AI1
uint8_t AI1
Definition: leddriver9.h:399
leddriver9_mode_reg_t::SUB3
uint8_t SUB3
Definition: leddriver9.h:394
leddriver9_mode_reg_t::RES2
uint8_t RES2
Definition: leddriver9.h:413