PCA9632 very simple operation sample. PCA9632 is 4 channel LED controller from NXP semiconductors.

Dependencies:   mbed

Simple sample code for PCA9632 : 4-bit Fm+ I2C-bus low power LED driver

This is a simple operation sample code for PCA9632.

The PCA9632 is an I2C-bus controlled 4-bit LED driver optimized for Red/Green/Blue/Amber (RGBA) color mixing applications. The PCA9632 is a drop-in upgrade for the PCA9633 with 40 power reduction. In Individual brightness control mode, each LED output has its own 8-bit resolution (256 steps) fixed frequency Individual PWM controller that operates at 1.5625 kHz with a duty cycle that is adjustable from 0 % to 99.6 % to allow the LED to be set to a specific brightness value. In group dimming mode, each LED output has its own 6-bit resolution (64 steps) fixed frequency Individual PWM controller that operates at 6.25 kHz with a duty cycle that is adjustable from 0 % to 98.4 % to allow the LED to be set to a specific brightness value. A fifth 4-bit resolution (16 steps) Group PWM controller has a fixed frequency of 190 Hz that is used to dim all the LEDs with the same value.

For more details, please refer.. http:www.nxp.com/documents/data_sheet/PCA9632.pdf.

If you have an evaluation board for PCA9632, please find next picture for wiring.

/media/uploads/nxp_ip/---------_2014-01-22_12.23.54.png

The evaluation board OM13269's information is available in http:www.nxp.com/documents/user_manual/UM10528.pdf.

