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.
SX1508.h@1:56f4a8d6cde7, 2016-05-30 (annotated)
- Committer:
- irsanjul
- Date:
- Mon May 30 07:27:25 2016 +0000
- Revision:
- 1:56f4a8d6cde7
- Parent:
- 0:9b4d494682e0
aaa
Who changed what in which revision?
User | Revision | Line number | New 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 |