Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: PCAL9555_Hello OM13082-JoyStick OM13082_LED OM13082-test ... more
base_classes/CompGpioExp/GpioDigital/GpioDigitalInOut.h@1:fd7cfa821b6a, 2015-03-19 (annotated)
- Committer:
- nxp_ip
- Date:
- Thu Mar 19 02:21:57 2015 +0000
- Revision:
- 1:fd7cfa821b6a
- Parent:
- 0:6c9a51a50eea
API document update
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| nxp_ip | 0:6c9a51a50eea | 1 | /** GpioDigitalInOut API for GPIO-expander component class |
| nxp_ip | 0:6c9a51a50eea | 2 | * |
| nxp_ip | 0:6c9a51a50eea | 3 | * @author Akifumi (Tedd) OKANO, NXP Semiconductors |
| nxp_ip | 1:fd7cfa821b6a | 4 | * @version 0.6 |
| nxp_ip | 1:fd7cfa821b6a | 5 | * @date 19-Mar-2015 |
| nxp_ip | 0:6c9a51a50eea | 6 | * |
| nxp_ip | 0:6c9a51a50eea | 7 | * Released under the Apache 2 license |
| nxp_ip | 0:6c9a51a50eea | 8 | */ |
| nxp_ip | 0:6c9a51a50eea | 9 | |
| nxp_ip | 0:6c9a51a50eea | 10 | #ifndef MBED_GpioDigitalInOut |
| nxp_ip | 0:6c9a51a50eea | 11 | #define MBED_GpioDigitalInOut |
| nxp_ip | 0:6c9a51a50eea | 12 | |
| nxp_ip | 0:6c9a51a50eea | 13 | #include "mbed.h" |
| nxp_ip | 0:6c9a51a50eea | 14 | #include "CompGpioExp.h" |
| nxp_ip | 0:6c9a51a50eea | 15 | #include "GpioDigitalInOut.h" |
| nxp_ip | 0:6c9a51a50eea | 16 | |
| nxp_ip | 0:6c9a51a50eea | 17 | /** GpioDigitalInOut class |
| nxp_ip | 0:6c9a51a50eea | 18 | * |
| nxp_ip | 0:6c9a51a50eea | 19 | * @class GpioDigitalInOut |
| nxp_ip | 0:6c9a51a50eea | 20 | * |
| nxp_ip | 0:6c9a51a50eea | 21 | * "GpioDigitalInOut" class works like "DigitalInOut" class of mbed-SDK. |
| nxp_ip | 0:6c9a51a50eea | 22 | * This class provides pin oriented API, abstracting the GPIO-expander chip. |
| nxp_ip | 0:6c9a51a50eea | 23 | * |
| nxp_ip | 0:6c9a51a50eea | 24 | * Example: |
| nxp_ip | 0:6c9a51a50eea | 25 | * @code |
| nxp_ip | 0:6c9a51a50eea | 26 | * #include "mbed.h" |
| nxp_ip | 0:6c9a51a50eea | 27 | * #include "PCAL9555.h" |
| nxp_ip | 0:6c9a51a50eea | 28 | * |
| nxp_ip | 0:6c9a51a50eea | 29 | * PCAL9555 gpio_exp( p28, p27, 0x40 ); // SDA, SCL, Slave_address(option) |
| nxp_ip | 0:6c9a51a50eea | 30 | * GpioDigitalInOut pin( gpio_exp, X0_0 ); |
| nxp_ip | 0:6c9a51a50eea | 31 | * |
| nxp_ip | 0:6c9a51a50eea | 32 | * int main() |
| nxp_ip | 0:6c9a51a50eea | 33 | * { |
| nxp_ip | 0:6c9a51a50eea | 34 | * pin.output(); |
| nxp_ip | 0:6c9a51a50eea | 35 | * pin = 0; |
| nxp_ip | 0:6c9a51a50eea | 36 | * wait_us( 500 ); |
| nxp_ip | 0:6c9a51a50eea | 37 | * pin.input(); |
| nxp_ip | 0:6c9a51a50eea | 38 | * wait_us( 500 ); |
| nxp_ip | 0:6c9a51a50eea | 39 | * } |
| nxp_ip | 0:6c9a51a50eea | 40 | * @endcode |
| nxp_ip | 0:6c9a51a50eea | 41 | */ |
| nxp_ip | 0:6c9a51a50eea | 42 | class GpioDigitalInOut |
| nxp_ip | 0:6c9a51a50eea | 43 | { |
| nxp_ip | 0:6c9a51a50eea | 44 | public: |
| nxp_ip | 0:6c9a51a50eea | 45 | |
| nxp_ip | 1:fd7cfa821b6a | 46 | #if DOXYGEN_ONLY |
| nxp_ip | 1:fd7cfa821b6a | 47 | /** GPIO-Expander pin names */ |
| nxp_ip | 1:fd7cfa821b6a | 48 | typedef enum { |
| nxp_ip | 1:fd7cfa821b6a | 49 | X0_0, /**< P0_0 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 50 | X0_1, /**< P0_1 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 51 | X0_2, /**< P0_2 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 52 | X0_3, /**< P0_3 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 53 | X0_4, /**< P0_4 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 54 | X0_5, /**< P0_5 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 55 | X0_6, /**< P0_6 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 56 | X0_7, /**< P0_7 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 57 | X1_0, /**< P1_0 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 58 | X1_1, /**< P1_1 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 59 | X1_2, /**< P1_2 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 60 | X1_3, /**< P1_3 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 61 | X1_4, /**< P1_4 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 62 | X1_5, /**< P1_5 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 63 | X1_6, /**< P1_6 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 64 | X1_7, /**< P1_7 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 65 | X0 = X0_0, /**< P0_0 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 66 | X1 = X0_1, /**< P0_1 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 67 | X2 = X0_2, /**< P0_2 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 68 | X3 = X0_3, /**< P0_3 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 69 | X4 = X0_4, /**< P0_4 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 70 | X5 = X0_5, /**< P0_5 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 71 | X6 = X0_6, /**< P0_6 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 72 | X7 = X0_7, /**< P0_7 pin */ |
| nxp_ip | 1:fd7cfa821b6a | 73 | X8 = X1_0, /**< P1_0 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 74 | X9 = X1_1, /**< P1_1 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 75 | X10 = X1_2, /**< P1_2 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 76 | X11 = X1_3, /**< P1_3 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 77 | X12 = X1_4, /**< P1_4 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 78 | X13 = X1_5, /**< P1_5 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 79 | X14 = X1_6, /**< P1_6 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 80 | X15 = X1_7, /**< P1_7 pin (for 16-bit GPIO device only) */ |
| nxp_ip | 1:fd7cfa821b6a | 81 | |
| nxp_ip | 1:fd7cfa821b6a | 82 | X_NC = ~0x0L /**< for when the pin is left no-connection */ |
| nxp_ip | 1:fd7cfa821b6a | 83 | } GpioPinName; |
| nxp_ip | 1:fd7cfa821b6a | 84 | #endif |
| nxp_ip | 1:fd7cfa821b6a | 85 | |
| nxp_ip | 0:6c9a51a50eea | 86 | /** Create a GpioDigitalInOut connected to the specified pin |
| nxp_ip | 0:6c9a51a50eea | 87 | * |
| nxp_ip | 0:6c9a51a50eea | 88 | * @param gpiop Instance of GPIO expander device |
| nxp_ip | 0:6c9a51a50eea | 89 | * @param pin_name DigitalInOut pin to connect to |
| nxp_ip | 0:6c9a51a50eea | 90 | */ |
| nxp_ip | 0:6c9a51a50eea | 91 | GpioDigitalInOut( CompGpioExp &gpiop, GpioPinName pin_name ); |
| nxp_ip | 0:6c9a51a50eea | 92 | |
| nxp_ip | 0:6c9a51a50eea | 93 | /** |
| nxp_ip | 0:6c9a51a50eea | 94 | * Destractor |
| nxp_ip | 0:6c9a51a50eea | 95 | */ |
| nxp_ip | 0:6c9a51a50eea | 96 | virtual ~GpioDigitalInOut(); |
| nxp_ip | 0:6c9a51a50eea | 97 | |
| nxp_ip | 0:6c9a51a50eea | 98 | /** Set the output, specified as 0 or 1 (int) |
| nxp_ip | 0:6c9a51a50eea | 99 | * |
| nxp_ip | 0:6c9a51a50eea | 100 | * @param v An integer specifying the pin output value, |
| nxp_ip | 0:6c9a51a50eea | 101 | * 0 for logical 0, 1 (or any other non-zero value) for logical 1 |
| nxp_ip | 0:6c9a51a50eea | 102 | */ |
| nxp_ip | 0:6c9a51a50eea | 103 | virtual void write( int v ); |
| nxp_ip | 0:6c9a51a50eea | 104 | |
| nxp_ip | 0:6c9a51a50eea | 105 | /** Return the output setting, represented as 0 or 1 (int) |
| nxp_ip | 0:6c9a51a50eea | 106 | * |
| nxp_ip | 0:6c9a51a50eea | 107 | * @returns |
| nxp_ip | 0:6c9a51a50eea | 108 | * an integer representing the output setting of the pin if it is an output, |
| nxp_ip | 0:6c9a51a50eea | 109 | * or read the input if set as an input |
| nxp_ip | 0:6c9a51a50eea | 110 | */ |
| nxp_ip | 0:6c9a51a50eea | 111 | virtual int read( void ); |
| nxp_ip | 0:6c9a51a50eea | 112 | |
| nxp_ip | 0:6c9a51a50eea | 113 | /** Set as an output |
| nxp_ip | 0:6c9a51a50eea | 114 | */ |
| nxp_ip | 0:6c9a51a50eea | 115 | void output( void ); |
| nxp_ip | 0:6c9a51a50eea | 116 | |
| nxp_ip | 0:6c9a51a50eea | 117 | /** Set as an input |
| nxp_ip | 0:6c9a51a50eea | 118 | */ |
| nxp_ip | 0:6c9a51a50eea | 119 | void input( void ); |
| nxp_ip | 0:6c9a51a50eea | 120 | |
| nxp_ip | 0:6c9a51a50eea | 121 | /** A shorthand for write() |
| nxp_ip | 0:6c9a51a50eea | 122 | */ |
| nxp_ip | 0:6c9a51a50eea | 123 | GpioDigitalInOut& operator= ( int rhs ); |
| nxp_ip | 0:6c9a51a50eea | 124 | GpioDigitalInOut& operator= ( GpioDigitalInOut& rhs ); |
| nxp_ip | 0:6c9a51a50eea | 125 | |
| nxp_ip | 0:6c9a51a50eea | 126 | /** A shorthand for read() |
| nxp_ip | 0:6c9a51a50eea | 127 | */ |
| nxp_ip | 0:6c9a51a50eea | 128 | virtual operator int( void ); |
| nxp_ip | 0:6c9a51a50eea | 129 | |
| nxp_ip | 0:6c9a51a50eea | 130 | private: |
| nxp_ip | 0:6c9a51a50eea | 131 | CompGpioExp *gpio_p; |
| nxp_ip | 0:6c9a51a50eea | 132 | GpioPinName pin; |
| nxp_ip | 0:6c9a51a50eea | 133 | int output_state; |
| nxp_ip | 0:6c9a51a50eea | 134 | int config_state; |
| nxp_ip | 0:6c9a51a50eea | 135 | |
| nxp_ip | 0:6c9a51a50eea | 136 | void write( int pin, int value ); |
| nxp_ip | 0:6c9a51a50eea | 137 | void configure( int pin, int value ); |
| nxp_ip | 0:6c9a51a50eea | 138 | } |
| nxp_ip | 0:6c9a51a50eea | 139 | ; |
| nxp_ip | 0:6c9a51a50eea | 140 | |
| nxp_ip | 0:6c9a51a50eea | 141 | #endif // MBED_GpioDigitalInOut |
PCAL9555, PCAL9554: 16 & 8-bit GPIO expander with "DigitalInOut" and "BusInOut" compatible APIs