RGB LED Driver demo
Dependents: NJU6063_HelloWorld
NJU6063.cpp@3:f83202c2ae59, 2016-01-18 (annotated)
- 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?
User | Revision | Line number | New 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 |