# Texas Instruments PCF857X I2C I/O expanders test application ## Overview This test application demonstrates the usage of the PCF857X driver interface and can be used to test each PCF857X expander I/O pin with shell commands. ## Compilation To use the test application, compile it with one or more of the pseudomodules `pcf8574`, `pcf8574a` or `pcf8575` to enable the driver for your expander modules. Please check the default configuration parameters in `$(RIOTBASE)/drivers/pcf857x/include/pcf857x_params.h` and modify them if necessary. Alternatively, a modified version of this file could be placed in the directory of this test application to override it. ``` USEMODULE=pcf8575 make -C tests/driver_pcf857x BOARD=... ``` **Please note:** When no pseudomodule is given, `pcf8575` is used by default. To use external interrupts with the expander I/O pins, the PCF857X low-active open-drain interrupt signal has to be enabled. Add module `pcf857x_irq` for this purpose and define the MCU interrupt pin by parameter `PCF857X_PARAM_INT_PIN`, e.g. ``` CFLAGS="-DPCF857X_PARAM_INT_PIN=\(GPIO_PIN\(0,6\)\)" \ USEMODULE="pcf8575 pcf857x_irq" make -C tests/driver_pcf857x BOARD=... ``` **Please note:** Since interrupts are handled in the context of a separate event thread, enabling interrupts requires more RAM. ## Usage The test allows to use commands as known from GPIO test application for PCF857X expanders: ``` > help Command Description --------------------------------------- init_out init as output (push-pull mode) init_in init as input w/o pull resistor init_in_pu init as input with pull-up init_od init as output (open-drain without pull resistor) init_od_pu init as output (open-drain with pull-up) init_int init as external INT w/o pull resistor enable_int enable or disable gpio interrupt read read pin status set set pin to HIGH clear set pin to LOW toggle toggle pin bench run a set of predefined benchmarks ``` The number of the first PCF857X expander port used by the test application is defined by the macro `PCF857X_PORT_0`, which is 16 by default. This value can be overridden during compilation, e.g.: ``` CFLAGS="-DPCF857X_PORT_0=8" \ USEMODULE=pcf8575 make -C tests/driver_pcf857x BOARD=... ``` Using the port number defined by `PCF857X_PORT_0` and the following port numbers, you can apply the command to the PCF857X expander ports. For example, the following command initializes I/O pin 7 of the first PCF857X expander: ``` init_out 16 7 ``` Commands with port numbers less than `PCF857X_PORT_0` refer to GPIO peripheral ports. Thus, both the I/O pins of the PCF857X expanders as well as the GPIO peripheral pins of the MCU can be addressed by all commands.