I2C_Drivers (ARM) 1.1
SMFSW collection of HAL I2C Drivers for ARM
Loading...
Searching...
No Matches
PCA9956.h File Reference

PCA9956 Driver. More...

#include "sarmfsw.h"
#include "I2C_component.h"
#include "I2C_peripheral.h"
#include "PCA9xxx.h"
#include "PCA9956_proc.h"
#include "PCA9956_ex.h"
Include dependency graph for PCA9956.h:
This graph shows which files directly or indirectly include this file:

Data Structures

union  uPCA9956_REG__MODE1
 Union for MODE1 register of PCA9956. More...
 
union  uPCA9956_REG__MODE2
 Union for MODE2 register of PCA9956. More...
 
union  uPCA9956_REG__LEDOUT
 Union for LEDOUT registers of PCA9956. More...
 
union  uPCA9956_REG__EFLAG
 Union for EFLAG registers of PCA9956. More...
 

Macros

#define I2C_PCA9956_NB   1U
 Number of PCA9956 peripherals.
 
#define PCA9956_BASE_ADDR   0x01U
 PCA9956 Base Address.
 

Enumerations

enum  PCA9956_reg {
  PCA9956__MODE1 = 0U , PCA9956__MODE2 , PCA9956__LEDOUT0 , PCA9956__LEDOUT1 ,
  PCA9956__LEDOUT2 , PCA9956__LEDOUT3 , PCA9956__LEDOUT4 , PCA9956__LEDOUT5 ,
  PCA9956__GRPPWM , PCA9956__GRPFREQ , PCA9956__PWM0 , PCA9956__PWM1 ,
  PCA9956__PWM2 , PCA9956__PWM3 , PCA9956__PWM4 , PCA9956__PWM5 ,
  PCA9956__PWM6 , PCA9956__PWM7 , PCA9956__PWM8 , PCA9956__PWM9 ,
  PCA9956__PWM10 , PCA9956__PWM11 , PCA9956__PWM12 , PCA9956__PWM13 ,
  PCA9956__PWM14 , PCA9956__PWM15 , PCA9956__PWM16 , PCA9956__PWM17 ,
  PCA9956__PWM18 , PCA9956__PWM19 , PCA9956__PWM20 , PCA9956__PWM21 ,
  PCA9956__PWM22 , PCA9956__PWM23 , PCA9956__IREF0 , PCA9956__IREF1 ,
  PCA9956__IREF2 , PCA9956__IREF3 , PCA9956__IREF4 , PCA9956__IREF5 ,
  PCA9956__IREF6 , PCA9956__IREF7 , PCA9956__IREF8 , PCA9956__IREF9 ,
  PCA9956__IREF10 , PCA9956__IREF11 , PCA9956__IREF12 , PCA9956__IREF13 ,
  PCA9956__IREF14 , PCA9956__IREF15 , PCA9956__IREF16 , PCA9956__IREF17 ,
  PCA9956__IREF18 , PCA9956__IREF19 , PCA9956__IREF20 , PCA9956__IREF21 ,
  PCA9956__IREF22 , PCA9956__IREF23 , PCA9956__OFFSET , PCA9956__SUBADR1 ,
  PCA9956__SUBADR2 , PCA9956__SUBADR3 , PCA9956__ALLCALLADR , PCA9956__PWMALL ,
  PCA9956__IREFALL , PCA9956__EFLAG0 , PCA9956__EFLAG1 , PCA9956__EFLAG2 ,
  PCA9956__EFLAG3 , PCA9956__EFLAG4 , PCA9956__EFLAG5
}
 Register map enum of PCA9956. More...
 
enum  PCA9956_offset {
  PCA9956__OFFSET_NONE = 0U , PCA9956__OFFSET_1_CLOCK_CYCLE , PCA9956__OFFSET_2_CLOCK_CYCLE , PCA9956__OFFSET_3_CLOCK_CYCLE ,
  PCA9956__OFFSET_4_CLOCK_CYCLE , PCA9956__OFFSET_5_CLOCK_CYCLE , PCA9956__OFFSET_6_CLOCK_CYCLE , PCA9956__OFFSET_7_CLOCK_CYCLE ,
  PCA9956__OFFSET_8_CLOCK_CYCLE , PCA9956__OFFSET_9_CLOCK_CYCLE , PCA9956__OFFSET_10_CLOCK_CYCLE , PCA9956__OFFSET_11_CLOCK_CYCLE
}
 Offset enum for PCA9956 peripheral. More...
 

