RGB LED Driver demo

Dependents:   NJU6063_HelloWorld

Committer:
og
Date:
Mon Jan 18 05:07:27 2016 +0000
Revision:
3:f83202c2ae59
Parent:
2:137675ac48ab
Child:
4:7a4b9d444b87
beta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
og 0:0283db13b7f1 1 #include "NJU6063.h"
og 3:f83202c2ae59 2 #ifndef TARGET_STM
og 0:0283db13b7f1 3 NJU6063::NJU6063( PinName sda, PinName scl, PinName rst)
og 0:0283db13b7f1 4 : _i2c(sda, scl), _rst(rst)
og 0:0283db13b7f1 5 {
og 2:137675ac48ab 6 //_i2c.frequency(400000);
og 0:0283db13b7f1 7 }
og 0:0283db13b7f1 8
og 0:0283db13b7f1 9 void NJU6063::reset(void)
og 0:0283db13b7f1 10 {
og 3:f83202c2ae59 11 NJU6063_WAIT_MS;
og 0:0283db13b7f1 12 _rst = 0;
og 3:f83202c2ae59 13 NJU6063_WAIT_MS;
og 0:0283db13b7f1 14 _rst = 1;
og 0:0283db13b7f1 15 }
og 0:0283db13b7f1 16
og 2:137675ac48ab 17 uint8_t NJU6063::set_multi_device(uint8_t n)
og 0:0283db13b7f1 18 {
og 3:f83202c2ae59 19 //_myI2c = (I2C_TypeDef*)I2C_1;
og 3:f83202c2ae59 20 //IS_I2C_NO_STRETCH(I2C_NOSTRETCH_ENABLE);
og 3:f83202c2ae59 21 uint8_t ret;
og 0:0283db13b7f1 22 char data[3];
og 3:f83202c2ae59 23 ret = n;
og 3:f83202c2ae59 24 data[0] = 0x00; // Initial chip addres
og 3:f83202c2ae59 25 data[1] = NJU6063_MADRES; // multi device address
og 0:0283db13b7f1 26 for (uint8_t i=1; i<=n; i++) {
og 0:0283db13b7f1 27 data[2] = i;
og 2:137675ac48ab 28 ack= _i2c.write(NJU6063_SLAVE, data, 3);
og 3:f83202c2ae59 29 //printf("%d %02X\n\r", i, ack);
og 3:f83202c2ae59 30 NJU6063_WAIT;
og 2:137675ac48ab 31 if (ack) {
og 3:f83202c2ae59 32 //_myI2c->CR1 =
og 3:f83202c2ae59 33 ret = i-1;
og 3:f83202c2ae59 34 //int tmp = _myI2c->DR;
og 3:f83202c2ae59 35 //__I2C1_FORCE_RESET();
og 3:f83202c2ae59 36 //__I2C1_RELEASE_RESET();
og 3:f83202c2ae59 37 //__HAL_I2C_CLEAR_FLAG(&_myI2cH, I2C_FLAG_AF);
og 3:f83202c2ae59 38 //__HAL_I2C_CLEAR_FLAG(&_myI2cH, I2C_FLAG_AF);
og 3:f83202c2ae59 39 //printf("%x %x %x\n\r", _myI2c->CR1, _myI2c->CR2, _myI2c->DR);
og 3:f83202c2ae59 40 break;
og 2:137675ac48ab 41 }
og 3:f83202c2ae59 42 /*
og 3:f83202c2ae59 43 else {
og 3:f83202c2ae59 44 ack= _i2c.write(NJU6063_SLAVE, data, 3);
og 3:f83202c2ae59 45 }
og 3:f83202c2ae59 46 */
og 0:0283db13b7f1 47 }
og 3:f83202c2ae59 48 return(ret);
og 0:0283db13b7f1 49 }
og 0:0283db13b7f1 50 void NJU6063::init(uint8_t chip_addr, uint8_t d)
og 0:0283db13b7f1 51 {
og 0:0283db13b7f1 52 char data[3];
og 0:0283db13b7f1 53 data[0] = chip_addr;
og 3:f83202c2ae59 54 data[1] = NJU6063_INIT;
og 0:0283db13b7f1 55 data[2] = d;
og 2:137675ac48ab 56 ack = _i2c.write(NJU6063_SLAVE, data, 3);
og 3:f83202c2ae59 57 NJU6063_WAIT;
og 0:0283db13b7f1 58 }
og 0:0283db13b7f1 59
og 0:0283db13b7f1 60 void NJU6063::set_iled(uint8_t chip_addr, uint8_t d1, uint8_t d2, uint8_t d3)
og 0:0283db13b7f1 61 {
og 0:0283db13b7f1 62 char data[3];
og 0:0283db13b7f1 63 data[0] = chip_addr;
og 3:f83202c2ae59 64 data[1] = NJU6063_ILED;
og 0:0283db13b7f1 65 data[2] = (0x03&d1) | (0x03&d2)<<2 | (0x03&d3) <<4;
og 2:137675ac48ab 66 ack = _i2c.write(NJU6063_SLAVE, data, 3);
og 3:f83202c2ae59 67 NJU6063_WAIT;
og 0:0283db13b7f1 68 }
og 0:0283db13b7f1 69
og 0:0283db13b7f1 70 void NJU6063::set_pwm(uint8_t chip_addr, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t loop, uint8_t son)
og 0:0283db13b7f1 71 {
og 0:0283db13b7f1 72 char data[7];
og 0:0283db13b7f1 73 data[0] = chip_addr;
og 3:f83202c2ae59 74 data[1] = NJU6063_PWM1;
og 0:0283db13b7f1 75 data[2] = d1;
og 0:0283db13b7f1 76 data[3] = d2;
og 0:0283db13b7f1 77 data[4] = d3;
og 0:0283db13b7f1 78 data[5] = loop;
og 0:0283db13b7f1 79 data[6] = son;
og 2:137675ac48ab 80 ack = _i2c.write(NJU6063_SLAVE, data, 7);
og 3:f83202c2ae59 81 NJU6063_WAIT;
og 0:0283db13b7f1 82 }
og 0:0283db13b7f1 83 void NJU6063::dim_start(uint8_t chip_addr)
og 0:0283db13b7f1 84 {
og 0:0283db13b7f1 85 char data[3];
og 0:0283db13b7f1 86 data[0] = chip_addr;
og 3:f83202c2ae59 87 data[1] = NJU6063_START; // reg addres
og 0:0283db13b7f1 88 data[2] = 0x01; // start
og 2:137675ac48ab 89 ack = _i2c.write(NJU6063_SLAVE, data, 3);
og 3:f83202c2ae59 90 NJU6063_WAIT;
og 0:0283db13b7f1 91 }
og 0:0283db13b7f1 92
og 1:bbc915c814da 93 void NJU6063::dim_stop(uint8_t chip_addr)
og 1:bbc915c814da 94 {
og 1:bbc915c814da 95 char data[3];
og 1:bbc915c814da 96 data[0] = chip_addr;
og 3:f83202c2ae59 97 data[1] = NJU6063_START; // reg addres
og 1:bbc915c814da 98 data[2] = 0x02; // stop
og 2:137675ac48ab 99 ack = _i2c.write(NJU6063_SLAVE, data, 3);
og 3:f83202c2ae59 100 NJU6063_WAIT;
og 1:bbc915c814da 101 }
og 1:bbc915c814da 102
og 1:bbc915c814da 103 void NJU6063::check_dim(void)
og 0:0283db13b7f1 104 {
og 2:137675ac48ab 105 uint8_t timeout = 0x0f;
og 0:0283db13b7f1 106 char data[3];
og 0:0283db13b7f1 107 data[0] = 0xff;
og 3:f83202c2ae59 108 data[1] = NJU6063_DCHK;
og 0:0283db13b7f1 109 data[2] = 0x00;
og 0:0283db13b7f1 110 do {
og 2:137675ac48ab 111 ack = _i2c.write(NJU6063_SLAVE, data, 3);
og 3:f83202c2ae59 112 NJU6063_WAIT;
og 2:137675ac48ab 113 timeout--;
og 3:f83202c2ae59 114 if (timeout==0) break;
og 2:137675ac48ab 115 } while(!ack);
og 3:f83202c2ae59 116 NJU6063_WAIT_MS;
og 0:0283db13b7f1 117 }
og 3:f83202c2ae59 118 #endif
og 3:f83202c2ae59 119