Rohm BH1745 red-green-blue-clear -color sensor hello world. Uses Rohm sensor hal for i2c commands and rohm-bh1745 -driver for sensor specific commands.

Dependencies:   mbed rohm-bh1745 rohm-sensor-hal

Fork of rohm-rpr0521-hello by Rohm

Committer:
MikkoZ
Date:
Mon Sep 12 09:22:17 2016 +0000
Revision:
2:edc916d1a86d
Initial version of (proximity-als-ir) rpr0521 hello application.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikkoZ 2:edc916d1a86d 1 /* Copyright 2016 Rohm Semiconductor
MikkoZ 2:edc916d1a86d 2
MikkoZ 2:edc916d1a86d 3 Licensed under the Apache License, Version 2.0 (the "License");
MikkoZ 2:edc916d1a86d 4 you may not use this file except in compliance with the License.
MikkoZ 2:edc916d1a86d 5 You may obtain a copy of the License at
MikkoZ 2:edc916d1a86d 6
MikkoZ 2:edc916d1a86d 7 http://www.apache.org/licenses/LICENSE-2.0
MikkoZ 2:edc916d1a86d 8
MikkoZ 2:edc916d1a86d 9 Unless required by applicable law or agreed to in writing, software
MikkoZ 2:edc916d1a86d 10 distributed under the License is distributed on an "AS IS" BASIS,
MikkoZ 2:edc916d1a86d 11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
MikkoZ 2:edc916d1a86d 12 See the License for the specific language governing permissions and
MikkoZ 2:edc916d1a86d 13 limitations under the License.
MikkoZ 2:edc916d1a86d 14 */
MikkoZ 2:edc916d1a86d 15 #ifndef RPR0521_H
MikkoZ 2:edc916d1a86d 16 #define RPR0521_H
MikkoZ 2:edc916d1a86d 17
MikkoZ 2:edc916d1a86d 18 /* registers */
MikkoZ 2:edc916d1a86d 19 #define RPR0521_REGISTER_DUMP_START 0x40
MikkoZ 2:edc916d1a86d 20 #define RPR0521_SYSTEM_CONTROL 0x40
MikkoZ 2:edc916d1a86d 21 #define RPR0521_MODE_CONTROL 0x41
MikkoZ 2:edc916d1a86d 22 #define RPR0521_ALS_PS_CONTROL 0x42
MikkoZ 2:edc916d1a86d 23 #define RPR0521_PS_CONTROL 0x43
MikkoZ 2:edc916d1a86d 24 // low 8bit
MikkoZ 2:edc916d1a86d 25 #define RPR0521_PS_DATA_LSBS 0x44
MikkoZ 2:edc916d1a86d 26 // high 4bit
MikkoZ 2:edc916d1a86d 27 #define RPR0521_PS_DATA_MSBS 0x45
MikkoZ 2:edc916d1a86d 28 // low 8bit
MikkoZ 2:edc916d1a86d 29 #define RPR0521_ALS_DATA0_LSBS 0x46
MikkoZ 2:edc916d1a86d 30 // high 8bit
MikkoZ 2:edc916d1a86d 31 #define RPR0521_ALS_DATA0_MSBS 0x47
MikkoZ 2:edc916d1a86d 32 // low 8bit
MikkoZ 2:edc916d1a86d 33 #define RPR0521_ALS_DATA1_LSBS 0x48
MikkoZ 2:edc916d1a86d 34 // high 8bit
MikkoZ 2:edc916d1a86d 35 #define RPR0521_ALS_DATA1_MSBS 0x49
MikkoZ 2:edc916d1a86d 36 #define RPR0521_INTERRUPT 0x4A
MikkoZ 2:edc916d1a86d 37 // low 8bit
MikkoZ 2:edc916d1a86d 38 #define RPR0521_PS_TH_LSBS 0x4B
MikkoZ 2:edc916d1a86d 39 // high 4bit
MikkoZ 2:edc916d1a86d 40 #define RPR0521_PS_TH_MSBS 0x4C
MikkoZ 2:edc916d1a86d 41 // low 8bit
MikkoZ 2:edc916d1a86d 42 #define RPR0521_PS_TL_LSBS 0x4D
MikkoZ 2:edc916d1a86d 43 // high 4bit
MikkoZ 2:edc916d1a86d 44 #define RPR0521_PS_TL_MSBS 0x4E
MikkoZ 2:edc916d1a86d 45 // low 8bit
MikkoZ 2:edc916d1a86d 46 #define RPR0521_ALS_DATA0_TH_LSBS 0x4F
MikkoZ 2:edc916d1a86d 47 // high 8bit
MikkoZ 2:edc916d1a86d 48 #define RPR0521_ALS_DATA0_TH_MSBS 0x50
MikkoZ 2:edc916d1a86d 49 // low 8bit
MikkoZ 2:edc916d1a86d 50 #define RPR0521_ALS_DATA0_TL_LSBS 0x51
MikkoZ 2:edc916d1a86d 51 // high 8bit
MikkoZ 2:edc916d1a86d 52 #define RPR0521_ALS_DATA0_TL_MSBS 0x52
MikkoZ 2:edc916d1a86d 53 // low 8bit
MikkoZ 2:edc916d1a86d 54 #define RPR0521_PS_OFFSET_LSBS 0x53
MikkoZ 2:edc916d1a86d 55 // high 2bit
MikkoZ 2:edc916d1a86d 56 #define RPR0521_PS_OFFSET_MSBS 0x54
MikkoZ 2:edc916d1a86d 57 #define RPR0521_MANUFACT 0x92
MikkoZ 2:edc916d1a86d 58 #define RPR0521_MANUFACT_VALUE 0xE0
MikkoZ 2:edc916d1a86d 59 #define RPR0521_REGISTER_DUMP_END 0x54
MikkoZ 2:edc916d1a86d 60 /* registers bits */
MikkoZ 2:edc916d1a86d 61 #define RPR0521_SYSTEM_CONTROL_SW_RESET_NOT_STARTED (0x00 << 7)
MikkoZ 2:edc916d1a86d 62 #define RPR0521_SYSTEM_CONTROL_SW_RESET_START (0x01 << 7)
MikkoZ 2:edc916d1a86d 63 #define RPR0521_SYSTEM_CONTROL_INT_PIN_NO_INIT (0x00 << 6)
MikkoZ 2:edc916d1a86d 64 #define RPR0521_SYSTEM_CONTROL_INT_PIN_HI_Z (0x01 << 6)
MikkoZ 2:edc916d1a86d 65 #define RPR0521_SYSTEM_CONTROL_PART_ID (0x0A << 0)
MikkoZ 2:edc916d1a86d 66 #define RPR0521_MODE_CONTROL_ALS_EN_FALSE (0x00 << 7)
MikkoZ 2:edc916d1a86d 67 #define RPR0521_MODE_CONTROL_ALS_EN_TRUE (0x01 << 7)
MikkoZ 2:edc916d1a86d 68 #define RPR0521_MODE_CONTROL_PS_EN_FALSE (0x00 << 6)
MikkoZ 2:edc916d1a86d 69 #define RPR0521_MODE_CONTROL_PS_EN_TRUE (0x01 << 6)
MikkoZ 2:edc916d1a86d 70 #define RPR0521_MODE_CONTROL_PS_PULSE_200US (0x00 << 5)
MikkoZ 2:edc916d1a86d 71 #define RPR0521_MODE_CONTROL_PS_PULSE_330US (0x01 << 5)
MikkoZ 2:edc916d1a86d 72 #define RPR0521_MODE_CONTROL_PS_OPERATING_MODE_NORMAL (0x00 << 4)
MikkoZ 2:edc916d1a86d 73 #define RPR0521_MODE_CONTROL_PS_OPERATING_MODE_DOUBLE_MEASUREMENT (0x01 << 4)
MikkoZ 2:edc916d1a86d 74 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_OFF_OFF (0x00 << 0)
MikkoZ 2:edc916d1a86d 75 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_OFF_10MS (0x01 << 0)
MikkoZ 2:edc916d1a86d 76 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_OFF_40MS (0x02 << 0)
MikkoZ 2:edc916d1a86d 77 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_OFF_100MS (0x03 << 0)
MikkoZ 2:edc916d1a86d 78 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_OFF_400MS (0x04 << 0)
MikkoZ 2:edc916d1a86d 79 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_100MS_50MS (0x05 << 0)
MikkoZ 2:edc916d1a86d 80 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_100MS_100MS (0x06 << 0)
MikkoZ 2:edc916d1a86d 81 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_100MS_400MS (0x07 << 0)
MikkoZ 2:edc916d1a86d 82 // ALS measurement time is 100ms, sleep time is 300ms
MikkoZ 2:edc916d1a86d 83 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_400MS_50MS (0x08 << 0)
MikkoZ 2:edc916d1a86d 84 // ALS measurement time is 100ms, sleep time is 300ms
MikkoZ 2:edc916d1a86d 85 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_400MS_100MS (0x09 << 0)
MikkoZ 2:edc916d1a86d 86 // Measurement time 400ms, high sensitivity mode.
MikkoZ 2:edc916d1a86d 87 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_400MS_OFF (0x0A << 0)
MikkoZ 2:edc916d1a86d 88 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_400MS_400MS (0x0B << 0)
MikkoZ 2:edc916d1a86d 89 // Additional sw process is necessary. Check P.18
MikkoZ 2:edc916d1a86d 90 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_50MS_50MS (0x0C << 0)
MikkoZ 2:edc916d1a86d 91 #define RPR0521_ALS_PS_CONTROL_RESERVED67_WRITE_00 (0x00 << 6)
MikkoZ 2:edc916d1a86d 92 #define RPR0521_ALS_PS_CONTROL_ALS_DATA0_GAIN_X1 (0x00 << 4)
MikkoZ 2:edc916d1a86d 93 #define RPR0521_ALS_PS_CONTROL_ALS_DATA0_GAIN_X2 (0x01 << 4)
MikkoZ 2:edc916d1a86d 94 #define RPR0521_ALS_PS_CONTROL_ALS_DATA0_GAIN_X64 (0x02 << 4)
MikkoZ 2:edc916d1a86d 95 #define RPR0521_ALS_PS_CONTROL_ALS_DATA0_GAIN_X128 (0x03 << 4)
MikkoZ 2:edc916d1a86d 96 #define RPR0521_ALS_PS_CONTROL_ALS_DATA1_GAIN_X1 (0x00 << 2)
MikkoZ 2:edc916d1a86d 97 #define RPR0521_ALS_PS_CONTROL_ALS_DATA1_GAIN_X2 (0x01 << 2)
MikkoZ 2:edc916d1a86d 98 #define RPR0521_ALS_PS_CONTROL_ALS_DATA1_GAIN_X64 (0x02 << 2)
MikkoZ 2:edc916d1a86d 99 #define RPR0521_ALS_PS_CONTROL_ALS_DATA1_GAIN_X128 (0x03 << 2)
MikkoZ 2:edc916d1a86d 100 #define RPR0521_ALS_PS_CONTROL_LED_CURRENT_25MA (0x00 << 0)
MikkoZ 2:edc916d1a86d 101 #define RPR0521_ALS_PS_CONTROL_LED_CURRENT_50MA (0x01 << 0)
MikkoZ 2:edc916d1a86d 102 #define RPR0521_ALS_PS_CONTROL_LED_CURRENT_100MA (0x02 << 0)
MikkoZ 2:edc916d1a86d 103 #define RPR0521_ALS_PS_CONTROL_LED_CURRENT_200MA (0x03 << 0)
MikkoZ 2:edc916d1a86d 104 #define RPR0521_PS_CONTROL_AMBIENT_IR_FLAG_LOW (0x00 << 6)
MikkoZ 2:edc916d1a86d 105 #define RPR0521_PS_CONTROL_AMBIENT_IR_FLAG_HIGH (0x01 << 6)
MikkoZ 2:edc916d1a86d 106 #define RPR0521_PS_CONTROL_AMBIENT_IR_FLAG_TOO_HIGH (0x02 << 6)
MikkoZ 2:edc916d1a86d 107 #define RPR0521_PS_CONTROL_PS_GAIN_X1 (0x00 << 4)
MikkoZ 2:edc916d1a86d 108 #define RPR0521_PS_CONTROL_PS_GAIN_X2 (0x01 << 4)
MikkoZ 2:edc916d1a86d 109 #define RPR0521_PS_CONTROL_PS_GAIN_X4 (0x02 << 4)
MikkoZ 2:edc916d1a86d 110 #define RPR0521_PS_CONTROL_PERSISTENCE_DRDY (0x00 << 0)
MikkoZ 2:edc916d1a86d 111 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_1 (0x01 << 0)
MikkoZ 2:edc916d1a86d 112 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_2 (0x02 << 0)
MikkoZ 2:edc916d1a86d 113 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_3 (0x03 << 0)
MikkoZ 2:edc916d1a86d 114 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_4 (0x04 << 0)
MikkoZ 2:edc916d1a86d 115 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_5 (0x05 << 0)
MikkoZ 2:edc916d1a86d 116 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_6 (0x06 << 0)
MikkoZ 2:edc916d1a86d 117 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_7 (0x07 << 0)
MikkoZ 2:edc916d1a86d 118 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_8 (0x08 << 0)
MikkoZ 2:edc916d1a86d 119 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_9 (0x09 << 0)
MikkoZ 2:edc916d1a86d 120 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_10 (0x0A << 0)
MikkoZ 2:edc916d1a86d 121 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_11 (0x0B << 0)
MikkoZ 2:edc916d1a86d 122 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_12 (0x0C << 0)
MikkoZ 2:edc916d1a86d 123 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_13 (0x0D << 0)
MikkoZ 2:edc916d1a86d 124 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_14 (0x0E << 0)
MikkoZ 2:edc916d1a86d 125 #define RPR0521_PS_CONTROL_PERSISTENCE_CONSECUTIVE_15 (0x0F << 0)
MikkoZ 2:edc916d1a86d 126 #define RPR0521_INTERRUPT_PS_INT_STATUS_INACTIVE (0x00 << 7)
MikkoZ 2:edc916d1a86d 127 #define RPR0521_INTERRUPT_PS_INT_STATUS_ACTIVE (0x01 << 7)
MikkoZ 2:edc916d1a86d 128 #define RPR0521_INTERRUPT_ALS_INT_STATUS_INACTIVE (0x00 << 6)
MikkoZ 2:edc916d1a86d 129 #define RPR0521_INTERRUPT_ALS_INT_STATUS_ACTIVE (0x01 << 6)
MikkoZ 2:edc916d1a86d 130 #define RPR0521_INTERRUPT_INT_MODE_PS_TH_H_ACTIVE (0x00 << 4)
MikkoZ 2:edc916d1a86d 131 #define RPR0521_INTERRUPT_INT_MODE_PS_TH_HYSTERESIS (0x01 << 4)
MikkoZ 2:edc916d1a86d 132 #define RPR0521_INTERRUPT_INT_MODE_PS_TH_OUTSIDE_DETECTION (0x02 << 4)
MikkoZ 2:edc916d1a86d 133 #define RPR0521_INTERRUPT_INT_ASSERT_STABLE (0x00 << 3)
MikkoZ 2:edc916d1a86d 134 #define RPR0521_INTERRUPT_INT_ASSERT_REINT (0x01 << 3)
MikkoZ 2:edc916d1a86d 135 #define RPR0521_INTERRUPT_INT_LATCH_ENABLED (0x00 << 2)
MikkoZ 2:edc916d1a86d 136 #define RPR0521_INTERRUPT_INT_LATCH_DISABLED (0x01 << 2)
MikkoZ 2:edc916d1a86d 137 #define RPR0521_INTERRUPT_INT_TRIG_INACTIVE (0x00 << 0)
MikkoZ 2:edc916d1a86d 138 #define RPR0521_INTERRUPT_INT_TRIG_BY_PS (0x01 << 0)
MikkoZ 2:edc916d1a86d 139 #define RPR0521_INTERRUPT_INT_TRIG_BY_ALS (0x02 << 0)
MikkoZ 2:edc916d1a86d 140 #define RPR0521_INTERRUPT_INT_TRIG_BY_BOTH (0x03 << 0)
MikkoZ 2:edc916d1a86d 141 #define RPR0521_MANUFACT_ID_E0H (0xE0 << 0)
MikkoZ 2:edc916d1a86d 142 /*registers bit masks */
MikkoZ 2:edc916d1a86d 143 #define RPR0521_SYSTEM_CONTROL_SW_RESET_MASK 0x80
MikkoZ 2:edc916d1a86d 144 #define RPR0521_SYSTEM_CONTROL_INT_PIN_MASK 0x40
MikkoZ 2:edc916d1a86d 145 #define RPR0521_SYSTEM_CONTROL_PART_MASK 0x3F
MikkoZ 2:edc916d1a86d 146 #define RPR0521_MODE_CONTROL_ALS_EN_MASK 0x80
MikkoZ 2:edc916d1a86d 147 #define RPR0521_MODE_CONTROL_PS_EN_MASK 0x40
MikkoZ 2:edc916d1a86d 148 #define RPR0521_MODE_CONTROL_PS_PULSE_MASK 0x20
MikkoZ 2:edc916d1a86d 149 #define RPR0521_MODE_CONTROL_PS_OPERATING_MODE_MASK 0x10
MikkoZ 2:edc916d1a86d 150 #define RPR0521_MODE_CONTROL_MEASUREMENT_TIME_MASK 0x0F
MikkoZ 2:edc916d1a86d 151
MikkoZ 2:edc916d1a86d 152 #define RPR0521_ALS_PS_CONTROL_RESERVED67_MASK 0xC0
MikkoZ 2:edc916d1a86d 153 #define RPR0521_ALS_PS_CONTROL_ALS_DATA0_GAIN_MASK 0x30
MikkoZ 2:edc916d1a86d 154 #define RPR0521_ALS_PS_CONTROL_ALS_DATA1_GAIN_MASK 0x0C
MikkoZ 2:edc916d1a86d 155 #define RPR0521_ALS_PS_CONTROL_LED_CURRENT_MASK 0x03
MikkoZ 2:edc916d1a86d 156 #define RPR0521_PS_CONTROL_AMBIENT_IR_FLAG_MASK 0xC0
MikkoZ 2:edc916d1a86d 157 #define RPR0521_PS_CONTROL_PS_GAIN_MASK 0x30
MikkoZ 2:edc916d1a86d 158 #define RPR0521_PS_CONTROL_PERSISTENCE_MASK 0x0F
MikkoZ 2:edc916d1a86d 159 #define RPR0521_INTERRUPT_PS_INT_STATUS_MASK 0x80
MikkoZ 2:edc916d1a86d 160 #define RPR0521_INTERRUPT_ALS_INT_STATUS_MASK 0x40
MikkoZ 2:edc916d1a86d 161 #define RPR0521_INTERRUPT_INT_MODE_MASK 0x30
MikkoZ 2:edc916d1a86d 162 #define RPR0521_INTERRUPT_INT_ASSERT_MASK 0x08
MikkoZ 2:edc916d1a86d 163 #define RPR0521_INTERRUPT_INT_LATCH_MASK 0x04
MikkoZ 2:edc916d1a86d 164 #define RPR0521_INTERRUPT_INT_TRIG_MASK 0x03
MikkoZ 2:edc916d1a86d 165 #define RPR0521_MANUFACT_ID_MASK 0xFF
MikkoZ 2:edc916d1a86d 166
MikkoZ 2:edc916d1a86d 167 #endif /* RPR0521_H */