0503-01 MCP23S17 IO Expander
Example Projects > 0503 Generic SPI Communication > 0503-01 MCP23S17 IO Expander
Using the MCP23S17 I/O expander
This folder contains the source files for working with the GPIO pins of the MCP23S17 16-bit I/O expander via SPI bus, which is available e.g. on the Raspberry Pi minicomputer. The example is based on the REXLANG user-programmable function block of REXYGEN.
The GPIO port A is used as digital outputs, the GPIO port B is used as digital inputs with the internal pull-up resistors enabled.
See the source *.c file for details on SPI communication.
Timing of the project
The algorithm runs each 200 milliseconds (0.2 s). See the EXEC function block,
tick x ntick0 = 0.1 x 2 = 0.2
- REXYGEN Runtime Core must be installed and running on the target device (e.g. Raspberry Pi).
- SPI bus must be enabled and available (e.g. /dev/spidev0.0).
- The wiring must comply with the attached datasheet.
Running the example
- The *exec.mdl file is the project main file.
- Open it with REXYGEN Studio.
- Specify the SPI bus by the p0 parameter of the REXLANG function block.
- Compile and download it to the target device.
- Switch to Watch mode and observe the algorithm.
- Enable online monitoring of the CNB_GPA blocks (Target->Watch Selection) and the BDOCT_GPIOB block.
- Toggle the CNB_GPA constants and observe the pins of the MCP23S17 I/O expander.
- Apply external voltage to GPIOB pins and observe the outputs of BDOCT_GPIOB block.
- Press F1 for help on the selected function block in the REXYGEN Studio.
- Getting started with REXYGEN on the Raspberry Pi minicomputer
- Function blocks of REXYGEN
- MCP23S17 datasheet (attached)
- REXYGEN Studio User Guide
- Complete documentation of REXYGEN