k og / NJU6063

Dependents:   NJU6063_HelloWorld

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers NJU6063.cpp Source File

NJU6063.cpp

00001 #include "NJU6063.h"
00002 //#ifndef TARGET_STM 
00003 NJU6063::NJU6063( PinName sda, PinName scl, PinName rst)
00004     : _i2c(sda, scl), _rst(rst)
00005 {
00006     //_i2c.frequency(400000);
00007 }
00008 
00009 void NJU6063::reset(void)
00010 {
00011     NJU6063_WAIT_MS;
00012     _rst = 0;
00013     NJU6063_WAIT_MS;
00014     _rst = 1;
00015 }
00016 
00017 uint8_t NJU6063::set_multi_device(uint8_t n)
00018 {
00019     //_myI2c = (I2C_TypeDef*)I2C_1;
00020     //IS_I2C_NO_STRETCH(I2C_NOSTRETCH_ENABLE);
00021     uint8_t ret;
00022     char data[3];
00023     ret = n;
00024     data[0] = 0x00;             // Initial chip addres
00025     data[1] = NJU6063_MADRES;    // multi device address
00026 #ifdef TARGET_NUCLEO_F042K6
00027     for (uint8_t i=1; i<=n; i++) {
00028         data[2] = i;
00029         ack= _i2c.write(NJU6063_SLAVE, data, 2);
00030         NJU6063_WAIT;
00031         if (ack) {
00032             ret = i-1;
00033             break;
00034         }
00035         else {
00036             ack= _i2c.write(NJU6063_SLAVE, data, 3);
00037         }
00038     }
00039 #else
00040     for (uint8_t i=1; i<=n; i++) {
00041         data[2] = i;
00042         ack= _i2c.write(NJU6063_SLAVE, data, 3);
00043         NJU6063_WAIT;
00044         if (ack) {
00045             ret = i-1;
00046             break;
00047         }
00048     }
00049 #endif
00050     return(ret);
00051 }
00052 void NJU6063::init(uint8_t chip_addr, uint8_t d)
00053 {
00054     char data[3];
00055     data[0] = chip_addr;
00056     data[1] = NJU6063_INIT;
00057     data[2] = d;
00058     ack = _i2c.write(NJU6063_SLAVE, data, 3);
00059     NJU6063_WAIT;
00060 }
00061 
00062 void NJU6063::set_iled(uint8_t chip_addr, uint8_t d1, uint8_t d2, uint8_t d3)
00063 {
00064     char data[3];
00065     data[0] = chip_addr;
00066     data[1] = NJU6063_ILED;
00067     data[2] = (0x03&d1) | (0x03&d2)<<2 | (0x03&d3) <<4;
00068     ack = _i2c.write(NJU6063_SLAVE, data, 3);
00069     NJU6063_WAIT;
00070 }
00071 
00072 void NJU6063::set_pwm(uint8_t chip_addr, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t loop, uint8_t son)
00073 {
00074     char data[7];
00075     data[0] = chip_addr;
00076     data[1] = NJU6063_PWM1;
00077     data[2] = d1;
00078     data[3] = d2;
00079     data[4] = d3;
00080     data[5] = loop;
00081     data[6] = son;
00082     ack = _i2c.write(NJU6063_SLAVE, data, 7);
00083     NJU6063_WAIT;
00084 }
00085 void NJU6063::dim_start(uint8_t chip_addr)
00086 {
00087     char data[3];
00088     data[0] = chip_addr;
00089     data[1] = NJU6063_START; // reg addres
00090     data[2] = 0x01; // start
00091     ack = _i2c.write(NJU6063_SLAVE, data, 3);
00092     NJU6063_WAIT;
00093 }
00094 
00095 void NJU6063::dim_stop(uint8_t chip_addr)
00096 {
00097     char data[3];
00098     data[0] = chip_addr;
00099     data[1] = NJU6063_START; // reg addres
00100     data[2] = 0x02; // stop
00101     ack = _i2c.write(NJU6063_SLAVE, data, 3);
00102     NJU6063_WAIT;
00103 }
00104 
00105 void NJU6063::check_dim(void)
00106 {
00107     uint8_t timeout = 0x0f;
00108     char data[3];
00109     data[0] = 0xff;
00110     data[1] = NJU6063_DCHK;
00111     data[2] = 0x00;
00112     do {
00113         ack = _i2c.write(NJU6063_SLAVE, data, 3, true);
00114         NJU6063_WAIT;
00115         timeout--;
00116         if (timeout==0) break;
00117     } while(!ack);
00118     NJU6063_WAIT_MS;
00119 }
00120 //#endif
00121