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

PCA9685 Driver. More...

#include "sarmfsw.h"
#include "I2C_component.h"
#include "I2C_peripheral.h"
#include "PCA9xxx.h"
#include "PCA9685_proc.h"
#include "PCA9685_ex.h"
Include dependency graph for PCA9685.h:
This graph shows which files directly or indirectly include this file:

Data Structures

union  uPCA9685_REG__MODE1
 Union for MODE1 register of PCA9685. More...
 
union  uPCA9685_REG__MODE2
 Union for MODE2 register of PCA9685. More...
 
union  uPCA9685_REG__DUTY
 Union for Duty Cycle registers of PCA9624. More...
 

Macros

#define I2C_PCA9685_NB   1U
 Number of PCA9685 peripherals.
 
#define PCA9685_BASE_ADDR   0x40U
 PCA9685 Base Address.
 

Enumerations

enum  PCA9685_reg {
  PCA9685__MODE1 = 0U , PCA9685__MODE2 , PCA9685__SUBADR1 , PCA9685__SUBADR2 ,
  PCA9685__SUBADR3 , PCA9685__ALLCALLADR , PCA9685__LED0_ON_L , PCA9685__LED0_ON_H ,
  PCA9685__LED0_OFF_L , PCA9685__LED0_OFF_H , PCA9685__LED1_ON_L , PCA9685__LED1_ON_H ,
  PCA9685__LED1_OFF_L , PCA9685__LED1_OFF_H , PCA9685__LED2_ON_L , PCA9685__LED2_ON_H ,
  PCA9685__LED2_OFF_L , PCA9685__LED2_OFF_H , PCA9685__LED3_ON_L , PCA9685__LED3_ON_H ,
  PCA9685__LED3_OFF_L , PCA9685__LED3_OFF_H , PCA9685__LED4_ON_L , PCA9685__LED4_ON_H ,
  PCA9685__LED4_OFF_L , PCA9685__LED4_OFF_H , PCA9685__LED5_ON_L , PCA9685__LED5_ON_H ,
  PCA9685__LED5_OFF_L , PCA9685__LED5_OFF_H , PCA9685__LED6_ON_L , PCA9685__LED6_ON_H ,
  PCA9685__LED6_OFF_L , PCA9685__LED6_OFF_H , PCA9685__LED7_ON_L , PCA9685__LED7_ON_H ,
  PCA9685__LED7_OFF_L , PCA9685__LED7_OFF_H , PCA9685__LED8_ON_L , PCA9685__LED8_ON_H ,
  PCA9685__LED8_OFF_L , PCA9685__LED8_OFF_H , PCA9685__LED9_ON_L , PCA9685__LED9_ON_H ,
  PCA9685__LED9_OFF_L , PCA9685__LED9_OFF_H , PCA9685__LED10_ON_L , PCA9685__LED10_ON_H ,
  PCA9685__LED10_OFF_L , PCA9685__LED10_OFF_H , PCA9685__LED11_ON_L , PCA9685__LED11_ON_H ,
  PCA9685__LED11_OFF_L , PCA9685__LED11_OFF_H , PCA9685__LED12_ON_L , PCA9685__LED12_ON_H ,
  PCA9685__LED12_OFF_L , PCA9685__LED12_OFF_H , PCA9685__LED13_ON_L , PCA9685__LED13_ON_H ,
  PCA9685__LED13_OFF_L , PCA9685__LED13_OFF_H , PCA9685__LED14_ON_L , PCA9685__LED14_ON_H ,
  PCA9685__LED14_OFF_L , PCA9685__LED14_OFF_H , PCA9685__LED15_ON_L , PCA9685__LED15_ON_H ,
  PCA9685__LED15_OFF_L , PCA9685__LED15_OFF_H , PCA9685__ALL_LED_ON_L = 0xFAU , PCA9685__ALL_LED_ON_H ,
  PCA9685__ALL_LED_OFF_L , PCA9685__ALL_LED_OFF_H , PCA9685__PRE_SCALE , PCA9685__TestMode
}
 Register map enum of PCA9685. More...
 

Functions

FctERR PCA9685_Init (const uint8_t idx, I2C_HandleTypeDef *const hi2c, const uint16_t devAddress)
 Initialization for PCA9685 peripheral.
 
FctERR PCA9685_Init_Single (void)
 Initialization for PCA9685 peripheral.
 
FctERR PCA9685_Write (I2C_slave_t *const pSlave, const uint8_t *data, const uint16_t addr, const uint16_t nb)
 I2C Write function for PCA9685.
 
FctERR PCA9685_Read (I2C_slave_t *const pSlave, uint8_t *data, const uint16_t addr, const uint16_t nb)
 I2C Read function for PCA9685.
 

Detailed Description

PCA9685 Driver.

Author
SMFSW

PCA9685: 16-channel, 12-bit PWM Fm+ I2C-bus LED controller

Macro Definition Documentation

◆ I2C_PCA9685_NB

#define I2C_PCA9685_NB   1U

Number of PCA9685 peripherals.

Note
Define I2C_PCA9685_NB to enable multiple peripherals of this type

◆ PCA9685_BASE_ADDR

#define PCA9685_BASE_ADDR   0x40U

PCA9685 Base Address.

Note
Define PCA9685_BASE_ADDR to change default device base address

Enumeration Type Documentation

◆ PCA9685_reg

Register map enum of PCA9685.

Enumerator
PCA9685__MODE1 

register MODE1

PCA9685__MODE2 

