Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: PCA9956A_Hello pca9956b_two_demoboards PCA9955A_Gradation_control PCA9955A_Gradation_control ... more
PCA9956A Class Reference
#include <PCA9956A.h>
Inherits PCA995xA.
Public Types | |
enum | LedPinName { L0, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20, L21, L22, L23, L_NC = ~0x0L } |
PCA9956A pin names high-level API i.e. More... | |
enum | command_reg { MODE1, MODE2, LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5, GRPPWM, GRPFREQ, PWM0, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7, PWM8, PWM9, PWM10, PWM11, PWM12, PWM13, PWM14, PWM15, PWM16, PWM17, PWM18, PWM19, PWM20, PWM21, PWM22, PWM23, IREF0, IREF1, IREF2, IREF3, IREF4, IREF5, IREF6, IREF7, IREF8, IREF9, IREF10, IREF11, IREF12, IREF13, IREF14, IREF15, IREF16, IREF17, IREF18, IREF19, IREF20, IREF21, IREF22, IREF23, OFFSET = 0x3A, SUBADR1, SUBADR2, SUBADR3, ALLCALLADR, PWMALL, IREFALL, EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5 } |
Name of the PCA9956A registers (for direct register access) More... | |
Public Member Functions | |
PCA9956A (PinName i2c_sda, PinName i2c_scl, char i2c_address=PCA995xA::DEFAULT_I2C_ADDR) | |
Create a PCA9956A instance connected to specified I2C pins with specified address. | |
PCA9956A (I2C &i2c_obj, char i2c_address=PCA995xA::DEFAULT_I2C_ADDR) | |
Create a PCA9956A instance connected to specified I2C pins with specified address. | |
virtual | ~PCA9956A () |
Destractor. | |
virtual int | number_of_ports (void) |
Returns the number of output ports. | |
void | pwm (int port, float v) |
Set the output duty-cycle, specified as a percentage (float) | |
void | pwm (float *vp) |
Set all output port duty-cycle, specified as a percentage (array of float) | |
void | current (int port, float vp) |
Set the output current, specified as a percentage (float) | |
void | current (float *vP) |
Set all output port curent, specified as a percentage (array of float) | |
void | write (char reg_addr, char data) |
Register write (single byte) : Low level access to device register. | |
void | write (char *data, int length) |
Register write (multiple bytes) : Low level access to device register. | |
char | read (char reg_addr) |
Register read (single byte) : Low level access to device register. | |
void | read (char reg_addr, char *data, int length) |
Register write (multiple bytes) : Low level access to device register. |
Detailed Description
PCA9956A class.
PCA9956A constant current LED driver.
PCA995xA constant current LED driver family.
This is a driver code for the PCA9956A 24-channel Fm+ I2C-bus 57mA/20V constant current LED driver. This class provides interface for PCA9956A operation and accessing its registers. Detail information is available on next URL. http://www.nxp.com/products/interface_and_connectivity/i2c/i2c_led_display_control/PCA9956ATW.html
Next sample code shows operation based on low-level-API (operated by just device instane)
Example:
// PCA9956A operation sample using its device instance #include "mbed.h" #include "PCA9956A.h" PCA9956A led_cntlr( p28, p27, 0x02 ); // SDA, SCL, Slave_address(option) int main() { led_cntlr.current( ALLPORTS, 1.0 ); // Set all ports output current 100% while(1) { for ( int port = 0; port < led_cntlr.number_of_ports(); port++ ) { for ( int i = 1; i <= 100; i++ ) { led_cntlr.pwm( port, (float)i / 100.0 ); wait( 0.01 ); } } led_cntlr.pwm( ALLPORTS, 0.0 ); } }
The high-level-API:LedPwmOutCC is also available. It can be used like next sample code.
// PCA9956A operation sample using high-level-API #include "mbed.h" #include "PCA9956A.h" PCA9956A led_cntlr( p28, p27, 0x02 ); // SDA, SCL, Slave_address(option) LedPwmOutCC led0( led_cntlr, L0 ); // Instance for LED0 pin LedPwmOutCC led1( led_cntlr, L1 ); // Instance for LED1 pin LedPwmOutCC led2( led_cntlr, L2 ); // Instance for LED2 pin int main() { led0.current( 0.5 ); // LED0 pin current output setting to 50% led1.current( 0.5 ); // LED1 pin current output setting to 50% led2.current( 0.5 ); // LED2 pin current output setting to 50% while(1) { for ( float p = 1.0; p >= 0.0; p -= 0.01 ) { led0 = p; // Set LED0 output PWM dutycycle as 'p' wait( 0.01 ); } for ( float p = 1.0; p >= 0.0; p -= 0.01 ) { led1 = p; // Set LED1 output PWM dutycycle as 'p' wait( 0.01 ); } for ( float p = 1.0; p >= 0.0; p -= 0.01 ) { led2 = p; // Set LED2 output PWM dutycycle as 'p' wait( 0.01 ); } } }
Abstract class for PCA995xA family No instance can be made from this class
- Version:
- 0.5
- Date:
- 25-Feb-2015 (minor fix on 17-Jun-2022)
Released under the Apache 2 license
An operation sample of PCA9956A 24-channel Fm+ I2C-bus 57mA/20V constant current LED driver. mbed accesses the PCA9956A registers through I2C.
- Version:
- 0.6
- Date:
- 19-Mar-2015 (minor fix on 17-Jun-2022)
Released under the Apache 2 license
About PCA9956A: http://www.nxp.com/products/interface_and_connectivity/i2c/i2c_led_display_control/PCA9956ATW.html
Definition at line 98 of file PCA9956A.h.
Member Enumeration Documentation
enum command_reg |
Name of the PCA9956A registers (for direct register access)
- Enumerator:
Definition at line 134 of file PCA9956A.h.
enum LedPinName |
PCA9956A pin names high-level API i.e.
LedPwmOutCC
- Enumerator:
Definition at line 104 of file PCA9956A.h.
Constructor & Destructor Documentation
PCA9956A | ( | PinName | i2c_sda, |
PinName | i2c_scl, | ||
char | i2c_address = PCA995xA::DEFAULT_I2C_ADDR |
||
) |
Create a PCA9956A instance connected to specified I2C pins with specified address.
- Parameters:
-
i2c_sda I2C-bus SDA pin i2c_sda I2C-bus SCL pin i2c_address I2C-bus address (default: 0xC0)
Definition at line 4 of file PCA9956A.cpp.
PCA9956A | ( | I2C & | i2c_obj, |
char | i2c_address = PCA995xA::DEFAULT_I2C_ADDR |
||
) |
Create a PCA9956A instance connected to specified I2C pins with specified address.
- Parameters:
-
i2c_obj I2C object (instance) i2c_address I2C-bus address (default: 0xC0)
Definition at line 10 of file PCA9956A.cpp.
~PCA9956A | ( | ) | [virtual] |
Destractor.
Definition at line 16 of file PCA9956A.cpp.
Member Function Documentation
void current | ( | int | port, |
float | vp | ||
) | [virtual] |
Set the output current, specified as a percentage (float)
- Parameters:
-
port Selecting output port 'ALLPORTS' can be used to set all port current same value. v A floating-point value representing the output current, specified as a percentage. The value should lie between 0.0f (representing on 0%) and 1.0f (representing on 100%). Values outside this range will have undefined behavior.
Reimplemented from PCA995xA.
void current | ( | float * | vP ) |
Set all output port curent, specified as a percentage (array of float)
- Parameters:
-
vp Aray to floating-point values representing the output current, specified as a percentage. The value should lie between 0.0f (representing on 0%) and 1.0f (representing on 100%).
- Note:
- The aray should have length of 24
Reimplemented from PCA995xA.
int number_of_ports | ( | void | ) | [virtual] |
Returns the number of output ports.
- Returns:
- The number of output ports
Implements PCA995xA.
Definition at line 51 of file PCA9956A.cpp.
void pwm | ( | int | port, |
float | v | ||
) | [virtual] |
Set the output duty-cycle, specified as a percentage (float)
- Parameters:
-
port Selecting output port 'ALLPORTS' can be used to set all port duty-cycle same value. v A floating-point value representing the output duty-cycle, specified as a percentage. The value should lie between 0.0f (representing on 0%) and 1.0f (representing on 99.6%). Values outside this range will have undefined behavior.
Reimplemented from PCA995xA.
void pwm | ( | float * | vp ) |
Set all output port duty-cycle, specified as a percentage (array of float)
- Parameters:
-
vp Aray to floating-point values representing the output duty-cycle, specified as a percentage. The value should lie between 0.0f (representing on 0%) and 1.0f (representing on 99.6%).
- Note:
- The aray should have length of 24
Reimplemented from PCA995xA.
char read | ( | char | reg_addr ) |
Register read (single byte) : Low level access to device register.
- Parameters:
-
reg_addr Register address
- Returns:
- Read value from register
Reimplemented from PCA995xA.
void read | ( | char | reg_addr, |
char * | data, | ||
int | length | ||
) |
Register write (multiple bytes) : Low level access to device register.
- Parameters:
-
reg_addr Register address data Pointer to an array. The values are stored in this array. length Length of data
Reimplemented from PCA995xA.
void write | ( | char * | data, |
int | length | ||
) |
Register write (multiple bytes) : Low level access to device register.
- Parameters:
-
data Pointer to an array. First 1 byte should be the writing start register address length Length of data
Reimplemented from PCA995xA.
void write | ( | char | reg_addr, |
char | data | ||
) |
Register write (single byte) : Low level access to device register.
- Parameters:
-
reg_addr Register address data Value for setting into the register
Reimplemented from PCA995xA.
Generated on Wed Jul 13 2022 08:07:57 by
