Device driver for the NXP PCA9633.
More...
Device driver for the NXP PCA9633.
- Author
- Hendrik van Essen hendr.nosp@m.ik.v.nosp@m.e@fu-.nosp@m.berl.nosp@m.in.de
|
enum | { PCA9633_OK = 0
, PCA9633_ERROR_I2C = 1
} |
| PCA9633 driver error codes. More...
|
|
enum | pca9633_pwm_channel_t { PCA9633_PWM_CHANNEL_0 = PCA9633_REG_PWM0
, PCA9633_PWM_CHANNEL_1 = PCA9633_REG_PWM1
, PCA9633_PWM_CHANNEL_2 = PCA9633_REG_PWM2
, PCA9633_PWM_CHANNEL_3 = PCA9633_REG_PWM3
} |
| PCA9633 PWM channel definitions. More...
|
|
enum | pca9633_ldr_state_t { PCA9633_LDR_STATE_OFF
, PCA9633_LDR_STATE_ON
, PCA9633_LDR_STATE_IND
, PCA9633_LDR_STATE_IND_GRP
} |
| LED driver output state, LEDOUT (page 14, below table 13) More...
|
|
enum | pca9633_auto_inc_option_t {
PCA9633_AI_DISABLED
, PCA9633_AI_ALL
, PCA9633_AI_IND
, PCA9633_AI_GBL
,
PCA9633_AI_IND_GBL
} |
| Auto-Increment options (page 10, table 6) More...
|
|
enum | pca9633_group_control_mode_t { PCA9633_GROUP_CONTROL_MODE_BLINKING
, PCA9633_GROUP_CONTROL_MODE_DIMMING
} |
| PCA9633 group control modes. More...
|
|
|
int | pca9633_init (pca9633_t *dev, const pca9633_params_t *params) |
| Initialization.
|
|
void | pca9633_turn_on (pca9633_t *dev) |
| Turn on all LEDs.
|
|
void | pca9633_turn_off (pca9633_t *dev) |
| Turn off all LEDs.
|
|
void | pca9633_wakeup (pca9633_t *dev) |
| Switch to normal mode.
|
|
void | pca9633_sleep (pca9633_t *dev) |
| Switch to low power mode.
|
|
void | pca9633_set_pwm (pca9633_t *dev, pca9633_pwm_channel_t pwm_channel, uint8_t pwm) |
| Set individual PWM signal for a given channel.
|
|
void | pca9633_set_grp_pwm (pca9633_t *dev, uint8_t pwm) |
| Set global PWM signal.
|
|
void | pca9633_set_blinking (pca9633_t *dev, uint16_t blink_period_ms, uint8_t on_off_ratio) |
| Set up values for blinking mode.
|
|
void | pca9633_set_rgb (pca9633_t *dev, uint8_t r, uint8_t g, uint8_t b) |
| Set PWM values for RGB.
|
|
void | pca9633_set_rgba (pca9633_t *dev, uint8_t r, uint8_t g, uint8_t b, uint8_t w) |
| Set PWM values for RGBA.
|
|
void | pca9633_set_ldr_state (pca9633_t *dev, pca9633_ldr_state_t state, pca9633_pwm_channel_t pwm_channel) |
| Set the LED driver output state for a given channel.
|
|
void | pca9633_set_ldr_state_all (pca9633_t *dev, pca9633_ldr_state_t state) |
| Set the LED driver output state for all channels.
|
|
void | pca9633_set_auto_increment (pca9633_t *dev, pca9633_auto_inc_option_t option) |
| Set an option for auto increment.
|
|
void | pca9633_set_group_control_mode (pca9633_t *dev, pca9633_group_control_mode_t mode) |
| Set the group control mode.
|
|
◆ PCA9633_BLINKING_PERIOD_MAX_MS
#define PCA9633_BLINKING_PERIOD_MAX_MS (10625) |
Blinking period with a maximum duration of ~10.73 s.
Definition at line 36 of file pca9633.h.
◆ PCA9633_BLINKING_RATIO_BALANCED
#define PCA9633_BLINKING_RATIO_BALANCED 128 |
Ration between on/ off in blinking mode is balanced.
128 = 255 / 2
Definition at line 43 of file pca9633.h.
◆ anonymous enum
PCA9633 driver error codes.
Enumerator |
---|
PCA9633_OK | Success.
|
PCA9633_ERROR_I2C | I2C communication error.
|
Definition at line 71 of file pca9633.h.
◆ pca9633_auto_inc_option_t
Auto-Increment options (page 10, table 6)
Enumerator |
---|
PCA9633_AI_DISABLED | No Auto-Increment.
|
PCA9633_AI_ALL | Auto-Increment for all registers.
D3, D2, D1, D0 roll over to ‘0000’ after the last register (1100) is accessed.
|
PCA9633_AI_IND | Auto-Increment for individual brightness registers only.
D3, D2, D1, D0 roll over to ‘0010’ after the last register (0101) is accessed.
|
PCA9633_AI_GBL | Auto-Increment for global control registers only.
D3, D2, D1, D0 roll over to ‘0110’ after the last register (0111) is accessed.
|
PCA9633_AI_IND_GBL | Auto-Increment for individual and global control registers only.
D3, D2, D1, D0 roll over to ‘0010’ after the last register (0111) is accessed.
|
Definition at line 119 of file pca9633.h.
◆ pca9633_group_control_mode_t
PCA9633 group control modes.
Enumerator |
---|
PCA9633_GROUP_CONTROL_MODE_BLINKING | Control mode for blinking.
|
PCA9633_GROUP_CONTROL_MODE_DIMMING | Control mode for dimming.
|
Definition at line 155 of file pca9633.h.
◆ pca9633_ldr_state_t
LED driver output state, LEDOUT (page 14, below table 13)
Enumerator |
---|
PCA9633_LDR_STATE_OFF | LED driver x is off.
|
PCA9633_LDR_STATE_ON | LED driver x is fully on (individual brightness and group dimming/ blinking not controlled)
|
PCA9633_LDR_STATE_IND | LED driver x individual brightness can be controlled through its PWMx register.
|
PCA9633_LDR_STATE_IND_GRP | LED driver x individual brightness and group dimming/ blinking can be controlled through its PWMx register and the GRPPWM registers.
If using PCA9633_LDR_STATE_IND_GRP the controller takes the minimum value of PWM* and GRPPWM register
|
Definition at line 89 of file pca9633.h.
◆ pca9633_pwm_channel_t
PCA9633 PWM channel definitions.
Enumerator |
---|
PCA9633_PWM_CHANNEL_0 | PWM channel 0.
|
PCA9633_PWM_CHANNEL_1 | PWM channel 1.
|
PCA9633_PWM_CHANNEL_2 | PWM channel 2.
|
PCA9633_PWM_CHANNEL_3 | PWM channel 3.
|
Definition at line 79 of file pca9633.h.
◆ pca9633_init()
Initialization.
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | params | Parameters for device initialization |
- Returns
- PCA9633_OK on success
-
-PCA9633_ERROR_I2C if acquiring of I2C bus fails
-
-EIO When slave device doesn't ACK the byte
-
-ENXIO When no devices respond on the address sent on the bus
-
-ETIMEDOUT When timeout occurs before device's response
-
-EINVAL When an invalid argument is given
-
-EOPNOTSUPP When MCU driver doesn't support the flag operation
-
-EAGAIN When a lost bus arbitration occurs
◆ pca9633_set_auto_increment()
Set an option for auto increment.
There are five options:
- PCA9633_AI_DISABLED
- PCA9633_AI_ALL
- PCA9633_AI_IND
- PCA9633_AI_GBL
- PCA9633_AI_IND_GBL
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | option | One of the possible five options |
◆ pca9633_set_blinking()
void pca9633_set_blinking |
( |
pca9633_t * |
dev, |
|
|
uint16_t |
blink_period_ms, |
|
|
uint8_t |
on_off_ratio |
|
) |
| |
Set up values for blinking mode.
Blinking mode needs to be activated manually by calling pca9633_set_group_control_mode(GROUP_CONTROL_MODE_BLINKING).
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | blink_period_ms | Period in ms for one blink (turning off and on). Maximum period possible is PCA9633_BLINKING_PERIOD_MAX_MS ≈ 10.73 s. All values above this maximum will we capped to it. |
[in] | on_off_ratio | Value between 0 and 255, where e.g. a value of 64 (255/4) means 1/4 of the time the LEDs are on and 3/4 of the time the LEDs are off. |
◆ pca9633_set_group_control_mode()
Set the group control mode.
There are two modes:
- PCA9633_GROUP_CONTROL_MODE_BLINKING
- PCA9633_GROUP_CONTROL_MODE_DIMMING
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | mode | One of the two possible modes |
◆ pca9633_set_grp_pwm()
void pca9633_set_grp_pwm |
( |
pca9633_t * |
dev, |
|
|
uint8_t |
pwm |
|
) |
| |
Set global PWM signal.
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | pwm | PWM value |
◆ pca9633_set_ldr_state()
Set the LED driver output state for a given channel.
There are four states:
- PCA9633_LDR_STATE_OFF
- PCA9633_LDR_STATE_ON
- PCA9633_LDR_STATE_IND
- PCA9633_LDR_STATE_IND_GRP
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | state | One of the four possible states |
[in] | pwm_channel | PWM channel belonging to LDR |
◆ pca9633_set_ldr_state_all()
Set the LED driver output state for all channels.
There are four states:
- PCA9633_LDR_STATE_OFF
- PCA9633_LDR_STATE_ON
- PCA9633_LDR_STATE_IND
- PCA9633_LDR_STATE_IND_GRP
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | state | One of the four possible states |
◆ pca9633_set_pwm()
Set individual PWM signal for a given channel.
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | pwm_channel | PWM channel |
[in] | pwm | PWM value |
◆ pca9633_set_rgb()
void pca9633_set_rgb |
( |
pca9633_t * |
dev, |
|
|
uint8_t |
r, |
|
|
uint8_t |
g, |
|
|
uint8_t |
b |
|
) |
| |
Set PWM values for RGB.
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | r | Value for red color channel |
[in] | g | Value for green color channel |
[in] | b | Value for blue color channel |
◆ pca9633_set_rgba()
void pca9633_set_rgba |
( |
pca9633_t * |
dev, |
|
|
uint8_t |
r, |
|
|
uint8_t |
g, |
|
|
uint8_t |
b, |
|
|
uint8_t |
w |
|
) |
| |
Set PWM values for RGBA.
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
[in] | r | Value for red color channel |
[in] | g | Value for green color channel |
[in] | b | Value for blue color channel |
[in] | w | Value for amber color channel |
◆ pca9633_sleep()
Switch to low power mode.
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |
◆ pca9633_turn_off()
◆ pca9633_turn_on()
◆ pca9633_wakeup()
Switch to normal mode.
- Parameters
-
[in] | dev | Device descriptor of the PCA9633 |