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 "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_i2c_master.h"
38 
59 #define LEDDRIVER9_REG_MODE1 0x00
60 
65 #define LEDDRIVER9_REG_MODE2 0x01
66 
71 #define LEDDRIVER9_REG_PWM0 0x02
72 
77 #define LEDDRIVER9_REG_PWM1 0x03
78 
83 #define LEDDRIVER9_REG_PWM2 0x04
84 
89 #define LEDDRIVER9_REG_PWM3 0x05
90 
95 #define LEDDRIVER9_REG_PWM4 0x06
96 
101 #define LEDDRIVER9_REG_PWM5 0x07
102 
107 #define LEDDRIVER9_REG_PWM6 0x08
108 
113 #define LEDDRIVER9_REG_PWM7 0x09
114 
119 #define LEDDRIVER9_REG_PWM8 0x0A
120 
125 #define LEDDRIVER9_REG_PWM9 0x0B
126 
131 #define LEDDRIVER9_REG_PWM10 0x0C
132 
137 #define LEDDRIVER9_REG_PWM11 0x0D
138 
143 #define LEDDRIVER9_REG_PWM12 0x0E
144 
149 #define LEDDRIVER9_REG_PWM13 0x0F
150 
155 #define LEDDRIVER9_REG_PWM14 0x10
156 
161 #define LEDDRIVER9_REG_PWM15 0x11
162 
167 #define LEDDRIVER9_REG_GRPPWM 0x12
168 
173 #define LEDDRIVER9_REG_GRPFREQ 0x13
174 
179 #define LEDDRIVER9_REG_LEDOUT0 0x14
180 
185 #define LEDDRIVER9_REG_LEDOUT1 0x15
186 
191 #define LEDDRIVER9_REG_LEDOUT2 0x16
192 
197 #define LEDDRIVER9_REG_LEDOUT3 0x17
198 
203 #define LEDDRIVER9_REG_SUBADR1 0x18
204 
209 #define LEDDRIVER9_REG_SUBADR2 0x19
210 
215 #define LEDDRIVER9_REG_SUBADR3 0x1A
216 
221 #define LEDDRIVER9_REG_ALLCALLADR 0x1B
222 
227 #define LEDDRIVER9_REG_IREF 0x1C
228 
233 #define LEDDRIVER9_REG_EFLAG1 0x1D
234 
239 #define LEDDRIVER9_REG_EFLAG2 0x1E
240  // leddriver9_reg
242 
258 #define LEDDRIVER9_SET_DEV_ADDR 0x60
259  // leddriver9_set
261 
276 #define LEDDRIVER9_MAP_MIKROBUS( cfg, mikrobus ) \
277  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
278  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
279  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST )
280  // leddriver9_map // leddriver9
283 
288 typedef struct
289 {
290  // Output pins
291 
292  digital_out_t rst;
293 
294  // Modules
295 
296  i2c_master_t i2c;
298  // I2C slave address
299 
300  uint8_t slave_address;
302 } leddriver9_t;
303 
308 typedef struct
309 {
310  pin_name_t scl;
311  pin_name_t sda;
313  pin_name_t rst;
315  uint32_t i2c_speed;
316  uint8_t i2c_address;
319 
324 typedef enum
325 {
327  LEDDRIVER9_ERROR = -1
328 
330 
331 
336 typedef enum
337 {
354 
356 
357 
362 typedef enum
363 {
370 
371 
376 typedef struct
377 {
378  union
379  {
380  uint8_t byte;
381  struct
382  {
383  uint8_t ALLCALL : 1;
384  uint8_t SUB3 : 1;
385  uint8_t SUB2 : 1;
386  uint8_t SUB1 : 1;
387  uint8_t OSC : 1;
388  uint8_t AI0 : 1;
389  uint8_t AI1 : 1;
390  uint8_t AI2 : 1;
391  };
392  } mode_1;
393 
394  union
395  {
396  uint8_t byte;
397  struct
398  {
399  uint8_t RES : 3;
400  uint8_t OCH : 1;
401  uint8_t RES1 : 1;
402  uint8_t DMBLNK : 1;
403  uint8_t RES2 : 1;
404  uint8_t EFCLR : 1;
405  };
406  } mode_2;
407 
409 
414 typedef struct
415 {
416  union
417  {
418  uint8_t byte;
419  struct
420  {
421  uint8_t LDR0 : 2;
422  uint8_t LDR1 : 2;
423  uint8_t LDR2 : 2;
424  uint8_t LDR3 : 2;
425  };
426  } LEDOUT0;
427 
428  union
429  {
430  uint8_t byte;
431  struct
432  {
433  uint8_t LDR4 : 2;
434  uint8_t LDR5 : 2;
435  uint8_t LDR6 : 2;
436  uint8_t LDR7 : 2;
437  };
438  } LEDOUT1;
439 
440  union
441  {
442  uint8_t byte;
443  struct
444  {
445  uint8_t LDR8 : 2;
446  uint8_t LDR9 : 2;
447  uint8_t LDR10 : 2;
448  uint8_t LDR11 : 2;
449  };
450  } LEDOUT2;
451 
452  union
453  {
454  uint8_t byte;
455  struct
456  {
457  uint8_t LDR12 : 2;
458  uint8_t LDR13 : 2;
459  uint8_t LDR14 : 2;
460  uint8_t LDR15 : 2;
461  };
462  } LEDOUT3;
463 
465 
484 
502 
516 
534 err_t leddriver9_generic_write ( leddriver9_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len );
535 
553 err_t leddriver9_generic_read ( leddriver9_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len );
554 
571 
588 
605 
622 
639 
655 err_t leddriver9_set_pwm ( leddriver9_t *ctx, leddriver9_channel_sel_t ch_out, float duty_cycle );
656 
673 err_t leddriver9_set_dimmer_pwm ( leddriver9_t *ctx, float duty_cycle );
674 
691 err_t leddriver9_set_blink_period ( leddriver9_t *ctx, float period );
692 
704 
705 #ifdef __cplusplus
706 }
707 #endif
708 #endif // LEDDRIVER9_H
709  // leddriver9
711 
712 // ------------------------------------------------------------------------ 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:366
leddriver9_output_state_t::LDR0
uint8_t LDR0
Definition: leddriver9.h:421
LEDDRIVER9_CHANNEL9
@ LEDDRIVER9_CHANNEL9
Definition: leddriver9.h:347
leddriver9_output_state_t::LDR1
uint8_t LDR1
Definition: leddriver9.h:422
leddriver9_t::slave_address
uint8_t slave_address
Definition: leddriver9.h:300
LEDDRIVER9_CHANNEL14
@ LEDDRIVER9_CHANNEL14
Definition: leddriver9.h:352
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:346
LEDDRIVER9_CHANNEL5
@ LEDDRIVER9_CHANNEL5
Definition: leddriver9.h:343
leddriver9_return_value_t
leddriver9_return_value_t
LED Driver 9 Click return value data.
Definition: leddriver9.h:325
leddriver9_output_state_t::LDR8
uint8_t LDR8
Definition: leddriver9.h:445
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:349
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:418
LEDDRIVER9_CHANNEL10
@ LEDDRIVER9_CHANNEL10
Definition: leddriver9.h:348
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:365
LEDDRIVER9_CHANNEL6
@ LEDDRIVER9_CHANNEL6
Definition: leddriver9.h:344
leddriver9_ledout_sel_t
leddriver9_ledout_sel_t
LED Driver 9 Click ledout select options.
Definition: leddriver9.h:363
leddriver9_mode_reg_t::SUB2
uint8_t SUB2
Definition: leddriver9.h:385
leddriver9_mode_reg_t::ALLCALL
uint8_t ALLCALL
Definition: leddriver9.h:383
leddriver9_channel_sel_t
leddriver9_channel_sel_t
LED Driver 9 Click channel select options.
Definition: leddriver9.h:337
LEDDRIVER9_ERROR
@ LEDDRIVER9_ERROR
Definition: leddriver9.h:327
LEDDRIVER9_CHANNEL13
@ LEDDRIVER9_CHANNEL13
Definition: leddriver9.h:351
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:309
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:433
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:380
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:292
leddriver9_output_state_t::LDR7
uint8_t LDR7
Definition: leddriver9.h:436
leddriver9_t::i2c
i2c_master_t i2c
Definition: leddriver9.h:296
LEDDRIVER9_CHANNEL2
@ LEDDRIVER9_CHANNEL2
Definition: leddriver9.h:340
leddriver9_output_state_t::LDR10
uint8_t LDR10
Definition: leddriver9.h:447
leddriver9_cfg_t::sda
pin_name_t sda
Definition: leddriver9.h:311
leddriver9_t
LED Driver 9 Click context object.
Definition: leddriver9.h:289
leddriver9_output_state_t::LDR13
uint8_t LDR13
Definition: leddriver9.h:458
leddriver9_cfg_t::i2c_address
uint8_t i2c_address
Definition: leddriver9.h:316
leddriver9_output_state_t::LDR11
uint8_t LDR11
Definition: leddriver9.h:448
leddriver9_output_state_t::LDR5
uint8_t LDR5
Definition: leddriver9.h:434
LEDDRIVER9_CHANNEL3
@ LEDDRIVER9_CHANNEL3
Definition: leddriver9.h:341
leddriver9_output_state_t::LDR3
uint8_t LDR3
Definition: leddriver9.h:424
LEDDRIVER9_CHANNEL0
@ LEDDRIVER9_CHANNEL0
Definition: leddriver9.h:338
leddriver9_mode_reg_t::SUB1
uint8_t SUB1
Definition: leddriver9.h:386
leddriver9_mode_reg_t::AI0
uint8_t AI0
Definition: leddriver9.h:388
leddriver9_output_state_t::LDR12
uint8_t LDR12
Definition: leddriver9.h:457
leddriver9_cfg_t::rst
pin_name_t rst
Definition: leddriver9.h:313
leddriver9_mode_reg_t::OSC
uint8_t OSC
Definition: leddriver9.h:387
leddriver9_mode_reg_t::OCH
uint8_t OCH
Definition: leddriver9.h:400
LEDDRIVER9_GROUP
@ LEDDRIVER9_GROUP
Definition: leddriver9.h:367
leddriver9_output_state_t::LDR15
uint8_t LDR15
Definition: leddriver9.h:460
leddriver9_output_state_t::LDR14
uint8_t LDR14
Definition: leddriver9.h:459
LEDDRIVER9_OFF
@ LEDDRIVER9_OFF
Definition: leddriver9.h:364
leddriver9_mode_reg_t::RES1
uint8_t RES1
Definition: leddriver9.h:401
leddriver9_mode_reg_t::EFCLR
uint8_t EFCLR
Definition: leddriver9.h:404
LEDDRIVER9_CHANNEL4
@ LEDDRIVER9_CHANNEL4
Definition: leddriver9.h:342
LEDDRIVER9_CHANNEL1
@ LEDDRIVER9_CHANNEL1
Definition: leddriver9.h:339
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:310
leddriver9_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: leddriver9.h:315
leddriver9_output_state_t
LED Driver 9 Click LED output state registers.
Definition: leddriver9.h:415
leddriver9_output_state_t::LDR9
uint8_t LDR9
Definition: leddriver9.h:446
leddriver9_mode_reg_t::RES
uint8_t RES
Definition: leddriver9.h:399
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:402
LEDDRIVER9_CHANNEL7
@ LEDDRIVER9_CHANNEL7
Definition: leddriver9.h:345
LEDDRIVER9_OK
@ LEDDRIVER9_OK
Definition: leddriver9.h:326
leddriver9_mode_reg_t::AI2
uint8_t AI2
Definition: leddriver9.h:390
LEDDRIVER9_CHANNEL12
@ LEDDRIVER9_CHANNEL12
Definition: leddriver9.h:350
leddriver9_output_state_t::LDR2
uint8_t LDR2
Definition: leddriver9.h:423
LEDDRIVER9_CHANNEL15
@ LEDDRIVER9_CHANNEL15
Definition: leddriver9.h:353
leddriver9_output_state_t::LDR6
uint8_t LDR6
Definition: leddriver9.h:435
leddriver9_mode_reg_t
LED Driver 9 Click mode registers.
Definition: leddriver9.h:377
leddriver9_mode_reg_t::AI1
uint8_t AI1
Definition: leddriver9.h:389
leddriver9_mode_reg_t::SUB3
uint8_t SUB3
Definition: leddriver9.h:384
leddriver9_mode_reg_t::RES2
uint8_t RES2
Definition: leddriver9.h:403