Committer:
nxp_ip
Date:
Wed Jan 22 02:14:12 2014 +0000
Revision:
0:8726e00b9c04
version 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nxp_ip 0:8726e00b9c04 1 /** PCA9632 very simple operation sample
nxp_ip 0:8726e00b9c04 2 *
nxp_ip 0:8726e00b9c04 3 * @author Akifumi (Tedd) OKANO, NXP Semiconductors
nxp_ip 0:8726e00b9c04 4 * @version 1.0
nxp_ip 0:8726e00b9c04 5 * @date 22-Jan-2014
nxp_ip 0:8726e00b9c04 6 *
nxp_ip 0:8726e00b9c04 7 * Released under the Apache 2.0 open source licence -- http://opensource.org/licenses/Apache-2.0
nxp_ip 0:8726e00b9c04 8 *
nxp_ip 0:8726e00b9c04 9 * This sample operates 4 LEDs on the evaluation board (OM13269 -- http://www.nxp.com/documents/user_manual/UM10528.pdf).
nxp_ip 0:8726e00b9c04 10 * LED1(Red), LED2(Green) and LED3(Blue) are PWM controlled from mbed.
nxp_ip 0:8726e00b9c04 11 * LED4 is controlled by group PWM function of PCA9632
nxp_ip 0:8726e00b9c04 12 */
nxp_ip 0:8726e00b9c04 13
nxp_ip 0:8726e00b9c04 14 #include "mbed.h"
nxp_ip 0:8726e00b9c04 15
nxp_ip 0:8726e00b9c04 16 I2C i2c( p28, p27 );
nxp_ip 0:8726e00b9c04 17
nxp_ip 0:8726e00b9c04 18
nxp_ip 0:8726e00b9c04 19 char data[] = {
nxp_ip 0:8726e00b9c04 20 0x80,
nxp_ip 0:8726e00b9c04 21 0x80, 0x21,
nxp_ip 0:8726e00b9c04 22 0x00, 0x00, 0x00, 0x40,
nxp_ip 0:8726e00b9c04 23 0x80, 0x02,
nxp_ip 0:8726e00b9c04 24 0xEA
nxp_ip 0:8726e00b9c04 25 };
nxp_ip 0:8726e00b9c04 26
nxp_ip 0:8726e00b9c04 27 char blink_rate[] = { 0x07, 0x00 };
nxp_ip 0:8726e00b9c04 28
nxp_ip 0:8726e00b9c04 29 #define I2C_ADDRESS 0xC4
nxp_ip 0:8726e00b9c04 30
nxp_ip 0:8726e00b9c04 31 int main()
nxp_ip 0:8726e00b9c04 32 {
nxp_ip 0:8726e00b9c04 33 int count;
nxp_ip 0:8726e00b9c04 34
nxp_ip 0:8726e00b9c04 35 i2c.write( I2C_ADDRESS, data, sizeof( data ) );
nxp_ip 0:8726e00b9c04 36
nxp_ip 0:8726e00b9c04 37 while ( 1 ) {
nxp_ip 0:8726e00b9c04 38
nxp_ip 0:8726e00b9c04 39 for ( count = 0; count < 12; count++ ) {
nxp_ip 0:8726e00b9c04 40 data[ 3 + ((count + 2) % 3) ] = 0xFF;
nxp_ip 0:8726e00b9c04 41 data[ 3 + ((count + 1) % 3) ] = 0x00;
nxp_ip 0:8726e00b9c04 42 data[ 3 + ((count + 0) % 3) ] = 0x00;
nxp_ip 0:8726e00b9c04 43 data[ 7 ] = 0;
nxp_ip 0:8726e00b9c04 44 data[ 8 ] = 0;
nxp_ip 0:8726e00b9c04 45 i2c.write( I2C_ADDRESS, data, 9 );
nxp_ip 0:8726e00b9c04 46 wait( 0.25 );
nxp_ip 0:8726e00b9c04 47
nxp_ip 0:8726e00b9c04 48 data[ 3 ] = 0x00;
nxp_ip 0:8726e00b9c04 49 data[ 4 ] = 0x00;
nxp_ip 0:8726e00b9c04 50 data[ 5 ] = 0x00;
nxp_ip 0:8726e00b9c04 51 data[ 7 ] = 0;
nxp_ip 0:8726e00b9c04 52 data[ 8 ] = 0;
nxp_ip 0:8726e00b9c04 53 i2c.write( I2C_ADDRESS, data, 9 );
nxp_ip 0:8726e00b9c04 54
nxp_ip 0:8726e00b9c04 55 count++;
nxp_ip 0:8726e00b9c04 56 wait( 0.25 );
nxp_ip 0:8726e00b9c04 57 }
nxp_ip 0:8726e00b9c04 58
nxp_ip 0:8726e00b9c04 59 for ( count = 0; count < 4096; count++ ) {
nxp_ip 0:8726e00b9c04 60 data[ 3 + (((count >> 8) + 2) % 3) ] = 0xFF - (count & 0xFF);
nxp_ip 0:8726e00b9c04 61 data[ 3 + (((count >> 8) + 1) % 3) ] = 0x00;
nxp_ip 0:8726e00b9c04 62 data[ 3 + (((count >> 8) + 0) % 3) ] = count & 0xFF;
nxp_ip 0:8726e00b9c04 63 data[ 7 ] = 0;
nxp_ip 0:8726e00b9c04 64 data[ 8 ] = 0;
nxp_ip 0:8726e00b9c04 65 i2c.write( I2C_ADDRESS, data, 9 );
nxp_ip 0:8726e00b9c04 66
nxp_ip 0:8726e00b9c04 67 count++;
nxp_ip 0:8726e00b9c04 68 wait( 0.002 );
nxp_ip 0:8726e00b9c04 69 }
nxp_ip 0:8726e00b9c04 70
nxp_ip 0:8726e00b9c04 71 for ( count = 0; count < 2048; count++ ) {
nxp_ip 0:8726e00b9c04 72 data[ 3 + (((count >> 8) + 2) % 3) ] = 0xFF - (count & 0xFF);
nxp_ip 0:8726e00b9c04 73 data[ 3 + (((count >> 8) + 1) % 3) ] = 0x00;
nxp_ip 0:8726e00b9c04 74 data[ 3 + (((count >> 8) + 0) % 3) ] = count & 0xFF;
nxp_ip 0:8726e00b9c04 75 data[ 7 ] = (count >> 9) & 0x1 ? 0x80 : 0x10;
nxp_ip 0:8726e00b9c04 76 data[ 8 ] = (count >> 10) & 0x1 ? 23 : 2;
nxp_ip 0:8726e00b9c04 77 i2c.write( I2C_ADDRESS, data, 9 );
nxp_ip 0:8726e00b9c04 78
nxp_ip 0:8726e00b9c04 79 count++;
nxp_ip 0:8726e00b9c04 80 wait( 0.01 );
nxp_ip 0:8726e00b9c04 81 }
nxp_ip 0:8726e00b9c04 82 }
nxp_ip 0:8726e00b9c04 83 }