Functions

FctERR PCA9956_Init (const uint8_t idx, I2C_HandleTypeDef *const hi2c, const uint16_t devAddress)
 Initialization for PCA9956 peripheral.
 
FctERR PCA9956_Init_Single (void)
 Initialization for PCA9956 peripheral.
 
FctERR PCA9956_Write (I2C_slave_t *const pSlave, const uint8_t *data, const uint16_t addr, const uint16_t nb)
 I2C Write function for PCA9956.
 
FctERR PCA9956_Read (I2C_slave_t *const pSlave, uint8_t *data, const uint16_t addr, const uint16_t nb)
 I2C Read function for PCA9956.
 

Detailed Description

PCA9956 Driver.

Author
SMFSW

PCA9956: 24-channel Fm+ I2C-bus 57 mA/20 V constant current LED driver

Macro Definition Documentation

◆ I2C_PCA9956_NB

#define I2C_PCA9956_NB   1U

Number of PCA9956 peripherals.

Note
Define I2C_PCA9956_NB to enable multiple peripherals of this type

◆ PCA9956_BASE_ADDR

#define PCA9956_BASE_ADDR   0x01U

PCA9956 Base Address.

Note
Define PCA9956_BASE_ADDR to change default device base address

Enumeration Type Documentation

◆ PCA9956_offset

Offset enum for PCA9956 peripheral.

Enumerator
PCA9956__OFFSET_NONE 

no delay between outputs (all on, all off at the same time)

PCA9956__OFFSET_1_CLOCK_CYCLE 

delay of 1 clock cycle (125 ns) between successive outputs

PCA9956__OFFSET_2_CLOCK_CYCLE 

delay of 2 clock cycle (250 ns) between successive outputs

PCA9956__OFFSET_3_CLOCK_CYCLE 

delay of 3 clock cycle (375 ns) between successive outputs

PCA9956__OFFSET_4_CLOCK_CYCLE 

delay of 4 clock cycle (500 ns) between successive outputs

PCA9956__OFFSET_5_CLOCK_CYCLE 

delay of 5 clock cycle (625 ns) between successive outputs

PCA9956__OFFSET_6_CLOCK_CYCLE 

delay of 6 clock cycle (750 ns) between successive outputs

PCA9956__OFFSET_7_CLOCK_CYCLE 

delay of 7 clock cycle (875 ns) between successive outputs

PCA9956__OFFSET_8_CLOCK_CYCLE 

delay of 8 clock cycle (1 us) between successive outputs

PCA9956__OFFSET_9_CLOCK_CYCLE 

delay of 9 clock cycle (1.125 us) between successive outputs

PCA9956__OFFSET_10_CLOCK_CYCLE 

delay of 10 clock cycle (1.25 us) between successive outputs

PCA9956__OFFSET_11_CLOCK_CYCLE 

delay of 11 clock cycle (1.375 us) between successive outputs

◆ PCA9956_reg

Register map enum of PCA9956.

Enumerator
PCA9956__MODE1 

register MODE1

PCA9956__MODE2 

register MODE2

PCA9956__LEDOUT0 

register LED output state 0

PCA9956__LEDOUT1 

register LED output state 1

PCA9956__LEDOUT2 

register LED output state 2

PCA9956__LEDOUT3 

register LED output state 3

PCA9956__LEDOUT4 

register LED output state 4

PCA9956__LEDOUT5 

register LED output state 5

PCA9956__GRPPWM 

register group duty cycle control

PCA9956__GRPFREQ 

register group frequency

PCA9956__PWM0 

register brightness control LED0

PCA9956__PWM1 

register brightness control LED1

PCA9956__PWM2 

register brightness control LED2

PCA9956__PWM3 

register brightness control LED3

PCA9956__PWM4 

register brightness control LED4

PCA9956__PWM5 

register brightness control LED5

PCA9956__PWM6 

register brightness control LED6

PCA9956__PWM7 

register brightness control LED7

PCA9956__PWM8 

register brightness control LED8

PCA9956__PWM9 

register brightness control LED9

PCA9956__PWM10 

register brightness control LED10

