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);
124 void reg_access( uint8_t reg, uint8_t val );
125 void reg_access( uint8_t reg, uint8_t *vp,
int len );
126 uint8_t reg_access( uint8_t reg );
127 void reg_access_r( uint8_t reg, uint8_t *vp,
int len );
135 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 );
138 void txrx( uint8_t *data,
int size );
140 void reg_access( uint8_t reg, uint8_t val );
141 void reg_access( uint8_t reg, uint8_t *vp,
int len );
142 uint8_t reg_access( uint8_t reg );
143 void reg_access_r( uint8_t reg, uint8_t *vp,
int len );
145 void reg_w( uint8_t reg, uint8_t val );
146 void reg_w( uint8_t reg, uint8_t *vp,
int len );
147 uint8_t reg_r( uint8_t reg );
148 void reg_r( uint8_t reg, uint8_t *vp,
int len );
149 void write_r8( uint8_t reg, uint8_t val );
150 uint8_t read_r8( uint8_t reg );
158 void pwm( uint8_t ch,
float value );
159 void pwm(
float* values );
180 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3,
182 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7,
183 PWM8, PWM9, PWM10, PWM11, PWM12, PWM13, PWM14, PWM15,
184 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5, IREF6, IREF7,
185 IREF8, IREF9, IREF10, IREF11, IREF12, IREF13, IREF14, IREF15,
186 RAMP_RATE_GRP0, STEP_TIME_GRP0, HOLD_CNTL_GRP0, IREF_GRP0,
187 RAMP_RATE_GRP1, STEP_TIME_GRP1, HOLD_CNTL_GRP1, IREF_GRP1,
188 RAMP_RATE_GRP2, STEP_TIME_GRP2, HOLD_CNTL_GRP2, IREF_GRP2,
189 RAMP_RATE_GRP3, STEP_TIME_GRP3, HOLD_CNTL_GRP3, IREF_GRP3,
190 GRAD_MODE_SEL0, GRAD_MODE_SEL1,
191 GRAD_GRP_SEL0, GRAD_GRP_SEL1, GRAD_GRP_SEL2, GRAD_GRP_SEL3,
194 SUBADR1, SUBADR2, SUBADR3, ALLCALLADR,
196 EFLAG0, EFLAG1, EFLAG2, EFLAG3,
203 PCA9955B( uint8_t i2c_address = (0xBC >> 1) );
210 void init(
float current );
212 static constexpr uint8_t access_ref[ NUM_access_word ] = {
221 static const int n_group;
233 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5,
235 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5,
236 PWM6, PWM7, PWM8, PWM9, PWM10, PWM11,
237 PWM12, PWM13, PWM14, PWM15, PWM16, PWM17,
238 PWM18, PWM19, PWM20, PWM21, PWM22, PWM23,
239 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5,
240 IREF6, IREF7, IREF8, IREF9, IREF10, IREF11,
241 IREF12, IREF13, IREF14, IREF15, IREF16, IREF17,
242 IREF18, IREF19, IREF20, IREF21, IREF22, IREF23,
244 SUBADR1, SUBADR2, SUBADR3, ALLCALLADR,
246 EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5
252 PCA9956B( uint8_t i2c_address = (0x02 >> 1) );
259 void init(
float current );
261 static constexpr uint8_t access_ref[ NUM_access_word ] = {
279 EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5,
280 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5,
282 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5,
283 PWM6, PWM7, PWM8, PWM9, PWM10, PWM11,
284 PWM12, PWM13, PWM14, PWM15, PWM16, PWM17,
285 PWM18, PWM19, PWM20, PWM21, PWM22, PWM23,
286 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5,
287 IREF6, IREF7, IREF8, IREF9, IREF10, IREF11,
288 IREF12, IREF13, IREF14, IREF15, IREF16, IREF17,
289 IREF18, IREF19, IREF20, IREF21, IREF22, IREF23,
290 RAMP_RATE_GRP0, STEP_TIME_GRP0, HOLD_CNTL_GRP0, IREF_GRP0,
291 RAMP_RATE_GRP1, STEP_TIME_GRP1, HOLD_CNTL_GRP1, IREF_GRP1,
292 RAMP_RATE_GRP2, STEP_TIME_GRP2, HOLD_CNTL_GRP2, IREF_GRP2,
293 RAMP_RATE_GRP3, STEP_TIME_GRP3, HOLD_CNTL_GRP3, IREF_GRP3,
294 RAMP_RATE_GRP4, STEP_TIME_GRP4, HOLD_CNTL_GRP4, IREF_GRP4,
295 RAMP_RATE_GRP5, STEP_TIME_GRP5, HOLD_CNTL_GRP5, IREF_GRP5,
296 GRAD_MODE_SEL0, GRAD_MODE_SEL1, GRAD_MODE_SEL2,
297 GRAD_GRP_SEL0, GRAD_GRP_SEL1, GRAD_GRP_SEL2,
298 GRAD_GRP_SEL3, GRAD_GRP_SEL4, GRAD_GRP_SEL5,
299 GRAD_GRP_SEL6, GRAD_GRP_SEL7, GRAD_GRP_SEL8,
300 GRAD_GRP_SEL9, GRAD_GRP_SEL10, GRAD_GRP_SEL11,
301 GRAD_CNTL0, GRAD_CNTL1,
317 void init(
float current );
319 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)