irsan julfikar / SX1508
Committer:
irsanjul
Date:
Mon May 30 07:27:25 2016 +0000
Revision:
1:56f4a8d6cde7
Parent:
0:9b4d494682e0
aaa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
irsanjul 0:9b4d494682e0 1 #ifndef SX1508_H
irsanjul 0:9b4d494682e0 2 #define SX1508_H
irsanjul 0:9b4d494682e0 3
irsanjul 1:56f4a8d6cde7 4 #include "mbed.h"
irsanjul 1:56f4a8d6cde7 5 #include "debug.h"
irsanjul 1:56f4a8d6cde7 6
irsanjul 0:9b4d494682e0 7 #define SX1508_FREQ 100000
irsanjul 1:56f4a8d6cde7 8 #define SX1508_ADDR_1 0x20
irsanjul 1:56f4a8d6cde7 9 #define SX1508_ADDR_2 0x21
irsanjul 1:56f4a8d6cde7 10 #define SX1508_ADDR_3 0x22
irsanjul 1:56f4a8d6cde7 11 #define SX1508_ADDR_4 0x23
irsanjul 0:9b4d494682e0 12
irsanjul 0:9b4d494682e0 13 class SX1508
irsanjul 0:9b4d494682e0 14 {
irsanjul 0:9b4d494682e0 15 public:
irsanjul 1:56f4a8d6cde7 16 enum RegName
irsanjul 1:56f4a8d6cde7 17 {
irsanjul 1:56f4a8d6cde7 18 // Register I/O Bank
irsanjul 1:56f4a8d6cde7 19 RegInputDisable = 0x00,
irsanjul 1:56f4a8d6cde7 20 RegLongSlew = 0x01,
irsanjul 1:56f4a8d6cde7 21 RegLowDrive = 0x02,
irsanjul 1:56f4a8d6cde7 22 RegPullUp = 0x03,
irsanjul 1:56f4a8d6cde7 23 RegPullDown = 0x04,
irsanjul 1:56f4a8d6cde7 24 RegOpenDrain = 0x05,
irsanjul 1:56f4a8d6cde7 25 RegPolarity = 0x06,
irsanjul 1:56f4a8d6cde7 26 RegDir = 0x07,
irsanjul 1:56f4a8d6cde7 27 RegData = 0x08,
irsanjul 1:56f4a8d6cde7 28 RegInterruptMask = 0x09,
irsanjul 1:56f4a8d6cde7 29 RegSenseHigh = 0x0A,
irsanjul 1:56f4a8d6cde7 30 RegSenseLow = 0x0B,
irsanjul 1:56f4a8d6cde7 31 RegInterruptSource = 0x0C,
irsanjul 1:56f4a8d6cde7 32 RegEventStatus = 0x0D,
irsanjul 1:56f4a8d6cde7 33 RegLevelShifter = 0x0E,
irsanjul 1:56f4a8d6cde7 34 RegClock = 0x0F,
irsanjul 1:56f4a8d6cde7 35 RegMisc = 0x10,
irsanjul 1:56f4a8d6cde7 36 RegLEDDriverEnable = 0x11,
irsanjul 1:56f4a8d6cde7 37
irsanjul 1:56f4a8d6cde7 38 // Debounce and Keypad register
irsanjul 1:56f4a8d6cde7 39 RegDebounceConfig = 0x12,
irsanjul 1:56f4a8d6cde7 40 RegDebounceEnable = 0x13,
irsanjul 1:56f4a8d6cde7 41 RegKeyConfig = 0x14,
irsanjul 1:56f4a8d6cde7 42 RegKeyData = 0x15,
irsanjul 1:56f4a8d6cde7 43
irsanjul 1:56f4a8d6cde7 44 // LED Driver (PWM, blinking, breathing)
irsanjul 1:56f4a8d6cde7 45 RegIOn0 = 0x16,
irsanjul 1:56f4a8d6cde7 46 RegIOn1 = 0x17,
irsanjul 1:56f4a8d6cde7 47 RegTOn2 = 0x18,
irsanjul 1:56f4a8d6cde7 48 RegIOn2 = 0x19,
irsanjul 1:56f4a8d6cde7 49 RegOff2 = 0x1A,
irsanjul 1:56f4a8d6cde7 50 RegTOn3 = 0x1B,
irsanjul 1:56f4a8d6cde7 51 RegIOn3 = 0x1C,
irsanjul 1:56f4a8d6cde7 52 RegOff3 = 0x1D,
irsanjul 1:56f4a8d6cde7 53 RegTRise3 = 0x1E,
irsanjul 1:56f4a8d6cde7 54 RegTFall3 = 0x1F,
irsanjul 1:56f4a8d6cde7 55 RegIOn4 = 0x20,
irsanjul 1:56f4a8d6cde7 56 RegIOn5 = 0x21,
irsanjul 1:56f4a8d6cde7 57 RegTOn6 = 0x22,
irsanjul 1:56f4a8d6cde7 58 RegIOn6 = 0x23,
irsanjul 1:56f4a8d6cde7 59 RegOff6 = 0x24,
irsanjul 1:56f4a8d6cde7 60 RegTOn7 = 0x25,
irsanjul 1:56f4a8d6cde7 61 RegIOn7 = 0x26,
irsanjul 1:56f4a8d6cde7 62 RegOff7 = 0x27,
irsanjul 1:56f4a8d6cde7 63 RegTRise7 = 0x28,
irsanjul 1:56f4a8d6cde7 64 RegTFall7 = 0x29,
irsanjul 1:56f4a8d6cde7 65
irsanjul 1:56f4a8d6cde7 66 // Miscellaneous
irsanjul 1:56f4a8d6cde7 67 RegHighInput = 0x2A,
irsanjul 1:56f4a8d6cde7 68
irsanjul 1:56f4a8d6cde7 69 //Software Reset
irsanjul 1:56f4a8d6cde7 70 RegReset = 0x7D,
irsanjul 1:56f4a8d6cde7 71
irsanjul 1:56f4a8d6cde7 72 // Test (not to be written)
irsanjul 1:56f4a8d6cde7 73 RegTest1 = 0x7E,
irsanjul 1:56f4a8d6cde7 74 RegTest2 = 0x7F,
irsanjul 1:56f4a8d6cde7 75 };
irsanjul 0:9b4d494682e0 76
irsanjul 1:56f4a8d6cde7 77 enum W_R
irsanjul 1:56f4a8d6cde7 78 {
irsanjul 1:56f4a8d6cde7 79 _write = 0x00,
irsanjul 1:56f4a8d6cde7 80 _read = 0x01,
irsanjul 1:56f4a8d6cde7 81 };
irsanjul 0:9b4d494682e0 82
irsanjul 1:56f4a8d6cde7 83 SX1508(PinName sda, PinName scl, char adr = SX1508_ADDR_1);
irsanjul 1:56f4a8d6cde7 84 ~SX1508();
irsanjul 1:56f4a8d6cde7 85
irsanjul 1:56f4a8d6cde7 86 bool keypad_config(int column = 4, int row = 4, int Debounce_ms = 8, int ScanTime_ms = 32);
irsanjul 0:9b4d494682e0 87 char read();
irsanjul 1:56f4a8d6cde7 88 bool WriteReg(char RegAdr, char data);
irsanjul 1:56f4a8d6cde7 89 void WriteBlk(char RegAdr, const char *data, int len);
irsanjul 1:56f4a8d6cde7 90 char ReadReg(char RegAdr);
irsanjul 0:9b4d494682e0 91
irsanjul 0:9b4d494682e0 92 private:
irsanjul 0:9b4d494682e0 93 I2C i2c;
irsanjul 1:56f4a8d6cde7 94 char data[64];
irsanjul 1:56f4a8d6cde7 95 char w[32];
irsanjul 1:56f4a8d6cde7 96 char r[32];
irsanjul 1:56f4a8d6cde7 97 char _slaveAddress;
irsanjul 0:9b4d494682e0 98 };
irsanjul 0:9b4d494682e0 99
irsanjul 0:9b4d494682e0 100 #endif