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 );
181 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3,
183 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7,
184 PWM8, PWM9, PWM10, PWM11, PWM12, PWM13, PWM14, PWM15,
185 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5, IREF6, IREF7,
186 IREF8, IREF9, IREF10, IREF11, IREF12, IREF13, IREF14, IREF15,
187 RAMP_RATE_GRP0, STEP_TIME_GRP0, HOLD_CNTL_GRP0, IREF_GRP0,
188 RAMP_RATE_GRP1, STEP_TIME_GRP1, HOLD_CNTL_GRP1, IREF_GRP1,
189 RAMP_RATE_GRP2, STEP_TIME_GRP2, HOLD_CNTL_GRP2, IREF_GRP2,
190 RAMP_RATE_GRP3, STEP_TIME_GRP3, HOLD_CNTL_GRP3, IREF_GRP3,
191 GRAD_MODE_SEL0, GRAD_MODE_SEL1,
192 GRAD_GRP_SEL0, GRAD_GRP_SEL1, GRAD_GRP_SEL2, GRAD_GRP_SEL3,
195 SUBADR1, SUBADR2, SUBADR3, ALLCALLADR,
197 EFLAG0, EFLAG1, EFLAG2, EFLAG3,
204 PCA9955B( uint8_t i2c_address = (0xBC >> 1) );
211 PCA9955B( TwoWire& wire, uint8_t i2c_address = (0xBC >> 1) );
218 void init(
float current );
220 static constexpr uint8_t access_ref[ NUM_access_word ] = {
229 static const int n_group;
241 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5,
243 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5,
244 PWM6, PWM7, PWM8, PWM9, PWM10, PWM11,
245 PWM12, PWM13, PWM14, PWM15, PWM16, PWM17,
246 PWM18, PWM19, PWM20, PWM21, PWM22, PWM23,
247 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5,
248 IREF6, IREF7, IREF8, IREF9, IREF10, IREF11,
249 IREF12, IREF13, IREF14, IREF15, IREF16, IREF17,
250 IREF18, IREF19, IREF20, IREF21, IREF22, IREF23,
252 SUBADR1, SUBADR2, SUBADR3, ALLCALLADR,
254 EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5
260 PCA9956B( uint8_t i2c_address = (0x02 >> 1) );
267 PCA9956B( TwoWire& wire, uint8_t i2c_address = (0x02 >> 1) );
274 void init(
float current );
276 static constexpr uint8_t access_ref[ NUM_access_word ] = {
294 EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5,
295 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5,
297 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5,
298 PWM6, PWM7, PWM8, PWM9, PWM10, PWM11,
299 PWM12, PWM13, PWM14, PWM15, PWM16, PWM17,
300 PWM18, PWM19, PWM20, PWM21, PWM22, PWM23,
301 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5,
302 IREF6, IREF7, IREF8, IREF9, IREF10, IREF11,
303 IREF12, IREF13, IREF14, IREF15, IREF16, IREF17,
304 IREF18, IREF19, IREF20, IREF21, IREF22, IREF23,
305 RAMP_RATE_GRP0, STEP_TIME_GRP0, HOLD_CNTL_GRP0, IREF_GRP0,
306 RAMP_RATE_GRP1, STEP_TIME_GRP1, HOLD_CNTL_GRP1, IREF_GRP1,
307 RAMP_RATE_GRP2, STEP_TIME_GRP2, HOLD_CNTL_GRP2, IREF_GRP2,
308 RAMP_RATE_GRP3, STEP_TIME_GRP3, HOLD_CNTL_GRP3, IREF_GRP3,
309 RAMP_RATE_GRP4, STEP_TIME_GRP4, HOLD_CNTL_GRP4, IREF_GRP4,
310 RAMP_RATE_GRP5, STEP_TIME_GRP5, HOLD_CNTL_GRP5, IREF_GRP5,
311 GRAD_MODE_SEL0, GRAD_MODE_SEL1, GRAD_MODE_SEL2,
312 GRAD_GRP_SEL0, GRAD_GRP_SEL1, GRAD_GRP_SEL2,
313 GRAD_GRP_SEL3, GRAD_GRP_SEL4, GRAD_GRP_SEL5,
314 GRAD_GRP_SEL6, GRAD_GRP_SEL7, GRAD_GRP_SEL8,
315 GRAD_GRP_SEL9, GRAD_GRP_SEL10, GRAD_GRP_SEL11,
316 GRAD_CNTL0, GRAD_CNTL1,
332 void init(
float current );
334 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)