![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Added HangmanGame class, but does not work yet
Dependencies: SDFileSystem app epson mbed msp430 pl tests
Diff: mcp23s17.h
- Revision:
- 0:fa7450a43b99
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mcp23s17.h Mon Dec 04 09:32:20 2017 +0000 @@ -0,0 +1,97 @@ +// +// Filename: mcp23s17.h +// +// Flexbook Hardware Abstraction Layer. +// + +#ifndef MCP23S17_H +#define MCP23S17_H + +#include "mbed.h" + +namespace HAL { + +/** + * @brief MCP23S17 register addresses in bank 0 mode. + */ +enum REG_MCP23S17 +{ +IODIRA = 0x00, +IODIRB = 0x01, +IPOLA = 0x02, +IPOLB = 0x03, +GPINTENA = 0x04, +GPINTENB = 0x05, +DEFVALA = 0x06, +DEFVALB = 0x07, +INTCONA = 0x08, +INTCONB = 0x09, +IOCON1 = 0x0a, +IOCON2 = 0x0b, +GPPUA = 0x0c, +GPPUB = 0x0d, +INTFA = 0x0e, +INTFB = 0x0f, +INTCAPA = 0x10, +INTCAPB = 0x11, +GPIOA = 0x12, +GPIOB = 0x13, +OLATA = 0x14, +OLATB = 0x15 +}; + +/** + * @brief Microchip MCP23S17 encapsulation. + * This chip is an SPI connected I/O expander. + * + * Example usage: + <pre> + SPI spi(p5, p6, p7); + DigitalOut cs(p19); + MCP23S17 mcp23s17(0x00, spi, cs); + ... + mcp23s17.Write(GPIOB, 0xaa); + </pre> + * + * The MCP23S17 uses pins 5, 6, 7 (SPI MOSI, MISO, SCK) and 19 (CS) and + * the write command sets GPIOB to 0xaa. The chip address is 0x00. + * + * Note that this code example does not cover the setup of the chip + * configuration registers. + */ +class MCP23S17 +{ +public: + /** + * @brief Constructor. + * @param address The SPI address offset of the chip. + * @param SPI the SPI to use for communication. + * @param cs The chip select pin. + */ + MCP23S17(int address, SPI &spi, DigitalOut &cs); + + /** + * @brief Read a register. + * @param address The SPI address of the MCP23S17. + * @param reg The register to read. + * @return The register value. + */ + int Read(REG_MCP23S17 reg); + + /** + * @brief Write a register. + * @param address The SPI address of the MCP23S17. + * @param reg The register to write. + * @param value The value to write to the register. + */ + void Write(REG_MCP23S17 reg, int value); + +private: + int address; + SPI &spi; + DigitalOut &cs; +}; + +} // End HAL namespace. + +#endif // MCP23S17_H