BM1383glv driver for mbed classic, mbed os and arduino. Depends on rohm-sensor-hal.
Dependents: rohm-bm1383-hello-mbedclassic
rohm-bm1383-glv/bm1383glv.h@1:0aa922b4c2e7, 2016-04-12 (annotated)
- Committer:
- MikkoZ
- Date:
- Tue Apr 12 12:52:55 2016 +0000
- Revision:
- 1:0aa922b4c2e7
- Parent:
- 0:e58a87234f6a
.hgignore autoupdated by mbed classic ui
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Mikko Koivunen |
0:e58a87234f6a | 1 | /* Copyright 2016 Rohm Semiconductor |
Mikko Koivunen |
0:e58a87234f6a | 2 | |
Mikko Koivunen |
0:e58a87234f6a | 3 | Licensed under the Apache License, Version 2.0 (the "License"); |
Mikko Koivunen |
0:e58a87234f6a | 4 | you may not use this file except in compliance with the License. |
Mikko Koivunen |
0:e58a87234f6a | 5 | You may obtain a copy of the License at |
Mikko Koivunen |
0:e58a87234f6a | 6 | |
Mikko Koivunen |
0:e58a87234f6a | 7 | http://www.apache.org/licenses/LICENSE-2.0 |
Mikko Koivunen |
0:e58a87234f6a | 8 | |
Mikko Koivunen |
0:e58a87234f6a | 9 | Unless required by applicable law or agreed to in writing, software |
Mikko Koivunen |
0:e58a87234f6a | 10 | distributed under the License is distributed on an "AS IS" BASIS, |
Mikko Koivunen |
0:e58a87234f6a | 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
Mikko Koivunen |
0:e58a87234f6a | 12 | See the License for the specific language governing permissions and |
Mikko Koivunen |
0:e58a87234f6a | 13 | limitations under the License. |
Mikko Koivunen |
0:e58a87234f6a | 14 | */ |
Mikko Koivunen |
0:e58a87234f6a | 15 | #ifndef BM1383GLV_H |
Mikko Koivunen |
0:e58a87234f6a | 16 | #define BM1383GLV_H |
Mikko Koivunen |
0:e58a87234f6a | 17 | |
Mikko Koivunen |
0:e58a87234f6a | 18 | /* registers */ |
Mikko Koivunen |
0:e58a87234f6a | 19 | // [hPa] |
Mikko Koivunen |
0:e58a87234f6a | 20 | #define BM1383GLV_PRESSURE_MIN 0x12C |
Mikko Koivunen |
0:e58a87234f6a | 21 | // [hPa] |
Mikko Koivunen |
0:e58a87234f6a | 22 | #define BM1383GLV_PRESSURE_MAX 0x44C |
Mikko Koivunen |
0:e58a87234f6a | 23 | #define BM1383GLV_REGISTER_DUMP_START 0x10 |
Mikko Koivunen |
0:e58a87234f6a | 24 | #define BM1383GLV_ID_REG 0x10 |
Mikko Koivunen |
0:e58a87234f6a | 25 | // All control registers are accessible only when POWER is UP and SLEEP is OFF. |
Mikko Koivunen |
0:e58a87234f6a | 26 | #define BM1383GLV_RESET_CONTROL_REG 0x11 |
Mikko Koivunen |
0:e58a87234f6a | 27 | #define BM1383GLV_POWER_REG 0x12 |
Mikko Koivunen |
0:e58a87234f6a | 28 | #define BM1383GLV_SLEEP_REG 0x13 |
Mikko Koivunen |
0:e58a87234f6a | 29 | #define BM1383GLV_MODE_CONTROL_REG 0x14 |
Mikko Koivunen |
0:e58a87234f6a | 30 | // MSB of the high threshold value for pressure interrupt generation. |
Mikko Koivunen |
0:e58a87234f6a | 31 | #define BM1383GLV_INT_HIGH_TRESHOLD_MSB 0x15 |
Mikko Koivunen |
0:e58a87234f6a | 32 | // LSB of the high threshold value for pressure interrupt generation. |
Mikko Koivunen |
0:e58a87234f6a | 33 | #define BM1383GLV_INT_HIGH_TRESHOLD_LSB 0x16 |
Mikko Koivunen |
0:e58a87234f6a | 34 | #define BM1383GLV_INT_LOW_TRESHOLD_MSB 0x17 |
Mikko Koivunen |
0:e58a87234f6a | 35 | #define BM1383GLV_INT_LOW_TRESHOLD_LSB 0x18 |
Mikko Koivunen |
0:e58a87234f6a | 36 | #define BM1383GLV_INT_CONTROL_REG 0x19 |
Mikko Koivunen |
0:e58a87234f6a | 37 | // TEMP_OUT: [15] sign ; [14:5] integer ; [4:0] decimal (2's complement numbers) |
Mikko Koivunen |
0:e58a87234f6a | 38 | #define BM1383GLV_TEMPERATURE_OUT_MSB 0x1A |
Mikko Koivunen |
0:e58a87234f6a | 39 | // Temperature value [C]= TEMP_OUT[15:0]/32 |
Mikko Koivunen |
0:e58a87234f6a | 40 | #define BM1383GLV_TEMPERATURE_OUT_LSB 0x1B |
Mikko Koivunen |
0:e58a87234f6a | 41 | // PRESS_OUT[15:5] integer part of pressure value |
Mikko Koivunen |
0:e58a87234f6a | 42 | #define BM1383GLV_PRESSURE_OUT_MSB 0x1C |
Mikko Koivunen |
0:e58a87234f6a | 43 | // PRESS_OUT[4:0] PRESS_OUT_XL[5:0] decimal part of pressure value |
Mikko Koivunen |
0:e58a87234f6a | 44 | #define BM1383GLV_PRESSURE_OUT_LSB 0x1D |
Mikko Koivunen |
0:e58a87234f6a | 45 | // Pressurevalue[hPa] = { PRESS_OUT[15:8] PRESS_OUT[7:0] PRESS_OUT_XL[5:0] } / 2048 |
Mikko Koivunen |
0:e58a87234f6a | 46 | #define BM1383GLV_PRESSURE_OUT_DECIMAL 0x1E |
Mikko Koivunen |
0:e58a87234f6a | 47 | #define BM1383GLV_REGISTER_DUMP_END 0x1E |
Mikko Koivunen |
0:e58a87234f6a | 48 | /* registers bits */ |
Mikko Koivunen |
0:e58a87234f6a | 49 | #define BM1383GLV_ID_REG_MANUFACTURER_ID (0x03 << 4) |
Mikko Koivunen |
0:e58a87234f6a | 50 | #define BM1383GLV_ID_REG_PART_ID (0x01 << 0) |
Mikko Koivunen |
0:e58a87234f6a | 51 | enum e_BM1383GLV_RESET_CONTROL_REG_SW_RESET { |
Mikko Koivunen |
0:e58a87234f6a | 52 | BM1383GLV_RESET_CONTROL_REG_SW_RESET_NONE = (0x00 << 7), |
Mikko Koivunen |
0:e58a87234f6a | 53 | BM1383GLV_RESET_CONTROL_REG_SW_RESET_EXECUTE = (0x01 << 7) |
Mikko Koivunen |
0:e58a87234f6a | 54 | }; |
Mikko Koivunen |
0:e58a87234f6a | 55 | enum e_BM1383GLV_RESET_CONTROL_REG_INT_RESET { |
Mikko Koivunen |
0:e58a87234f6a | 56 | BM1383GLV_RESET_CONTROL_REG_INT_RESET_ACTIVE = (0x00 << 6), |
Mikko Koivunen |
0:e58a87234f6a | 57 | BM1383GLV_RESET_CONTROL_REG_INT_RESET_INACTIVE = (0x01 << 6) // int terminal high impedance on inactive state |
Mikko Koivunen |
0:e58a87234f6a | 58 | }; |
Mikko Koivunen |
0:e58a87234f6a | 59 | // write 000000 |
Mikko Koivunen |
0:e58a87234f6a | 60 | #define BM1383GLV_RESET_CONTROL_REG_RESERVED_WRITE0 (0x00 << 0) |
Mikko Koivunen |
0:e58a87234f6a | 61 | #define BM1383GLV_POWER_REG_RESERVED_WRITE0 (0x00 << 1) |
Mikko Koivunen |
0:e58a87234f6a | 62 | enum e_BM1383GLV_POWER_REG_POWER { |
Mikko Koivunen |
0:e58a87234f6a | 63 | BM1383GLV_POWER_REG_POWER_DOWN = (0x00 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 64 | BM1383GLV_POWER_REG_POWER_UP = (0x01 << 0) |
Mikko Koivunen |
0:e58a87234f6a | 65 | }; |
Mikko Koivunen |
0:e58a87234f6a | 66 | #define BM1383GLV_SLEEP_REG_RESERVED_WRITE0 (0x00 << 1) |
Mikko Koivunen |
0:e58a87234f6a | 67 | enum e_BM1383GLV_SLEEP_REG_SLEEP { |
Mikko Koivunen |
0:e58a87234f6a | 68 | BM1383GLV_SLEEP_REG_SLEEP_ON = (0x00 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 69 | BM1383GLV_SLEEP_REG_SLEEP_OFF = (0x01 << 0) |
Mikko Koivunen |
0:e58a87234f6a | 70 | }; |
Mikko Koivunen |
0:e58a87234f6a | 71 | enum e_BM1383GLV_MODE_CONTROL_REG_AVE_NUM { |
Mikko Koivunen |
0:e58a87234f6a | 72 | BM1383GLV_MODE_CONTROL_REG_AVE_NUM_SINGLE = (0x00 << 5), |
Mikko Koivunen |
0:e58a87234f6a | 73 | BM1383GLV_MODE_CONTROL_REG_AVE_NUM_2_TIMES = (0x01 << 5), |
Mikko Koivunen |
0:e58a87234f6a | 74 | BM1383GLV_MODE_CONTROL_REG_AVE_NUM_4_TIMES = (0x02 << 5), |
Mikko Koivunen |
0:e58a87234f6a | 75 | BM1383GLV_MODE_CONTROL_REG_AVE_NUM_8_TIMES = (0x03 << 5), |
Mikko Koivunen |
0:e58a87234f6a | 76 | BM1383GLV_MODE_CONTROL_REG_AVE_NUM_16_TIMES = (0x04 << 5), |
Mikko Koivunen |
0:e58a87234f6a | 77 | BM1383GLV_MODE_CONTROL_REG_AVE_NUM_32_TIMES = (0x05 << 5), |
Mikko Koivunen |
0:e58a87234f6a | 78 | BM1383GLV_MODE_CONTROL_REG_AVE_NUM_64_TIMES = (0x06 << 5) |
Mikko Koivunen |
0:e58a87234f6a | 79 | }; |
Mikko Koivunen |
0:e58a87234f6a | 80 | // write 00 |
Mikko Koivunen |
0:e58a87234f6a | 81 | #define BM1383GLV_MODE_CONTROL_REG_RESERVED_WRITE0 (0x00 << 3) |
Mikko Koivunen |
0:e58a87234f6a | 82 | enum e_BM1383GLV_MODE_CONTROL_REG_MODE { |
Mikko Koivunen |
0:e58a87234f6a | 83 | BM1383GLV_MODE_CONTROL_REG_MODE_STANDBY = (0x00 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 84 | BM1383GLV_MODE_CONTROL_REG_MODE_ONE_SHOT = (0x01 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 85 | BM1383GLV_MODE_CONTROL_REG_MODE_50MS = (0x02 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 86 | BM1383GLV_MODE_CONTROL_REG_MODE_100MS = (0x03 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 87 | BM1383GLV_MODE_CONTROL_REG_MODE_200MS = (0x04 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 88 | BM1383GLV_MODE_CONTROL_REG_MODE_PROHIBITED5 = (0x05 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 89 | BM1383GLV_MODE_CONTROL_REG_MODE_PROHIBITED6 = (0x06 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 90 | BM1383GLV_MODE_CONTROL_REG_MODE_PROHIBITED7 = (0x07 << 0) |
Mikko Koivunen |
0:e58a87234f6a | 91 | }; |
Mikko Koivunen |
0:e58a87234f6a | 92 | enum e_BM1383GLV_INT_CONTROL_REG_TRESHOLD_HIGH { |
Mikko Koivunen |
0:e58a87234f6a | 93 | BM1383GLV_INT_CONTROL_REG_TRESHOLD_HIGH_IN_LIMITS = (0x00 << 7), |
Mikko Koivunen |
0:e58a87234f6a | 94 | BM1383GLV_INT_CONTROL_REG_TRESHOLD_HIGH_CROSSED = (0x01 << 7) |
Mikko Koivunen |
0:e58a87234f6a | 95 | }; |
Mikko Koivunen |
0:e58a87234f6a | 96 | enum e_BM1383GLV_INT_CONTROL_REG_TRESHOLD_LOW { |
Mikko Koivunen |
0:e58a87234f6a | 97 | BM1383GLV_INT_CONTROL_REG_TRESHOLD_LOW_IN_LIMITS = (0x00 << 6), |
Mikko Koivunen |
0:e58a87234f6a | 98 | BM1383GLV_INT_CONTROL_REG_TRESHOLD_LOW_CROSSED = (0x01 << 6) |
Mikko Koivunen |
0:e58a87234f6a | 99 | }; |
Mikko Koivunen |
0:e58a87234f6a | 100 | enum e_BM1383GLV_INT_CONTROL_REG_INT_HIGH { |
Mikko Koivunen |
0:e58a87234f6a | 101 | BM1383GLV_INT_CONTROL_REG_INT_HIGH_DISABLE = (0x00 << 5), |
Mikko Koivunen |
0:e58a87234f6a | 102 | BM1383GLV_INT_CONTROL_REG_INT_HIGH_ENABLE = (0x01 << 5) |
Mikko Koivunen |
0:e58a87234f6a | 103 | }; |
Mikko Koivunen |
0:e58a87234f6a | 104 | enum e_BM1383GLV_INT_CONTROL_REG_INT_LOW { |
Mikko Koivunen |
0:e58a87234f6a | 105 | BM1383GLV_INT_CONTROL_REG_INT_LOW_DISABLE = (0x00 << 4), |
Mikko Koivunen |
0:e58a87234f6a | 106 | BM1383GLV_INT_CONTROL_REG_INT_LOW_ENABLE = (0x01 << 4) |
Mikko Koivunen |
0:e58a87234f6a | 107 | }; |
Mikko Koivunen |
0:e58a87234f6a | 108 | enum e_BM1383GLV_INT_CONTROL_REG_INT_PULLUP { |
Mikko Koivunen |
0:e58a87234f6a | 109 | BM1383GLV_INT_CONTROL_REG_INT_PULLUP_ENABLE = (0x00 << 3), // pull up resistor in INT terminals |
Mikko Koivunen |
0:e58a87234f6a | 110 | BM1383GLV_INT_CONTROL_REG_INT_PULLUP_DISABLE = (0x01 << 3) // no pull up resistor in INT terminals |
Mikko Koivunen |
0:e58a87234f6a | 111 | }; |
Mikko Koivunen |
0:e58a87234f6a | 112 | #define BM1383GLV_INT_CONTROL_REG_RESERVED_RES (0x00 << 2) |
Mikko Koivunen |
0:e58a87234f6a | 113 | enum e_BM1383GLV_INT_CONTROL_REG_INTERRUPT_STATE { |
Mikko Koivunen |
0:e58a87234f6a | 114 | BM1383GLV_INT_CONTROL_REG_INTERRUPT_STATE_KEEP_UNTIL_CLEARED = (0x00 << 1), // terminal is latched until interrupt is cleared |
Mikko Koivunen |
0:e58a87234f6a | 115 | BM1383GLV_INT_CONTROL_REG_INTERRUPT_STATE_CONTINUOUS_UPDATE = (0x01 << 1) // terminal is updated after each measurement |
Mikko Koivunen |
0:e58a87234f6a | 116 | }; |
Mikko Koivunen |
0:e58a87234f6a | 117 | enum e_BM1383GLV_INT_CONTROL_REG_INTERRUPT { |
Mikko Koivunen |
0:e58a87234f6a | 118 | BM1383GLV_INT_CONTROL_REG_INTERRUPT_DISABLE = (0x00 << 0), |
Mikko Koivunen |
0:e58a87234f6a | 119 | BM1383GLV_INT_CONTROL_REG_INTERRUPT_ENABLE = (0x01 << 0) |
Mikko Koivunen |
0:e58a87234f6a | 120 | }; |
Mikko Koivunen |
0:e58a87234f6a | 121 | /*registers bit masks */ |
Mikko Koivunen |
0:e58a87234f6a | 122 | #define BM1383GLV_ID_REG_MANUFACTURER_MASK 0xF0 |
Mikko Koivunen |
0:e58a87234f6a | 123 | #define BM1383GLV_ID_REG_PART_MASK 0x0F |
Mikko Koivunen |
0:e58a87234f6a | 124 | #define BM1383GLV_RESET_CONTROL_REG_SW_RESET_MASK 0x80 |
Mikko Koivunen |
0:e58a87234f6a | 125 | #define BM1383GLV_RESET_CONTROL_REG_INT_RESET_MASK 0x40 |
Mikko Koivunen |
0:e58a87234f6a | 126 | |
Mikko Koivunen |
0:e58a87234f6a | 127 | #define BM1383GLV_RESET_CONTROL_REG_RESERVED_MASK 0x3F |
Mikko Koivunen |
0:e58a87234f6a | 128 | |
Mikko Koivunen |
0:e58a87234f6a | 129 | #define BM1383GLV_POWER_REG_RESERVED_MASK 0xFE |
Mikko Koivunen |
0:e58a87234f6a | 130 | #define BM1383GLV_POWER_REG_POWER_MASK 0x01 |
Mikko Koivunen |
0:e58a87234f6a | 131 | #define BM1383GLV_SLEEP_REG_RESERVED_MASK 0xFE |
Mikko Koivunen |
0:e58a87234f6a | 132 | #define BM1383GLV_SLEEP_REG_SLEEP_MASK 0x01 |
Mikko Koivunen |
0:e58a87234f6a | 133 | #define BM1383GLV_MODE_CONTROL_REG_AVE_NUM_MASK 0xE0 |
Mikko Koivunen |
0:e58a87234f6a | 134 | #define BM1383GLV_MODE_CONTROL_REG_RESERVED_MASK 0x18 |
Mikko Koivunen |
0:e58a87234f6a | 135 | |
Mikko Koivunen |
0:e58a87234f6a | 136 | #define BM1383GLV_MODE_CONTROL_REG_MODE_MASK 0x07 |
Mikko Koivunen |
0:e58a87234f6a | 137 | #define BM1383GLV_INT_HIGH_TRESHOLD_MSB_ALLBITS_MASK 0xFF |
Mikko Koivunen |
0:e58a87234f6a | 138 | #define BM1383GLV_INT_HIGH_TRESHOLD_LSB_ALLBITS_MASK 0xFF |
Mikko Koivunen |
0:e58a87234f6a | 139 | #define BM1383GLV_INT_LOW_TRESHOLD_MSB_ALLBITS_MASK 0xFF |
Mikko Koivunen |
0:e58a87234f6a | 140 | #define BM1383GLV_INT_LOW_TRESHOLD_LSB_ALLBITS_MASK 0xFF |
Mikko Koivunen |
0:e58a87234f6a | 141 | #define BM1383GLV_INT_CONTROL_REG_TRESHOLD_HIGH_MASK 0x80 |
Mikko Koivunen |
0:e58a87234f6a | 142 | #define BM1383GLV_INT_CONTROL_REG_TRESHOLD_LOW_MASK 0x40 |
Mikko Koivunen |
0:e58a87234f6a | 143 | #define BM1383GLV_INT_CONTROL_REG_INT_HIGH_MASK 0x20 |
Mikko Koivunen |
0:e58a87234f6a | 144 | #define BM1383GLV_INT_CONTROL_REG_INT_LOW_MASK 0x10 |
Mikko Koivunen |
0:e58a87234f6a | 145 | #define BM1383GLV_INT_CONTROL_REG_INT_PULLUP_MASK 0x08 |
Mikko Koivunen |
0:e58a87234f6a | 146 | |
Mikko Koivunen |
0:e58a87234f6a | 147 | #define BM1383GLV_INT_CONTROL_REG_RESERVED_MASK 0x04 |
Mikko Koivunen |
0:e58a87234f6a | 148 | #define BM1383GLV_INT_CONTROL_REG_INTERRUPT_STATE_MASK 0x02 |
Mikko Koivunen |
0:e58a87234f6a | 149 | |
Mikko Koivunen |
0:e58a87234f6a | 150 | #define BM1383GLV_INT_CONTROL_REG_INTERRUPT_MASK 0x01 |
Mikko Koivunen |
0:e58a87234f6a | 151 | #define BM1383GLV_TEMPERATURE_OUT_MSB_ALLBITS_MASK 0xFF |
Mikko Koivunen |
0:e58a87234f6a | 152 | #define BM1383GLV_TEMPERATURE_OUT_LSB_ALLBITS_MASK 0xFF |
Mikko Koivunen |
0:e58a87234f6a | 153 | #define BM1383GLV_PRESSURE_OUT_MSB_ALLBITS_MASK 0xFF |
Mikko Koivunen |
0:e58a87234f6a | 154 | #define BM1383GLV_PRESSURE_OUT_LSB_ALLBITS_MASK 0xFF |
Mikko Koivunen |
0:e58a87234f6a | 155 | #define BM1383GLV_PRESSURE_OUT_DECIMAL_ALLBITS_MASK 0x3F |
Mikko Koivunen |
0:e58a87234f6a | 156 | |
Mikko Koivunen |
0:e58a87234f6a | 157 | #endif /* BM1383GLV_H */ |