Library for MAX30101, read/write functions for registers implemented.
Dependents: test_MAX30101 testSensor
MAX30101.h@3:d28dcc8fe74d, 2017-03-27 (annotated)
- Committer:
- Rhyme
- Date:
- Mon Mar 27 05:40:30 2017 +0000
- Revision:
- 3:d28dcc8fe74d
- Parent:
- 2:c465a8d44b9a
- Child:
- 4:c6761ad52524
Test of adding description;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 0:4ad9373787e8 | 1 | /** |
Rhyme | 0:4ad9373787e8 | 2 | * MAX30101 |
Rhyme | 0:4ad9373787e8 | 3 | * High-Sensitivity Pulse Oximeter and |
Rhyme | 0:4ad9373787e8 | 4 | * Heart-Rate Sensor for Wearable Health |
Rhyme | 0:4ad9373787e8 | 5 | */ |
Rhyme | 0:4ad9373787e8 | 6 | #ifndef _MAX30101_H_ |
Rhyme | 0:4ad9373787e8 | 7 | #define _MAX30101_H_ |
Rhyme | 0:4ad9373787e8 | 8 | |
Rhyme | 0:4ad9373787e8 | 9 | class MAX30101 |
Rhyme | 0:4ad9373787e8 | 10 | { |
Rhyme | 0:4ad9373787e8 | 11 | public: |
Rhyme | 0:4ad9373787e8 | 12 | /** |
Rhyme | 0:4ad9373787e8 | 13 | * MAX30101 constructor |
Rhyme | 0:4ad9373787e8 | 14 | * |
Rhyme | 0:4ad9373787e8 | 15 | * @param sda SDA pin |
Rhyme | 0:4ad9373787e8 | 16 | * @param scl SCL pin |
Rhyme | 0:4ad9373787e8 | 17 | * @param addr 7bit address of the I2C peripheral |
Rhyme | 0:4ad9373787e8 | 18 | */ |
Rhyme | 0:4ad9373787e8 | 19 | MAX30101(PinName sda, PinName scl, int addr) ; |
Rhyme | 0:4ad9373787e8 | 20 | |
Rhyme | 0:4ad9373787e8 | 21 | ~MAX30101() ; |
Rhyme | 3:d28dcc8fe74d | 22 | |
Rhyme | 3:d28dcc8fe74d | 23 | /** |
Rhyme | 3:d28dcc8fe74d | 24 | * Get part id |
Rhyme | 3:d28dcc8fe74d | 25 | * @returns PART_ID |
Rhyme | 3:d28dcc8fe74d | 26 | */ |
Rhyme | 1:fc677d82d0f1 | 27 | uint8_t getID(void) ; |
Rhyme | 3:d28dcc8fe74d | 28 | |
Rhyme | 3:d28dcc8fe74d | 29 | /** |
Rhyme | 3:d28dcc8fe74d | 30 | * Get revision id |
Rhyme | 3:d28dcc8fe74d | 31 | * @returns REV_ID |
Rhyme | 3:d28dcc8fe74d | 32 | */ |
Rhyme | 1:fc677d82d0f1 | 33 | uint8_t getRev(void) ; |
Rhyme | 1:fc677d82d0f1 | 34 | uint16_t getIntStatus(void) ; |
Rhyme | 2:c465a8d44b9a | 35 | uint16_t getIntEnable(void) ; |
Rhyme | 1:fc677d82d0f1 | 36 | void setIntEnable(uint16_t mask) ; |
Rhyme | 1:fc677d82d0f1 | 37 | uint8_t getFIFO_WR_PTR(void) ; |
Rhyme | 1:fc677d82d0f1 | 38 | void setFIFO_WR_PTR(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 39 | uint8_t getOVF_COUNTER(void) ; |
Rhyme | 1:fc677d82d0f1 | 40 | void setOVF_COUNTER(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 41 | uint8_t getFIFO_RD_PTR(void) ; |
Rhyme | 1:fc677d82d0f1 | 42 | void setFIFO_RD_PTR(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 43 | uint8_t getFIFO_DATA(void) ; |
Rhyme | 1:fc677d82d0f1 | 44 | void setFIFO_DATA(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 45 | uint8_t getFIFO_CONFIG(void) ; |
Rhyme | 1:fc677d82d0f1 | 46 | void setFIFO_CONFIG(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 47 | uint8_t getMODE_CONFIG(void) ; |
Rhyme | 1:fc677d82d0f1 | 48 | void setMODE_CONFIG(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 49 | uint8_t getSPO2_CONFIG(void) ; |
Rhyme | 1:fc677d82d0f1 | 50 | void setSPO2_CONFIG(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 51 | uint8_t getLED1_PA(void) ; |
Rhyme | 1:fc677d82d0f1 | 52 | void setLED1_PA(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 53 | uint8_t getLED2_PA(void) ; |
Rhyme | 1:fc677d82d0f1 | 54 | void setLED2_PA(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 55 | uint8_t getLED3_PA(void) ; |
Rhyme | 1:fc677d82d0f1 | 56 | void setLED3_PA(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 57 | uint8_t getPILOT_PA(void) ; |
Rhyme | 1:fc677d82d0f1 | 58 | void setPILOT_PA(uint8_t data) ; |
Rhyme | 1:fc677d82d0f1 | 59 | uint16_t getSLOT(void) ; |
Rhyme | 1:fc677d82d0f1 | 60 | void setSLOT(uint16_t data) ; |
Rhyme | 1:fc677d82d0f1 | 61 | uint8_t getTEMP_INT(void) ; |
Rhyme | 2:c465a8d44b9a | 62 | uint8_t getTEMP_FRAC(void) ; |
Rhyme | 1:fc677d82d0f1 | 63 | uint8_t getTEMP_EN(void) ; /* ? */ |
Rhyme | 2:c465a8d44b9a | 64 | void setTEMP_EN(void) ; |
Rhyme | 2:c465a8d44b9a | 65 | float getTEMP(void) ; |
Rhyme | 1:fc677d82d0f1 | 66 | uint8_t getPROX_INT_THR(void) ; |
Rhyme | 1:fc677d82d0f1 | 67 | void setPROX_INT_THR(uint8_t data) ; |
Rhyme | 2:c465a8d44b9a | 68 | void clearFIFO(void) ; |
Rhyme | 2:c465a8d44b9a | 69 | uint32_t readFIFO(void) ; |
Rhyme | 2:c465a8d44b9a | 70 | void reset(void) ; |
Rhyme | 0:4ad9373787e8 | 71 | |
Rhyme | 0:4ad9373787e8 | 72 | /* |
Rhyme | 0:4ad9373787e8 | 73 | * some member functions here (yet to be written) |
Rhyme | 0:4ad9373787e8 | 74 | */ |
Rhyme | 0:4ad9373787e8 | 75 | |
Rhyme | 0:4ad9373787e8 | 76 | private: |
Rhyme | 0:4ad9373787e8 | 77 | I2C m_i2c; |
Rhyme | 0:4ad9373787e8 | 78 | int m_addr; |
Rhyme | 0:4ad9373787e8 | 79 | void readRegs(int addr, uint8_t *data, int len) ; |
Rhyme | 0:4ad9373787e8 | 80 | void writeRegs(uint8_t *data, int len) ; |
Rhyme | 0:4ad9373787e8 | 81 | } ; |
Rhyme | 2:c465a8d44b9a | 82 | |
Rhyme | 2:c465a8d44b9a | 83 | /* bits of Interrupt Status register */ |
Rhyme | 2:c465a8d44b9a | 84 | /* In this class Interrupt Status 1 and |
Rhyme | 2:c465a8d44b9a | 85 | * Interrupt Status 2 are combined to be a uint16_t |
Rhyme | 2:c465a8d44b9a | 86 | */ |
Rhyme | 2:c465a8d44b9a | 87 | #define INT_ST_A_FULL 0x8000 /* FIFO Almost Full Flag */ |
Rhyme | 2:c465a8d44b9a | 88 | #define INT_ST_PPG_RGY 0x4000 /* New FIFO Data Ready */ |
Rhyme | 2:c465a8d44b9a | 89 | #define INT_ST_ALC_OVF 0x2000 /* Ambient Light Cancellation Overflow */ |
Rhyme | 2:c465a8d44b9a | 90 | #define INT_ST_PROX_INT 0x1000 /* Proximity Threshold Triggered */ |
Rhyme | 2:c465a8d44b9a | 91 | #define INT_ST_PWR_RDY 0x0100 /* Power Ready Flag */ |
Rhyme | 2:c465a8d44b9a | 92 | #define INT_ST_DIE_TEMP_RDY 0x0002 /* Internal Temperature Ready Flag */ |
Rhyme | 2:c465a8d44b9a | 93 | /* bits of Interrupt Enable register */ |
Rhyme | 2:c465a8d44b9a | 94 | #define INT_EN_A_FULL 0x8000 /* FIFO Almost Full Flag */ |
Rhyme | 2:c465a8d44b9a | 95 | #define INT_EN_PPG_RGY 0x4000 /* New FIFO Data Ready */ |
Rhyme | 2:c465a8d44b9a | 96 | #define INT_EN_ALC_OVF 0x2000 /* Ambient Light Cancellation Overflow */ |
Rhyme | 2:c465a8d44b9a | 97 | #define INT_EN_PROX_INT 0x1000 /* Proximity Threshold Triggered */ |
Rhyme | 2:c465a8d44b9a | 98 | #define INT_EN_DIE_TEMP_RDY 0x0002 /* Internal Temperature Ready Flag */ |
Rhyme | 2:c465a8d44b9a | 99 | /* Mode configuration bits */ |
Rhyme | 2:c465a8d44b9a | 100 | #define MODE_HR 0x02 /* Heart Rate mode */ |
Rhyme | 2:c465a8d44b9a | 101 | #define MODE_SPO2 0x03 /* SpO2 mode */ |
Rhyme | 2:c465a8d44b9a | 102 | #define MODE_MULTI_LED 0x07 /* Multi-LED mode */ |
Rhyme | 2:c465a8d44b9a | 103 | #define MODE_RESET 0x40 /* Reset Control, this bit is auto clear */ |
Rhyme | 2:c465a8d44b9a | 104 | #define MODE_SHDN 0x80 /* Shutdown Control */ |
Rhyme | 2:c465a8d44b9a | 105 | |
Rhyme | 2:c465a8d44b9a | 106 | |
Rhyme | 0:4ad9373787e8 | 107 | #endif /* _MAX30101_H_ */ |