register MODE2

PCA9685__SUBADR1 

register SUBADR1

PCA9685__SUBADR2 

register SUBADR2

PCA9685__SUBADR3 

register SUBADR3

PCA9685__ALLCALLADR 

register ALLCALLADR

PCA9685__LED0_ON_L 

register LED 0 ON Low

PCA9685__LED0_ON_H 

register LED 0 ON High

PCA9685__LED0_OFF_L 

register LED 0 OFF Low

PCA9685__LED0_OFF_H 

register LED 0 OFF High

PCA9685__LED1_ON_L 

register LED 1 ON Low

PCA9685__LED1_ON_H 

register LED 1 ON High

PCA9685__LED1_OFF_L 

register LED 1 OFF Low

PCA9685__LED1_OFF_H 

register LED 1 OFF High

PCA9685__LED2_ON_L 

register LED 2 ON Low

PCA9685__LED2_ON_H 

register LED 2 ON High

PCA9685__LED2_OFF_L 

register LED 2 OFF Low

PCA9685__LED2_OFF_H 

register LED 2 OFF High

PCA9685__LED3_ON_L 

register LED 3 ON Low

PCA9685__LED3_ON_H 

register LED 3 ON High

PCA9685__LED3_OFF_L 

register LED 3 OFF Low

PCA9685__LED3_OFF_H 

register LED 3 OFF High

PCA9685__LED4_ON_L 

register LED 4 ON Low

PCA9685__LED4_ON_H 

register LED 4 ON High

PCA9685__LED4_OFF_L 

register LED 4 OFF Low

PCA9685__LED4_OFF_H 

register LED 4 OFF High

PCA9685__LED5_ON_L 

register LED 5 ON Low

PCA9685__LED5_ON_H 

register LED 5 ON High

PCA9685__LED5_OFF_L 

register LED 5 OFF Low

PCA9685__LED5_OFF_H 

register LED 5 OFF High

PCA9685__LED6_ON_L 

register LED 6 ON Low

PCA9685__LED6_ON_H 

register LED 6 ON High

PCA9685__LED6_OFF_L 

register LED 6 OFF Low

PCA9685__LED6_OFF_H 

register LED 6 OFF High

PCA9685__LED7_ON_L 

register LED 7 ON Low

PCA9685__LED7_ON_H 

register LED 7 ON High

PCA9685__LED7_OFF_L 

register LED 7 OFF Low

PCA9685__LED7_OFF_H 

register LED 7 OFF High

PCA9685__LED8_ON_L 

register LED 8 ON Low

PCA9685__LED8_ON_H 

register LED 8 ON High

PCA9685__LED8_OFF_L 

register LED 8 OFF Low

PCA9685__LED8_OFF_H 

register LED 8 OFF High

PCA9685__LED9_ON_L 

register LED 9 ON Low

PCA9685__LED9_ON_H 

register LED 9 ON High

PCA9685__LED9_OFF_L 

register LED 9 OFF Low

PCA9685__LED9_OFF_H 

register LED 9 OFF High

PCA9685__LED10_ON_L 

register LED 10 ON Low

PCA9685__LED10_ON_H 

register LED 10 ON High

PCA9685__LED10_OFF_L 

register LED 10 OFF Low

PCA9685__LED10_OFF_H 

register LED 10 OFF High

PCA9685__LED11_ON_L 

register LED 11 ON Low

PCA9685__LED11_ON_H 

register LED 11 ON High

PCA9685__LED11_OFF_L 

register LED 11 OFF Low

PCA9685__LED11_OFF_H 

register LED 11 OFF High

PCA9685__LED12_ON_L 

register LED 12 ON Low

PCA9685__LED12_ON_H 

register LED 12 ON High

PCA9685__LED12_OFF_L 

register LED 12 OFF Low

PCA9685__LED12_OFF_H 

register LED 12 OFF High

PCA9685__LED13_ON_L 

register LED 13 ON Low

PCA9685__LED13_ON_H 

register LED 13 ON High

PCA9685__LED13_OFF_L 

register LED 13 OFF Low

PCA9685__LED13_OFF_H 

register LED 13 OFF High

PCA9685__LED14_ON_L 

register LED 14 ON Low

PCA9685__LED14_ON_H 

register LED 14 ON High

PCA9685__LED14_OFF_L 

register LED 14 OFF Low

PCA9685__LED14_OFF_H 

register LED 14 OFF High

PCA9685__LED15_ON_L 

register LED 15 ON Low

PCA9685__LED15_ON_H 

register LED 15 ON High

PCA9685__LED15_OFF_L 

register LED 15 OFF Low

PCA9685__LED15_OFF_H 

register LED 15 OFF High

PCA9685__ALL_LED_ON_L 

register ALL LED ON Low

PCA9685__ALL_LED_ON_H 

register ALL LED ON High

PCA9685__ALL_LED_OFF_L 

register ALL LED OFF Low

PCA9685__ALL_LED_OFF_H 

register ALL LED OFF High

PCA9685__PRE_SCALE 

register PRE_SCALE

PCA9685__TestMode 

register TestMode

Function Documentation

◆ PCA9685_Init()

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

Initialization for PCA9685 peripheral.

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

◆ PCA9685_Init_Single()

FctERR PCA9685_Init_Single ( void )

Initialization for PCA9685 peripheral.

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

◆ PCA9685_Read()

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

I2C Read function for PCA9685.

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:

◆ PCA9685_Write()

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

I2C Write function for PCA9685.

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: