Prototype of SX1508's library
SX1508.h
- Committer:
- irsanjul
- Date:
- 2016-05-30
- Revision:
- 1:56f4a8d6cde7
- Parent:
- 0:9b4d494682e0
File content as of revision 1:56f4a8d6cde7:
#ifndef SX1508_H #define SX1508_H #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: 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, }; 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