gfdgd
Fork of PCA995xA by
PCA9956A/PCA9956A.h@7:56a45c690801, 2018-08-14 (annotated)
- Committer:
- tb942
- Date:
- Tue Aug 14 18:26:35 2018 +0000
- Revision:
- 7:56a45c690801
- Parent:
- 5:cb07190e05e7
removed #include mbed.h - it's not needed;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nxp_ip | 0:a624e2eeccac | 1 | /** PCA9956A constant current LED driver |
nxp_ip | 0:a624e2eeccac | 2 | * |
nxp_ip | 0:a624e2eeccac | 3 | * An operation sample of PCA9956A 24-channel Fm+ I2C-bus 57mA/20V constant current LED driver. |
nxp_ip | 0:a624e2eeccac | 4 | * mbed accesses the PCA9956A registers through I2C. |
nxp_ip | 0:a624e2eeccac | 5 | * |
nxp_ip | 0:a624e2eeccac | 6 | * @class PCA9956A |
nxp_ip | 0:a624e2eeccac | 7 | * @author Akifumi (Tedd) OKANO, NXP Semiconductors |
nxp_ip | 4:fe221e1d4f44 | 8 | * @version 0.6 |
nxp_ip | 4:fe221e1d4f44 | 9 | * @date 19-Mar-2015 |
nxp_ip | 0:a624e2eeccac | 10 | * |
nxp_ip | 1:3522be54a4f5 | 11 | * Released under the Apache 2 license |
nxp_ip | 0:a624e2eeccac | 12 | * |
nxp_ip | 0:a624e2eeccac | 13 | * About PCA9956A: |
nxp_ip | 0:a624e2eeccac | 14 | * http://www.nxp.com/products/interface_and_connectivity/i2c/i2c_led_display_control/PCA9956ATW.html |
nxp_ip | 0:a624e2eeccac | 15 | */ |
nxp_ip | 0:a624e2eeccac | 16 | |
nxp_ip | 0:a624e2eeccac | 17 | #ifndef MBED_PCA9956A |
nxp_ip | 0:a624e2eeccac | 18 | #define MBED_PCA9956A |
nxp_ip | 0:a624e2eeccac | 19 | |
nxp_ip | 0:a624e2eeccac | 20 | #include "mbed.h" |
nxp_ip | 0:a624e2eeccac | 21 | #include "PCA995xA.h" |
nxp_ip | 2:eeea2e848b81 | 22 | #include "LedPwmOutCC.h" |
nxp_ip | 0:a624e2eeccac | 23 | |
nxp_ip | 0:a624e2eeccac | 24 | /** PCA9956A class |
nxp_ip | 0:a624e2eeccac | 25 | * |
nxp_ip | 0:a624e2eeccac | 26 | * This is a driver code for the PCA9956A 24-channel Fm+ I2C-bus 57mA/20V constant current LED driver. |
nxp_ip | 0:a624e2eeccac | 27 | * This class provides interface for PCA9956A operation and accessing its registers. |
nxp_ip | 0:a624e2eeccac | 28 | * Detail information is available on next URL. |
nxp_ip | 0:a624e2eeccac | 29 | * http://www.nxp.com/products/interface_and_connectivity/i2c/i2c_led_display_control/PCA9956ATW.html |
nxp_ip | 0:a624e2eeccac | 30 | * |
nxp_ip | 4:fe221e1d4f44 | 31 | * Next sample code shows operation based on low-level-API (operated by just device instane) |
nxp_ip | 4:fe221e1d4f44 | 32 | * |
nxp_ip | 0:a624e2eeccac | 33 | * Example: |
nxp_ip | 0:a624e2eeccac | 34 | * @code |
nxp_ip | 4:fe221e1d4f44 | 35 | * // PCA9956A operation sample using its device instance |
nxp_ip | 0:a624e2eeccac | 36 | * |
nxp_ip | 4:fe221e1d4f44 | 37 | * #include "mbed.h" |
nxp_ip | 0:a624e2eeccac | 38 | * #include "PCA9956A.h" |
nxp_ip | 4:fe221e1d4f44 | 39 | * |
nxp_ip | 0:a624e2eeccac | 40 | * PCA9956A led_cntlr( p28, p27, 0x02 ); // SDA, SCL, Slave_address(option) |
nxp_ip | 0:a624e2eeccac | 41 | * |
nxp_ip | 0:a624e2eeccac | 42 | * int main() |
nxp_ip | 0:a624e2eeccac | 43 | * { |
nxp_ip | 0:a624e2eeccac | 44 | * led_cntlr.current( ALLPORTS, 1.0 ); // Set all ports output current 100% |
nxp_ip | 0:a624e2eeccac | 45 | * |
nxp_ip | 0:a624e2eeccac | 46 | * while(1) { |
nxp_ip | 0:a624e2eeccac | 47 | * for ( int port = 0; port < led_cntlr.number_of_ports(); port++ ) { |
nxp_ip | 0:a624e2eeccac | 48 | * for ( int i = 1; i <= 100; i++ ) { |
nxp_ip | 0:a624e2eeccac | 49 | * led_cntlr.pwm( port, (float)i / 100.0 ); |
nxp_ip | 0:a624e2eeccac | 50 | * wait( 0.01 ); |
nxp_ip | 0:a624e2eeccac | 51 | * } |
nxp_ip | 0:a624e2eeccac | 52 | * } |
nxp_ip | 0:a624e2eeccac | 53 | * led_cntlr.pwm( ALLPORTS, 0.0 ); |
nxp_ip | 0:a624e2eeccac | 54 | * } |
nxp_ip | 0:a624e2eeccac | 55 | * } |
nxp_ip | 0:a624e2eeccac | 56 | * @endcode |
nxp_ip | 5:cb07190e05e7 | 57 | * |
nxp_ip | 4:fe221e1d4f44 | 58 | * The high-level-API:LedPwmOutCC is also available. |
nxp_ip | 4:fe221e1d4f44 | 59 | * It can be used like next sample code. |
nxp_ip | 4:fe221e1d4f44 | 60 | * |
nxp_ip | 4:fe221e1d4f44 | 61 | * @code |
nxp_ip | 4:fe221e1d4f44 | 62 | * // PCA9956A operation sample using high-level-API |
nxp_ip | 4:fe221e1d4f44 | 63 | * |
nxp_ip | 4:fe221e1d4f44 | 64 | * #include "mbed.h" |
nxp_ip | 4:fe221e1d4f44 | 65 | * #include "PCA9956A.h" |
nxp_ip | 4:fe221e1d4f44 | 66 | * |
nxp_ip | 4:fe221e1d4f44 | 67 | * PCA9956A led_cntlr( p28, p27, 0x02 ); // SDA, SCL, Slave_address(option) |
nxp_ip | 4:fe221e1d4f44 | 68 | * LedPwmOutCC led0( led_cntlr, L0 ); // Instance for LED0 pin |
nxp_ip | 4:fe221e1d4f44 | 69 | * LedPwmOutCC led1( led_cntlr, L1 ); // Instance for LED1 pin |
nxp_ip | 4:fe221e1d4f44 | 70 | * LedPwmOutCC led2( led_cntlr, L2 ); // Instance for LED2 pin |
nxp_ip | 4:fe221e1d4f44 | 71 | * |
nxp_ip | 4:fe221e1d4f44 | 72 | * int main() |
nxp_ip | 4:fe221e1d4f44 | 73 | * { |
nxp_ip | 4:fe221e1d4f44 | 74 | * led0.current( 0.5 ); // LED0 pin current output setting to 50% |
nxp_ip | 4:fe221e1d4f44 | 75 | * led1.current( 0.5 ); // LED1 pin current output setting to 50% |
nxp_ip | 4:fe221e1d4f44 | 76 | * led2.current( 0.5 ); // LED2 pin current output setting to 50% |
nxp_ip | 4:fe221e1d4f44 | 77 | * |
nxp_ip | 4:fe221e1d4f44 | 78 | * while(1) { |
nxp_ip | 4:fe221e1d4f44 | 79 | * |
nxp_ip | 4:fe221e1d4f44 | 80 | * for ( float p = 1.0; p >= 0.0; p -= 0.01 ) { |
nxp_ip | 4:fe221e1d4f44 | 81 | * led0 = p; // Set LED0 output PWM dutycycle as 'p' |
nxp_ip | 4:fe221e1d4f44 | 82 | * wait( 0.01 ); |
nxp_ip | 4:fe221e1d4f44 | 83 | * } |
nxp_ip | 4:fe221e1d4f44 | 84 | * |
nxp_ip | 4:fe221e1d4f44 | 85 | * for ( float p = 1.0; p >= 0.0; p -= 0.01 ) { |
nxp_ip | 4:fe221e1d4f44 | 86 | * led1 = p; // Set LED1 output PWM dutycycle as 'p' |
nxp_ip | 4:fe221e1d4f44 | 87 | * wait( 0.01 ); |
nxp_ip | 4:fe221e1d4f44 | 88 | * } |
nxp_ip | 4:fe221e1d4f44 | 89 | * |
nxp_ip | 4:fe221e1d4f44 | 90 | * for ( float p = 1.0; p >= 0.0; p -= 0.01 ) { |
nxp_ip | 4:fe221e1d4f44 | 91 | * led2 = p; // Set LED2 output PWM dutycycle as 'p' |
nxp_ip | 4:fe221e1d4f44 | 92 | * wait( 0.01 ); |
nxp_ip | 4:fe221e1d4f44 | 93 | * } |
nxp_ip | 4:fe221e1d4f44 | 94 | * } |
nxp_ip | 4:fe221e1d4f44 | 95 | * } |
nxp_ip | 4:fe221e1d4f44 | 96 | * @endcode |
nxp_ip | 0:a624e2eeccac | 97 | */ |
nxp_ip | 0:a624e2eeccac | 98 | class PCA9956A : public PCA995xA |
nxp_ip | 0:a624e2eeccac | 99 | { |
nxp_ip | 0:a624e2eeccac | 100 | public: |
nxp_ip | 4:fe221e1d4f44 | 101 | |
nxp_ip | 4:fe221e1d4f44 | 102 | #if DOXYGEN_ONLY |
nxp_ip | 4:fe221e1d4f44 | 103 | /** PCA9956A pin names high-level API i.e. LedPwmOutCC */ |
nxp_ip | 4:fe221e1d4f44 | 104 | typedef enum { |
nxp_ip | 4:fe221e1d4f44 | 105 | L0, /**< LED0 pin */ |
nxp_ip | 4:fe221e1d4f44 | 106 | L1, /**< LED1 pin */ |
nxp_ip | 4:fe221e1d4f44 | 107 | L2, /**< LED2 pin */ |
nxp_ip | 4:fe221e1d4f44 | 108 | L3, /**< LED3 pin */ |
nxp_ip | 4:fe221e1d4f44 | 109 | L4, /**< LED4 pin */ |
nxp_ip | 4:fe221e1d4f44 | 110 | L5, /**< LED5 pin */ |
nxp_ip | 4:fe221e1d4f44 | 111 | L6, /**< LED6 pin */ |
nxp_ip | 4:fe221e1d4f44 | 112 | L7, /**< LED7 pin */ |
nxp_ip | 4:fe221e1d4f44 | 113 | L8, /**< LED8 pin */ |
nxp_ip | 4:fe221e1d4f44 | 114 | L9, /**< LED9 pin */ |
nxp_ip | 4:fe221e1d4f44 | 115 | L10, /**< LED10 pin */ |
nxp_ip | 4:fe221e1d4f44 | 116 | L11, /**< LED11 pin */ |
nxp_ip | 4:fe221e1d4f44 | 117 | L12, /**< LED12 pin */ |
nxp_ip | 4:fe221e1d4f44 | 118 | L13, /**< LED13 pin */ |
nxp_ip | 4:fe221e1d4f44 | 119 | L14, /**< LED14 pin */ |
nxp_ip | 4:fe221e1d4f44 | 120 | L15, /**< LED15 pin */ |
nxp_ip | 4:fe221e1d4f44 | 121 | L16, /**< LED16 pin */ |
nxp_ip | 4:fe221e1d4f44 | 122 | L17, /**< LED17 pin */ |
nxp_ip | 4:fe221e1d4f44 | 123 | L18, /**< LED18 pin */ |
nxp_ip | 4:fe221e1d4f44 | 124 | L19, /**< LED19 pin */ |
nxp_ip | 4:fe221e1d4f44 | 125 | L20, /**< LED20 pin */ |
nxp_ip | 4:fe221e1d4f44 | 126 | L21, /**< LED21 pin */ |
nxp_ip | 4:fe221e1d4f44 | 127 | L22, /**< LED22 pin */ |
nxp_ip | 4:fe221e1d4f44 | 128 | L23, /**< LED23 pin */ |
nxp_ip | 4:fe221e1d4f44 | 129 | L_NC = ~0x0L /**< for when the pin is left no-connection */ |
nxp_ip | 4:fe221e1d4f44 | 130 | } LedPinName; |
nxp_ip | 4:fe221e1d4f44 | 131 | #endif // DOXYGEN_ONLY |
nxp_ip | 4:fe221e1d4f44 | 132 | |
nxp_ip | 5:cb07190e05e7 | 133 | /** Name of the PCA9956A registers (for direct register access) */ |
nxp_ip | 0:a624e2eeccac | 134 | enum command_reg { |
nxp_ip | 5:cb07190e05e7 | 135 | MODE1, /**< MODE1 register */ |
nxp_ip | 5:cb07190e05e7 | 136 | MODE2, /**< MODE2 register */ |
nxp_ip | 5:cb07190e05e7 | 137 | LEDOUT0, /**< LEDOUT0 register */ |
nxp_ip | 5:cb07190e05e7 | 138 | LEDOUT1, /**< LEDOUT1 register */ |
nxp_ip | 5:cb07190e05e7 | 139 | LEDOUT2, /**< LEDOUT2 register */ |
nxp_ip | 5:cb07190e05e7 | 140 | LEDOUT3, /**< LEDOUT3 register */ |
nxp_ip | 5:cb07190e05e7 | 141 | LEDOUT4, /**< LEDOUT4 register */ |
nxp_ip | 5:cb07190e05e7 | 142 | LEDOUT5, /**< LEDOUT5 register */ |
nxp_ip | 5:cb07190e05e7 | 143 | GRPPWM, /**< GRPPWM register */ |
nxp_ip | 5:cb07190e05e7 | 144 | GRPFREQ, /**< GRPFREQ register */ |
nxp_ip | 5:cb07190e05e7 | 145 | PWM0, /**< PWM0 register */ |
nxp_ip | 5:cb07190e05e7 | 146 | PWM1, /**< PWM1 register */ |
nxp_ip | 5:cb07190e05e7 | 147 | PWM2, /**< PWM2 register */ |
nxp_ip | 5:cb07190e05e7 | 148 | PWM3, /**< PWM3 register */ |
nxp_ip | 5:cb07190e05e7 | 149 | PWM4, /**< PWM4 register */ |
nxp_ip | 5:cb07190e05e7 | 150 | PWM5, /**< PWM5 register */ |
nxp_ip | 5:cb07190e05e7 | 151 | PWM6, /**< PWM6 register */ |
nxp_ip | 5:cb07190e05e7 | 152 | PWM7, /**< PWM7 register */ |
nxp_ip | 5:cb07190e05e7 | 153 | PWM8, /**< PWM8 register */ |
nxp_ip | 5:cb07190e05e7 | 154 | PWM9, /**< PWM9 register */ |
nxp_ip | 5:cb07190e05e7 | 155 | PWM10, /**< PWM10 register */ |
nxp_ip | 5:cb07190e05e7 | 156 | PWM11, /**< PWM11 register */ |
nxp_ip | 5:cb07190e05e7 | 157 | PWM12, /**< PWM12 register */ |
nxp_ip | 5:cb07190e05e7 | 158 | PWM13, /**< PWM13 register */ |
nxp_ip | 5:cb07190e05e7 | 159 | PWM14, /**< PWM14 register */ |
nxp_ip | 5:cb07190e05e7 | 160 | PWM15, /**< PWM15 register */ |
nxp_ip | 5:cb07190e05e7 | 161 | PWM16, /**< PWM16 register */ |
nxp_ip | 5:cb07190e05e7 | 162 | PWM17, /**< PWM17 register */ |
nxp_ip | 5:cb07190e05e7 | 163 | PWM18, /**< PWM18 register */ |
nxp_ip | 5:cb07190e05e7 | 164 | PWM19, /**< PWM19 register */ |
nxp_ip | 5:cb07190e05e7 | 165 | PWM20, /**< PWM20 register */ |
nxp_ip | 5:cb07190e05e7 | 166 | PWM21, /**< PWM21 register */ |
nxp_ip | 5:cb07190e05e7 | 167 | PWM22, /**< PWM22 register */ |
nxp_ip | 5:cb07190e05e7 | 168 | PWM23, /**< PWM23 register */ |
nxp_ip | 5:cb07190e05e7 | 169 | IREF0, /**< IREF0 register */ |
nxp_ip | 5:cb07190e05e7 | 170 | IREF1, /**< IREF1 register */ |
nxp_ip | 5:cb07190e05e7 | 171 | IREF2, /**< IREF2 register */ |
nxp_ip | 5:cb07190e05e7 | 172 | IREF3, /**< IREF3 register */ |
nxp_ip | 5:cb07190e05e7 | 173 | IREF4, /**< IREF4 register */ |
nxp_ip | 5:cb07190e05e7 | 174 | IREF5, /**< IREF5 register */ |
nxp_ip | 5:cb07190e05e7 | 175 | IREF6, /**< IREF6 register */ |
nxp_ip | 5:cb07190e05e7 | 176 | IREF7, /**< IREF7 register */ |
nxp_ip | 5:cb07190e05e7 | 177 | IREF8, /**< IREF8 register */ |
nxp_ip | 5:cb07190e05e7 | 178 | IREF9, /**< IREF9 register */ |
nxp_ip | 5:cb07190e05e7 | 179 | IREF10, /**< IREF10 register */ |
nxp_ip | 5:cb07190e05e7 | 180 | IREF11, /**< IREF11 register */ |
nxp_ip | 5:cb07190e05e7 | 181 | IREF12, /**< IREF12 register */ |
nxp_ip | 5:cb07190e05e7 | 182 | IREF13, /**< IREF13 register */ |
nxp_ip | 5:cb07190e05e7 | 183 | IREF14, /**< IREF14 register */ |
nxp_ip | 5:cb07190e05e7 | 184 | IREF15, /**< IREF15 register */ |
nxp_ip | 5:cb07190e05e7 | 185 | IREF16, /**< IREF16 register */ |
nxp_ip | 5:cb07190e05e7 | 186 | IREF17, /**< IREF17 register */ |
nxp_ip | 5:cb07190e05e7 | 187 | IREF18, /**< IREF18 register */ |
nxp_ip | 5:cb07190e05e7 | 188 | IREF19, /**< IREF19 register */ |
nxp_ip | 5:cb07190e05e7 | 189 | IREF20, /**< IREF20 register */ |
nxp_ip | 5:cb07190e05e7 | 190 | IREF21, /**< IREF21 register */ |
nxp_ip | 5:cb07190e05e7 | 191 | IREF22, /**< IREF22 register */ |
nxp_ip | 5:cb07190e05e7 | 192 | IREF23, /**< IREF23 register */ |
nxp_ip | 5:cb07190e05e7 | 193 | OFFSET = 0x3A, /**< OFFSET register */ |
nxp_ip | 5:cb07190e05e7 | 194 | SUBADR1, /**< SUBADR1 register */ |
nxp_ip | 5:cb07190e05e7 | 195 | SUBADR2, /**< SUBADR2 register */ |
nxp_ip | 5:cb07190e05e7 | 196 | SUBADR3, /**< SUBADR3 register */ |
nxp_ip | 5:cb07190e05e7 | 197 | ALLCALLADR, /**< ALLCALLADR register */ |
nxp_ip | 5:cb07190e05e7 | 198 | PWMALL, /**< PWMALL register */ |
nxp_ip | 5:cb07190e05e7 | 199 | IREFALL, /**< IREFALL register */ |
nxp_ip | 5:cb07190e05e7 | 200 | EFLAG0, /**< EFLAG0 register */ |
nxp_ip | 5:cb07190e05e7 | 201 | EFLAG1, /**< EFLAG1 register */ |
nxp_ip | 5:cb07190e05e7 | 202 | EFLAG2, /**< EFLAG2 register */ |
nxp_ip | 5:cb07190e05e7 | 203 | EFLAG3, /**< EFLAG3 register */ |
nxp_ip | 5:cb07190e05e7 | 204 | EFLAG4, /**< EFLAG4 register */ |
nxp_ip | 5:cb07190e05e7 | 205 | EFLAG5, /**< EFLAG5 register */ |
nxp_ip | 0:a624e2eeccac | 206 | |
nxp_ip | 0:a624e2eeccac | 207 | REGISTER_START = MODE1, |
nxp_ip | 0:a624e2eeccac | 208 | LEDOUT_REGISTER_START = LEDOUT0, |
nxp_ip | 0:a624e2eeccac | 209 | PWM_REGISTER_START = PWM0, |
nxp_ip | 0:a624e2eeccac | 210 | IREF_REGISTER_START = IREF0, |
nxp_ip | 0:a624e2eeccac | 211 | }; |
nxp_ip | 0:a624e2eeccac | 212 | |
nxp_ip | 5:cb07190e05e7 | 213 | /** Create a PCA9956A instance connected to specified I2C pins with specified address |
nxp_ip | 0:a624e2eeccac | 214 | * |
nxp_ip | 0:a624e2eeccac | 215 | * @param i2c_sda I2C-bus SDA pin |
nxp_ip | 0:a624e2eeccac | 216 | * @param i2c_sda I2C-bus SCL pin |
nxp_ip | 0:a624e2eeccac | 217 | * @param i2c_address I2C-bus address (default: 0xC0) |
nxp_ip | 0:a624e2eeccac | 218 | */ |
nxp_ip | 0:a624e2eeccac | 219 | PCA9956A( PinName i2c_sda, PinName i2c_scl, char i2c_address = PCA995xA::DEFAULT_I2C_ADDR ); |
nxp_ip | 0:a624e2eeccac | 220 | |
nxp_ip | 5:cb07190e05e7 | 221 | /** Create a PCA9956A instance connected to specified I2C pins with specified address |
nxp_ip | 0:a624e2eeccac | 222 | * |
nxp_ip | 0:a624e2eeccac | 223 | * @param i2c_obj I2C object (instance) |
nxp_ip | 0:a624e2eeccac | 224 | * @param i2c_address I2C-bus address (default: 0xC0) |
nxp_ip | 0:a624e2eeccac | 225 | */ |
nxp_ip | 0:a624e2eeccac | 226 | PCA9956A( I2C &i2c_obj, char i2c_address = PCA995xA::DEFAULT_I2C_ADDR ); |
nxp_ip | 0:a624e2eeccac | 227 | |
nxp_ip | 0:a624e2eeccac | 228 | /** Destractor |
nxp_ip | 0:a624e2eeccac | 229 | * |
nxp_ip | 0:a624e2eeccac | 230 | */ |
nxp_ip | 0:a624e2eeccac | 231 | virtual ~PCA9956A(); |
nxp_ip | 0:a624e2eeccac | 232 | |
nxp_ip | 0:a624e2eeccac | 233 | /** Returns the number of output ports |
nxp_ip | 0:a624e2eeccac | 234 | * |
nxp_ip | 0:a624e2eeccac | 235 | * @returns |
nxp_ip | 0:a624e2eeccac | 236 | * The number of output ports |
nxp_ip | 0:a624e2eeccac | 237 | */ |
nxp_ip | 0:a624e2eeccac | 238 | virtual int number_of_ports( void ); |
nxp_ip | 0:a624e2eeccac | 239 | |
nxp_ip | 0:a624e2eeccac | 240 | #if DOXYGEN_ONLY |
nxp_ip | 0:a624e2eeccac | 241 | /** Set the output duty-cycle, specified as a percentage (float) |
nxp_ip | 0:a624e2eeccac | 242 | * |
nxp_ip | 0:a624e2eeccac | 243 | * @param port Selecting output port |
nxp_ip | 0:a624e2eeccac | 244 | * 'ALLPORTS' can be used to set all port duty-cycle same value. |
nxp_ip | 0:a624e2eeccac | 245 | * @param v A floating-point value representing the output duty-cycle, |
nxp_ip | 0:a624e2eeccac | 246 | * specified as a percentage. The value should lie between |
nxp_ip | 1:3522be54a4f5 | 247 | * 0.0f (representing on 0%) and 1.0f (representing on 99.6%). |
nxp_ip | 0:a624e2eeccac | 248 | * Values outside this range will have undefined behavior. |
nxp_ip | 0:a624e2eeccac | 249 | */ |
nxp_ip | 0:a624e2eeccac | 250 | void pwm( int port, float v ); |
nxp_ip | 0:a624e2eeccac | 251 | |
nxp_ip | 0:a624e2eeccac | 252 | /** Set all output port duty-cycle, specified as a percentage (array of float) |
nxp_ip | 0:a624e2eeccac | 253 | * |
nxp_ip | 0:a624e2eeccac | 254 | * @param vp Aray to floating-point values representing the output duty-cycle, |
nxp_ip | 0:a624e2eeccac | 255 | * specified as a percentage. The value should lie between |
nxp_ip | 1:3522be54a4f5 | 256 | * 0.0f (representing on 0%) and 1.0f (representing on 99.6%). |
nxp_ip | 0:a624e2eeccac | 257 | * |
nxp_ip | 0:a624e2eeccac | 258 | * @note |
nxp_ip | 0:a624e2eeccac | 259 | * The aray should have length of 24 |
nxp_ip | 0:a624e2eeccac | 260 | */ |
nxp_ip | 0:a624e2eeccac | 261 | void pwm( float *vp ); |
nxp_ip | 0:a624e2eeccac | 262 | |
nxp_ip | 0:a624e2eeccac | 263 | /** Set the output current, specified as a percentage (float) |
nxp_ip | 0:a624e2eeccac | 264 | * |
nxp_ip | 0:a624e2eeccac | 265 | * @param port Selecting output port |
nxp_ip | 0:a624e2eeccac | 266 | * 'ALLPORTS' can be used to set all port duty-cycle same value. |
nxp_ip | 0:a624e2eeccac | 267 | * @param v A floating-point value representing the output current, |
nxp_ip | 0:a624e2eeccac | 268 | * specified as a percentage. The value should lie between |
nxp_ip | 0:a624e2eeccac | 269 | * 0.0f (representing on 0%) and 1.0f (representing on 100%). |
nxp_ip | 0:a624e2eeccac | 270 | * Values outside this range will have undefined behavior. |
nxp_ip | 0:a624e2eeccac | 271 | */ |
nxp_ip | 0:a624e2eeccac | 272 | void current( int port, float vp ); |
nxp_ip | 0:a624e2eeccac | 273 | |
nxp_ip | 0:a624e2eeccac | 274 | /** Set all output port curent, specified as a percentage (array of float) |
nxp_ip | 0:a624e2eeccac | 275 | * |
nxp_ip | 0:a624e2eeccac | 276 | * @param vp Aray to floating-point values representing the output current, |
nxp_ip | 0:a624e2eeccac | 277 | * specified as a percentage. The value should lie between |
nxp_ip | 0:a624e2eeccac | 278 | * 0.0f (representing on 0%) and 1.0f (representing on 100%). |
nxp_ip | 0:a624e2eeccac | 279 | * |
nxp_ip | 0:a624e2eeccac | 280 | * @note |
nxp_ip | 0:a624e2eeccac | 281 | * The aray should have length of 24 |
nxp_ip | 0:a624e2eeccac | 282 | */ |
nxp_ip | 0:a624e2eeccac | 283 | void current( float *vP ); |
nxp_ip | 0:a624e2eeccac | 284 | |
nxp_ip | 0:a624e2eeccac | 285 | /** Register write (single byte) : Low level access to device register |
nxp_ip | 0:a624e2eeccac | 286 | * |
nxp_ip | 0:a624e2eeccac | 287 | * @param reg_addr Register address |
nxp_ip | 0:a624e2eeccac | 288 | * @param data Value for setting into the register |
nxp_ip | 0:a624e2eeccac | 289 | */ |
nxp_ip | 0:a624e2eeccac | 290 | void write( char reg_addr, char data ); |
nxp_ip | 0:a624e2eeccac | 291 | |
nxp_ip | 0:a624e2eeccac | 292 | /** Register write (multiple bytes) : Low level access to device register |
nxp_ip | 0:a624e2eeccac | 293 | * |
nxp_ip | 0:a624e2eeccac | 294 | * @param data Pointer to an array. First 1 byte should be the writing start register address |
nxp_ip | 0:a624e2eeccac | 295 | * @param length Length of data |
nxp_ip | 0:a624e2eeccac | 296 | */ |
nxp_ip | 0:a624e2eeccac | 297 | void write( char *data, int length ); |
nxp_ip | 0:a624e2eeccac | 298 | |
nxp_ip | 0:a624e2eeccac | 299 | /** Register read (single byte) : Low level access to device register |
nxp_ip | 0:a624e2eeccac | 300 | * |
nxp_ip | 0:a624e2eeccac | 301 | * @param reg_addr Register address |
nxp_ip | 0:a624e2eeccac | 302 | * @return Read value from register |
nxp_ip | 0:a624e2eeccac | 303 | */ |
nxp_ip | 0:a624e2eeccac | 304 | char read( char reg_addr ); |
nxp_ip | 0:a624e2eeccac | 305 | |
nxp_ip | 0:a624e2eeccac | 306 | /** Register write (multiple bytes) : Low level access to device register |
nxp_ip | 0:a624e2eeccac | 307 | * |
nxp_ip | 0:a624e2eeccac | 308 | * @param reg_addr Register address |
nxp_ip | 0:a624e2eeccac | 309 | * @param data Pointer to an array. The values are stored in this array. |
nxp_ip | 0:a624e2eeccac | 310 | * @param length Length of data |
nxp_ip | 0:a624e2eeccac | 311 | */ |
nxp_ip | 0:a624e2eeccac | 312 | void read( char reg_addr, char *data, int length ); |
nxp_ip | 0:a624e2eeccac | 313 | #endif |
nxp_ip | 0:a624e2eeccac | 314 | |
nxp_ip | 0:a624e2eeccac | 315 | private: |
nxp_ip | 0:a624e2eeccac | 316 | void initialize( void ); |
nxp_ip | 0:a624e2eeccac | 317 | virtual char pwm_register_access( int port ); |
nxp_ip | 0:a624e2eeccac | 318 | virtual char current_register_access( int port ); |
nxp_ip | 0:a624e2eeccac | 319 | |
nxp_ip | 0:a624e2eeccac | 320 | const int n_of_ports; |
nxp_ip | 0:a624e2eeccac | 321 | } |
nxp_ip | 0:a624e2eeccac | 322 | ; |
nxp_ip | 0:a624e2eeccac | 323 | |
nxp_ip | 0:a624e2eeccac | 324 | #endif // MBED_PCA9956A |