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.
Diff: SX1508.h
- Revision:
- 1:56f4a8d6cde7
- Parent:
- 0:9b4d494682e0
--- a/SX1508.h Fri Jan 22 08:58:13 2016 +0000 +++ b/SX1508.h Mon May 30 07:27:25 2016 +0000 @@ -1,21 +1,100 @@ #ifndef SX1508_H #define SX1508_H -#define SX1508_ADDR 0x20 +#include "mbed.h" +#include "debug.h" + #define SX1508_FREQ 100000 +#define SX1508_ADDR_1 0x20 +#define SX1508_ADDR_2 0x21 +#define SX1508_ADDR_3 0x22 +#define SX1508_ADDR_4 0x23 class SX1508 { public: - SX1508(PinName sda, PinName scl); + enum RegName + { + // Register I/O Bank + RegInputDisable = 0x00, + RegLongSlew = 0x01, + RegLowDrive = 0x02, + RegPullUp = 0x03, + RegPullDown = 0x04, + RegOpenDrain = 0x05, + RegPolarity = 0x06, + RegDir = 0x07, + RegData = 0x08, + RegInterruptMask = 0x09, + RegSenseHigh = 0x0A, + RegSenseLow = 0x0B, + RegInterruptSource = 0x0C, + RegEventStatus = 0x0D, + RegLevelShifter = 0x0E, + RegClock = 0x0F, + RegMisc = 0x10, + RegLEDDriverEnable = 0x11, + + // Debounce and Keypad register + RegDebounceConfig = 0x12, + RegDebounceEnable = 0x13, + RegKeyConfig = 0x14, + RegKeyData = 0x15, + + // LED Driver (PWM, blinking, breathing) + RegIOn0 = 0x16, + RegIOn1 = 0x17, + RegTOn2 = 0x18, + RegIOn2 = 0x19, + RegOff2 = 0x1A, + RegTOn3 = 0x1B, + RegIOn3 = 0x1C, + RegOff3 = 0x1D, + RegTRise3 = 0x1E, + RegTFall3 = 0x1F, + RegIOn4 = 0x20, + RegIOn5 = 0x21, + RegTOn6 = 0x22, + RegIOn6 = 0x23, + RegOff6 = 0x24, + RegTOn7 = 0x25, + RegIOn7 = 0x26, + RegOff7 = 0x27, + RegTRise7 = 0x28, + RegTFall7 = 0x29, + + // Miscellaneous + RegHighInput = 0x2A, + + //Software Reset + RegReset = 0x7D, + + // Test (not to be written) + RegTest1 = 0x7E, + RegTest2 = 0x7F, + }; - bool config(char SetPin); + enum W_R + { + _write = 0x00, + _read = 0x01, + }; + SX1508(PinName sda, PinName scl, char adr = SX1508_ADDR_1); + ~SX1508(); + + bool keypad_config(int column = 4, int row = 4, int Debounce_ms = 8, int ScanTime_ms = 32); char read(); + bool WriteReg(char RegAdr, char data); + void WriteBlk(char RegAdr, const char *data, int len); + char ReadReg(char RegAdr); private: I2C i2c; - + char data[64]; + char w[32]; + char r[32]; + char _slaveAddress; }; #endif \ No newline at end of file