1 /*        $NetBSD: bmx280reg.h,v 1.1 2022/12/03 01:04:43 brad Exp $   */
2 
3 /*
4  * Copyright (c) 2022 Brad Spencer <brad@anduin.eldar.org>
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef _DEV_IC_BMX280REG_H_
20 #define _DEV_IC_BMX280REG_H_
21 
22 #define BMX280_TYPICAL_ADDR_1 0x76
23 #define BMX280_TYPICAL_ADDR_2 0x77
24 
25 #define BMX280_REGISTER_DIG_T1                    0x88
26 #define BMX280_REGISTER_DIG_T2                    0x8A
27 #define BMX280_REGISTER_DIG_T3                    0x8C
28 #define BMX280_REGISTER_DIG_P1                    0x8E
29 #define BMX280_REGISTER_DIG_P2                    0x90
30 #define BMX280_REGISTER_DIG_P3                    0x92
31 #define BMX280_REGISTER_DIG_P4                    0x94
32 #define BMX280_REGISTER_DIG_P5                    0x96
33 #define BMX280_REGISTER_DIG_P6                    0x98
34 #define BMX280_REGISTER_DIG_P7                    0x9A
35 #define BMX280_REGISTER_DIG_P8                    0x9C
36 #define BMX280_REGISTER_DIG_P9                    0x9E
37 #define BMX280_REGISTER_DIG_H1                    0xA1
38 #define BMX280_REGISTER_DIG_H2                    0xE1
39 #define BMX280_REGISTER_DIG_H3                    0xE3
40 #define BMX280_REGISTER_DIG_H4                    0xE4
41 #define BMX280_REGISTER_DIG_H5                    0xE5
42 
43 #define BMX280_REGISTER_ID              0xD0
44 #define BMX280_ID_BMP280                0x58
45 #define BMX280_ID_BME280                0x60
46 
47 #define BMX280_REGISTER_RESET           0xE0
48 #define BMX280_TRIGGER_RESET            0xB6
49 
50 #define BMX280_REGISTER_CTRL_HUM        0xF2
51 
52 #define BMX280_REGISTER_STATUS                    0xF3
53 #define BMX280_STATUS_MEASURING_MASK    0x08
54 #define BMX280_STATUS_IM_UPDATE_MASK    0x01
55 
56 #define BMX280_REGISTER_CTRL_MEAS       0xF4
57 #define BMX280_CTRL_OSRS_T_MASK                   0xE0
58 #define BMX280_CTRL_OSRS_P_MASK                   0x1C
59 #define BMX280_CTRL_OSRS_T_SHIFT        5
60 #define BMX280_CTRL_OSRS_P_SHIFT        2
61 #define BMX280_OSRS_TP_VALUE_SKIPPED    0x00
62 #define BMX280_OSRS_TP_VALUE_X1                   0x01
63 #define BMX280_OSRS_TP_VALUE_X2                   0x02
64 #define BMX280_OSRS_TP_VALUE_X4                   0x03
65 #define BMX280_OSRS_TP_VALUE_X8                   0x04
66 #define BMX280_OSRS_TP_VALUE_X16        0x05
67 #define BMX280_CTRL_MODE_MASK           0x03
68 #define BMX280_MODE_SLEEP               0x00
69 #define BMX280_MODE_FORCED              0x01
70 #define BMX280_MODE_NORMAL              0x03
71 
72 #define BMX280_REGISTER_CONFIG                    0xF5
73 #define BMX280_CONFIG_T_SB_MASK                   0xE0
74 #define BMX280_CONFIG_FILTER_MASK       0x1C
75 #define BMX280_CONFIG_FILTER_SHIFT      2
76 #define BMX280_FILTER_VALUE_OFF                   0x00
77 #define BMX280_FILTER_VALUE_2           0x01
78 #define BMX280_FILTER_VALUE_5           0x02
79 #define BMX280_FILTER_VALUE_11                    0x04
80 #define BMX280_FILTER_VALUE_22                    0x05
81 #define BMX280_CONFIG_SPI3W_EN_MASK     0x01
82 
83 #define BMX280_REGISTER_PRESS_MSB       0xF7
84 #define BMX280_REGISTER_PRESS_LSB       0xF8
85 #define BMX280_REGISTER_PRESS_XLSB      0xF9
86 
87 #define BMX280_REGISTER_TEMP_MSB        0xFA
88 #define BMX280_REGISTER_TEMP_LSB        0xFB
89 #define BMX280_REGISTER_TEMP_XLSB       0xFC
90 
91 #define BMX280_TEMPPRES_XLSB_MASK       0xF0
92 
93 #define BMX280_REGISTER_HUM_MSB                   0xFD
94 #define BMX280_REGISTER_HUM_LSB                   0xFE
95 
96 #endif
97