PCA9956__PWM11 

register brightness control LED11

PCA9956__PWM12 

register brightness control LED12

PCA9956__PWM13 

register brightness control LED13

PCA9956__PWM14 

register brightness control LED14

PCA9956__PWM15 

register brightness control LED15

PCA9956__PWM16 

register brightness control LED16

PCA9956__PWM17 

register brightness control LED17

PCA9956__PWM18 

register brightness control LED18

PCA9956__PWM19 

register brightness control LED19

PCA9956__PWM20 

register brightness control LED20

PCA9956__PWM21 

register brightness control LED21

PCA9956__PWM22 

register brightness control LED22

PCA9956__PWM23 

register brightness control LED23

PCA9956__IREF0 

register output gain control 0

PCA9956__IREF1 

register output gain control 1

PCA9956__IREF2 

register output gain control 2

PCA9956__IREF3 

register output gain control 3

PCA9956__IREF4 

register output gain control 4

PCA9956__IREF5 

register output gain control 5

PCA9956__IREF6 

register output gain control 6

PCA9956__IREF7 

register output gain control 7

PCA9956__IREF8 

register output gain control 8

PCA9956__IREF9 

register output gain control 9

PCA9956__IREF10 

register output gain control 10

PCA9956__IREF11 

register output gain control 11

PCA9956__IREF12 

register output gain control 12

PCA9956__IREF13 

register output gain control 13

PCA9956__IREF14 

register output gain control 14

PCA9956__IREF15 

register output gain control 15

PCA9956__IREF16 

register output gain control 16

PCA9956__IREF17 

register output gain control 17

PCA9956__IREF18 

register output gain control 18

PCA9956__IREF19 

register output gain control 19

PCA9956__IREF20 

register output gain control 20

PCA9956__IREF21 

register output gain control 21

PCA9956__IREF22 

register output gain control 22

PCA9956__IREF23 

register output gain control 23

PCA9956__OFFSET 

register offset / delay on LEDn outputs

PCA9956__SUBADR1 

register SUBADR1

PCA9956__SUBADR2 

register SUBADR2

PCA9956__SUBADR3 

register SUBADR3

PCA9956__ALLCALLADR 

register ALLCALLADR

PCA9956__PWMALL 

register brightness control for all LEDn

PCA9956__IREFALL 

register output gain control for all IREF0 to IREF23

PCA9956__EFLAG0 

register output error flag 0

PCA9956__EFLAG1 

register output error flag 1

PCA9956__EFLAG2 

register output error flag 2

PCA9956__EFLAG3 

register output error flag 3

PCA9956__EFLAG4 

register output error flag 4

PCA9956__EFLAG5 

register output error flag 5

Function Documentation

◆ PCA9956_Init()

FctERR PCA9956_Init ( const uint8_t idx,
I2C_HandleTypeDef *const hi2c,
const uint16_t devAddress )

Initialization for PCA9956 peripheral.

Parameters
[in]idx- PCA9956 index
[in]hi2c- pointer to PCA9956 I2C instance
[in]devAddress- PCA9956 device address
Returns
FctERR - error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PCA9956_Init_Single()

FctERR PCA9956_Init_Single ( void )

Initialization for PCA9956 peripheral.

Warning
In case multiple devices (defined by I2C_PCA9956_NB > 1), you shall use PCA9956_Init instead
Returns
FctERR - error code
Here is the call graph for this function:

◆ PCA9956_Read()

FctERR PCA9956_Read ( I2C_slave_t *const pSlave,
uint8_t * data,
const uint16_t addr,
const uint16_t nb )

I2C Read function for PCA9956.

Parameters
[in,out]pSlave- Pointer to I2C slave instance
[in,out]data- pointer to read to
[in]addr- Address to read from
[in]nb- Number of bytes to read
Returns
FctERR - error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PCA9956_Write()

FctERR PCA9956_Write ( I2C_slave_t *const pSlave,
const uint8_t * data,
const uint16_t addr,
const uint16_t nb )

I2C Write function for PCA9956.

Parameters
[in,out]pSlave- Pointer to I2C slave instance
[in]data- pointer to write from
[in]addr- Address to write to
[in]nb- Number of bytes to write
Returns
FctERR - error code
Here is the call graph for this function:
Here is the caller graph for this function: