A small compact Library for the I2C IO-Expander TCA9538

Committer:
joelvonrotz
Date:
Tue Jul 30 13:58:25 2019 +0000
Revision:
1:6d5227745d28
Parent:
0:b6e63b82937d
updated to mbed doc format

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joelvonrotz 0:b6e63b82937d 1 #ifndef TCA9538_H
joelvonrotz 0:b6e63b82937d 2 #define TCA9538_H
joelvonrotz 0:b6e63b82937d 3
joelvonrotz 0:b6e63b82937d 4 #include "mbed.h"
joelvonrotz 0:b6e63b82937d 5
joelvonrotz 0:b6e63b82937d 6 /**
joelvonrotz 0:b6e63b82937d 7 * @brief Class for TCA9538 IO-Expander
joelvonrotz 0:b6e63b82937d 8 *
joelvonrotz 0:b6e63b82937d 9 * The TCA9538 is an 8-bit IO-Expander from Texas Instruments.
joelvonrotz 0:b6e63b82937d 10 *
joelvonrotz 0:b6e63b82937d 11 * <h2>Example</h2>
joelvonrotz 1:6d5227745d28 12 * @code
joelvonrotz 0:b6e63b82937d 13 * #include "mbed.h"
joelvonrotz 0:b6e63b82937d 14 * #include "TCA9538.h"
joelvonrotz 0:b6e63b82937d 15 *
joelvonrotz 0:b6e63b82937d 16 * I2C i2c(p9, p10);
joelvonrotz 0:b6e63b82937d 17 * DigitalOut io_exp_reset(p11);
joelvonrotz 0:b6e63b82937d 18 * TCA9538 io_exp(i2c,0x70);
joelvonrotz 0:b6e63b82937d 19 *
joelvonrotz 0:b6e63b82937d 20 * int main(void)
joelvonrotz 0:b6e63b82937d 21 * {
joelvonrotz 0:b6e63b82937d 22 * io_exp_reset = 1; //turn IO-Expander on
joelvonrotz 0:b6e63b82937d 23 * io_exp.set(TCA9538::CONFIG, 0x0F); //Bits 0-3 Inputs ; Bits 4-7 Outputs
joelvonrotz 0:b6e63b82937d 24 *
joelvonrotz 0:b6e63b82937d 25 * io_exp.set(TCA9538::OUTPUT, 0xF0); //Turn all output pins on
joelvonrotz 0:b6e63b82937d 26 * while(1)
joelvonrotz 0:b6e63b82937d 27 * {
joelvonrotz 0:b6e63b82937d 28 * uint8_t input_value = io_exp.get(TCA9538::OUTPUT);
joelvonrotz 0:b6e63b82937d 29 * }
joelvonrotz 0:b6e63b82937d 30 * }
joelvonrotz 1:6d5227745d28 31 * @endcode
joelvonrotz 0:b6e63b82937d 32 */
joelvonrotz 0:b6e63b82937d 33 class TCA9538{
joelvonrotz 0:b6e63b82937d 34 public:
joelvonrotz 0:b6e63b82937d 35 enum tca9538_registers_t
joelvonrotz 0:b6e63b82937d 36 {
joelvonrotz 0:b6e63b82937d 37 INPUT = 0x00,
joelvonrotz 0:b6e63b82937d 38 OUTPUT = 0x01,
joelvonrotz 0:b6e63b82937d 39 POLARITY = 0x02,
joelvonrotz 0:b6e63b82937d 40 CONFIG = 0x03
joelvonrotz 0:b6e63b82937d 41 };
joelvonrotz 0:b6e63b82937d 42
joelvonrotz 0:b6e63b82937d 43 bool set(tca9538_registers_t index, uint8_t value);
joelvonrotz 0:b6e63b82937d 44 uint8_t get(tca9538_registers_t index);
joelvonrotz 0:b6e63b82937d 45
joelvonrotz 0:b6e63b82937d 46 TCA9538(I2C& i2c_device, uint8_t address);
joelvonrotz 0:b6e63b82937d 47
joelvonrotz 0:b6e63b82937d 48 private:
joelvonrotz 0:b6e63b82937d 49 uint8_t m_i2c_address;
joelvonrotz 0:b6e63b82937d 50 I2C& m_i2c_device;
joelvonrotz 0:b6e63b82937d 51 };
joelvonrotz 0:b6e63b82937d 52
joelvonrotz 0:b6e63b82937d 53 #endif /* */