A small compact Library for the I2C IO-Expander TCA9538
TCA9538.h@1:6d5227745d28, 2019-07-30 (annotated)
- 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?
User | Revision | Line number | New 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 /* */ |