pca9632: Driver for PCA9632 4-channel PWM chip

Defines

PCA9632_I2C_ADDR

I2C address for PCA9632.

Enums

enum pca9632_autoincr_mode_t

Values:

enumerator AI_DISABLED

no Auto-Increment

enumerator AI_ALL

Auto-Increment for all registers.

enumerator AI_INDIV

Auto-Increment for Individual brightness registers only.

enumerator AI_GLOBAL

Auto-Increment for global control registers only.

enumerator AI_INDIV_GLOBAL

Auto-Increment for individual and global control registers only.

enum pca9632_gcm_t

Values:

enumerator GROUP_CONTROL_MODE_BLINKING

group blink control

enumerator GROUP_CONTROL_MODE_DIMMING

group dimming control

enum pca9632_outdrv_t

Values:

enumerator OUTDRV_OPEN_DRAIN

open-drain output

enumerator OUTDRV_TOTEM_POLE

totem-pole output

enum pca9632_led_t

Values:

enumerator LED0

LED0 PWM output.

enumerator LED1

LED1 PWM output.

enumerator LED2

LED2 PWM output.

enumerator LED3

LED3 PWM output.

enum pca9632_ldr_t

Values:

enumerator LDR_OFF

LED driver x is off (default power-up state)

enumerator LDR_ON

LED driver x is fully on (individual brightness and group dimming/blinking not controlled)

enumerator LDR_INDIV

LED driver x individual brightness can be controlled through its PWMx register.

enumerator LDR_INDIV_GRP

LED driver x individual brightness and group dimming/blinking can be controlled through its PWMx register and the GRPPWM registers.

Functions

esp_err_t pca9632_init_desc(i2c_dev_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)

Initialize device descriptor.

Default SCL frequency is 400kHz

Parameters:
  • dev – Pointer to I2C device descriptor

  • port – I2C port number

  • addr – I2C address

  • sda_gpio – SDA GPIO

  • scl_gpio – SCL GPIO

Returns:

ESP_OK on success

esp_err_t pca9632_free_desc(i2c_dev_t *dev)

Free device descriptor.

Parameters:

dev – Pointer to I2C device descriptor

Returns:

ESP_OK on success

esp_err_t pca9632_init(i2c_dev_t *dev)

Initialize device.

Individual dimming mode by default

Parameters:

dev – Pointer to I2C device descriptor

Returns:

ESP_OK on success

esp_err_t pca9632_set_autoincrement(i2c_dev_t *dev, pca9632_autoincr_mode_t ai)

Set register address auto-increment mode, See ‘pca9632_autoincr_mode_t’ for details.

Parameters:
  • dev – Pointer to I2C device descriptor

  • ai – Auto-increment mode

Returns:

ESP_OK on success

esp_err_t pca9632_set_group_control_mode(i2c_dev_t *dev, pca9632_gcm_t mode)

Set group control mode.

See ‘pca9632_gcm_t’ for details

Parameters:
  • dev – Pointer to I2C device descriptor

  • mode – Group control mode

Returns:

ESP_OK on success

esp_err_t pca9632_set_output_params(i2c_dev_t *dev, bool invert, pca9632_outdrv_t outdrv)

Set up PWM outputs.

See ‘pca9632_outdrv_t’ for details

Parameters:
  • dev – Pointer to I2C device descriptor

  • invert – Use inverted logic on outputs

  • outdrv – Enable Totem-Pole output mode

Returns:

ESP_OK on success

esp_err_t pca9632_set_pwm(i2c_dev_t *dev, pca9632_led_t channel, uint8_t duty)

Set PWM duty on selected channel.

Parameters:
  • dev – Pointer to I2C device descriptor

  • channel – PWM output channel

  • duty – PWM duty-cycle value

Returns:

ESP_OK on success

esp_err_t pca9632_set_pwm_all(i2c_dev_t *dev, uint8_t led0, uint8_t led1, uint8_t led2, uint8_t led3)

Set PWM duty on all channels.

Parameters:
  • dev – Pointer to I2C device descriptor

  • led0 – PWM duty-cycle value on LED0 output

  • led1 – PWM duty-cycle value on LED1 output

  • led2 – PWM duty-cycle value on LED2 output

  • led3 – PWM duty-cycle value on LED3 output

Returns:

ESP_OK on success

esp_err_t pca9632_set_grp_pwm(i2c_dev_t *dev, uint8_t val)

Set GRPPWM register value.

Parameters:
  • dev – Pointer to I2C device descriptor

  • val – GRPPWM value

Returns:

ESP_OK on success

esp_err_t pca9632_set_grp_freq(i2c_dev_t *dev, uint8_t val)

Set GRPFREQ register value.

Parameters:
  • dev – Pointer to I2C device descriptor

  • val – GRPFREQ value

Returns:

ESP_OK on success

esp_err_t pca9632_set_led_driver(i2c_dev_t *dev, pca9632_led_t channel, pca9632_ldr_t ldr)

Set LED driver on selected channel.

See ‘pca9632_ldr_t’ for details

Parameters:
  • dev – Pointer to I2C device descriptor

  • channel – PWM output channel

  • ldr – LED driver type

Returns:

ESP_OK on success

esp_err_t pca9632_set_led_driver_all(i2c_dev_t *dev, pca9632_ldr_t ldr)

Set LED driver on all outputs.

See ‘pca9632_ldr_t’ for details

Parameters:
  • dev – Pointer to I2C device descriptor

  • ldr – LED driver type

Returns:

ESP_OK on success