8#ifndef ARDUINO_LED_DRIVER_NXP_ARD_H
9#define ARDUINO_LED_DRIVER_NXP_ARD_H
14#include <I2C_device.h>
17enum access_word : uint8_t
43 LEDDriver( uint8_t n_ch, uint8_t PWM_r, uint8_t oe );
45 virtual void reg_access( uint8_t reg, uint8_t val ) = 0;
46 virtual void reg_access( uint8_t reg, uint8_t *vp,
int len ) = 0;
47 virtual uint8_t reg_access( uint8_t reg ) = 0;
48 virtual void reg_access_r( uint8_t reg, uint8_t *vp,
int len ) = 0;
55 void pwm( uint8_t ch,
float value );
62 void pwm(
float* values );
76 const uint8_t n_channel;
79 const uint8_t reg_PWM;
97 PCA995x(
const uint8_t n_ch,
const uint8_t PWM_r,
const uint8_t IREF_r,
const uint8_t IREFALL_r,
const uint8_t* ar,
const uint8_t oe = 8 );
100 virtual void begin(
float current = 0.1, board env = NONE,
bool buffered =
false );
101 virtual void init(
float current ) = 0;
110 const uint8_t reg_IREF;
111 const uint8_t reg_IREFALL;
121 PCA995x_I2C(
const uint8_t i2c_address,
const uint8_t n_ch,
const uint8_t PWM_r,
const uint8_t IREF_r,
const uint8_t IREFALL_r,
const uint8_t* ar,
const uint8_t oe = 8);
122 PCA995x_I2C( TwoWire& wire,
const uint8_t i2c_address,
const uint8_t n_ch,
const uint8_t PWM_r,
const uint8_t IREF_r,
const uint8_t IREFALL_r,
const uint8_t* ar,
const uint8_t oe = 8);
125 void reg_access( uint8_t reg, uint8_t val );
126 void reg_access( uint8_t reg, uint8_t *vp,
int len );
127 uint8_t reg_access( uint8_t reg );
128 void reg_access_r( uint8_t reg, uint8_t *vp,
int len );
136 PCA995x_SPI(
const uint8_t n_ch,
const uint8_t PWM_r,
const uint8_t IREF_r,
const uint8_t IREFALL_r,
const uint8_t* ar,
const uint8_t oe = 9 );
139 void txrx( uint8_t *data,
int size );
141 void reg_access( uint8_t reg, uint8_t val );
142 void reg_access( uint8_t reg, uint8_t *vp,
int len );
143 uint8_t reg_access( uint8_t reg );
144 void reg_access_r( uint8_t reg, uint8_t *vp,
int len );
146 void reg_w( uint8_t reg, uint8_t val );
147 void reg_w( uint8_t reg, uint8_t *vp,
int len );
148 uint8_t reg_r( uint8_t reg );
149 void reg_r( uint8_t reg, uint8_t *vp,
int len );
150 void write_r8( uint8_t reg, uint8_t val );
151 uint8_t read_r8( uint8_t reg );
159 void pwm( uint8_t ch,
float value );
160 void pwm(
float* values );
163 SPISettings spi_setting;
184 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3,
186 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7,
187 PWM8, PWM9, PWM10, PWM11, PWM12, PWM13, PWM14, PWM15,
188 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5, IREF6, IREF7,
189 IREF8, IREF9, IREF10, IREF11, IREF12, IREF13, IREF14, IREF15,
190 RAMP_RATE_GRP0, STEP_TIME_GRP0, HOLD_CNTL_GRP0, IREF_GRP0,
191 RAMP_RATE_GRP1, STEP_TIME_GRP1, HOLD_CNTL_GRP1, IREF_GRP1,
192 RAMP_RATE_GRP2, STEP_TIME_GRP2, HOLD_CNTL_GRP2, IREF_GRP2,
193 RAMP_RATE_GRP3, STEP_TIME_GRP3, HOLD_CNTL_GRP3, IREF_GRP3,
194 GRAD_MODE_SEL0, GRAD_MODE_SEL1,
195 GRAD_GRP_SEL0, GRAD_GRP_SEL1, GRAD_GRP_SEL2, GRAD_GRP_SEL3,
198 SUBADR1, SUBADR2, SUBADR3, ALLCALLADR,
200 EFLAG0, EFLAG1, EFLAG2, EFLAG3,
207 PCA9955B( uint8_t i2c_address = (0xBC >> 1) );
214 PCA9955B( TwoWire& wire, uint8_t i2c_address = (0xBC >> 1) );
221 void init(
float current );
223 static constexpr uint8_t access_ref[ NUM_access_word ] = {
232 static const int n_group;
244 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5,
246 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5,
247 PWM6, PWM7, PWM8, PWM9, PWM10, PWM11,
248 PWM12, PWM13, PWM14, PWM15, PWM16, PWM17,
249 PWM18, PWM19, PWM20, PWM21, PWM22, PWM23,
250 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5,
251 IREF6, IREF7, IREF8, IREF9, IREF10, IREF11,
252 IREF12, IREF13, IREF14, IREF15, IREF16, IREF17,
253 IREF18, IREF19, IREF20, IREF21, IREF22, IREF23,
255 SUBADR1, SUBADR2, SUBADR3, ALLCALLADR,
257 EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5
263 PCA9956B( uint8_t i2c_address = (0x02 >> 1) );
270 PCA9956B( TwoWire& wire, uint8_t i2c_address = (0x02 >> 1) );
277 void init(
float current );
279 static constexpr uint8_t access_ref[ NUM_access_word ] = {
297 EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5,
298 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5,
300 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5,
301 PWM6, PWM7, PWM8, PWM9, PWM10, PWM11,
302 PWM12, PWM13, PWM14, PWM15, PWM16, PWM17,
303 PWM18, PWM19, PWM20, PWM21, PWM22, PWM23,
304 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5,
305 IREF6, IREF7, IREF8, IREF9, IREF10, IREF11,
306 IREF12, IREF13, IREF14, IREF15, IREF16, IREF17,
307 IREF18, IREF19, IREF20, IREF21, IREF22, IREF23,
308 RAMP_RATE_GRP0, STEP_TIME_GRP0, HOLD_CNTL_GRP0, IREF_GRP0,
309 RAMP_RATE_GRP1, STEP_TIME_GRP1, HOLD_CNTL_GRP1, IREF_GRP1,
310 RAMP_RATE_GRP2, STEP_TIME_GRP2, HOLD_CNTL_GRP2, IREF_GRP2,
311 RAMP_RATE_GRP3, STEP_TIME_GRP3, HOLD_CNTL_GRP3, IREF_GRP3,
312 RAMP_RATE_GRP4, STEP_TIME_GRP4, HOLD_CNTL_GRP4, IREF_GRP4,
313 RAMP_RATE_GRP5, STEP_TIME_GRP5, HOLD_CNTL_GRP5, IREF_GRP5,
314 GRAD_MODE_SEL0, GRAD_MODE_SEL1, GRAD_MODE_SEL2,
315 GRAD_GRP_SEL0, GRAD_GRP_SEL1, GRAD_GRP_SEL2,
316 GRAD_GRP_SEL3, GRAD_GRP_SEL4, GRAD_GRP_SEL5,
317 GRAD_GRP_SEL6, GRAD_GRP_SEL7, GRAD_GRP_SEL8,
318 GRAD_GRP_SEL9, GRAD_GRP_SEL10, GRAD_GRP_SEL11,
319 GRAD_CNTL0, GRAD_CNTL1,
335 void init(
float current );
337 static constexpr uint8_t access_ref[ NUM_access_word ] = {
void pwm(uint8_t ch, float value)
void buffer_enable(bool flag)
static const uint8_t n_channel
static const uint8_t n_channel
static const uint8_t n_channel
void irefall(uint8_t iref)
void irefall(uint8_t iref)