LibDriver BMP180
Loading...
Searching...
No Matches
driver_bmp180_read_test.c
Go to the documentation of this file.
1
37
39
40static bmp180_handle_t gs_handle;
41
50uint8_t bmp180_read_test(uint32_t times)
51{
52 uint8_t res;
53 uint32_t i;
54 uint16_t temperature_yaw;
55 float temperature_c;
56 uint32_t pressure_yaw;
57 uint32_t pressure_pa;
58 bmp180_info_t info;
59
60 /* link interface function */
68
69 /* get bmp180 info */
70 res = bmp180_info(&info);
71 if (res != 0)
72 {
73 bmp180_interface_debug_print("bmp180: get info failed.\n");
74
75 return 1;
76 }
77 else
78 {
79 /* print bmp180 */
80 bmp180_interface_debug_print("bmp180: chip is %s.\n", info.chip_name);
81 bmp180_interface_debug_print("bmp180: manufacturer is %s.\n", info.manufacturer_name);
82 bmp180_interface_debug_print("bmp180: interface is %s.\n", info.interface);
83 bmp180_interface_debug_print("bmp180: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
84 bmp180_interface_debug_print("bmp180: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
85 bmp180_interface_debug_print("bmp180: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
86 bmp180_interface_debug_print("bmp180: max current is %0.2fmA.\n", info.max_current_ma);
87 bmp180_interface_debug_print("bmp180: max temperature is %0.1fC.\n", info.temperature_max);
88 bmp180_interface_debug_print("bmp180: min temperature is %0.1fC.\n", info.temperature_min);
89 }
90
91 /* start read test */
92 bmp180_interface_debug_print("bmp180: start read test.\n");
93 res = bmp180_init(&gs_handle);
94 if (res != 0)
95 {
96 bmp180_interface_debug_print("bmp180: init failed.\n");
97
98 return 1;
99 }
100
101 /* set ultra_low mode */
102 res = bmp180_set_mode(&gs_handle, BMP180_MODE_ULTRA_LOW);
103 if (res != 0)
104 {
105 bmp180_interface_debug_print("bmp180: set ultra low mode failed.\n");
106 (void)bmp180_deinit(&gs_handle);
107
108 return 1;
109 }
110 for (i = 0; i < times; i++)
111 {
112 res = bmp180_read_temperature_pressure(&gs_handle, (uint16_t *)&temperature_yaw, (float *)&temperature_c, (uint32_t *)&pressure_yaw, (uint32_t *)&pressure_pa);
113 if (res != 0)
114 {
115 bmp180_interface_debug_print("bmp180: read failed.\n");
116 (void)bmp180_deinit(&gs_handle);
117
118 return 1;
119 }
120 bmp180_interface_debug_print("bmp180: ultra low mode temperature: %.01fC.\n", temperature_c);
121 bmp180_interface_debug_print("bmp180: ultra low mode pressure: %dPa.\n", pressure_pa);
123 }
124
125 /* set standard mode */
126 res = bmp180_set_mode(&gs_handle, BMP180_MODE_STANDARD);
127 if (res != 0)
128 {
129 bmp180_interface_debug_print("bmp180: set standard mode failed.\n");
130 (void)bmp180_deinit(&gs_handle);
131
132 return 1;
133 }
134 for (i = 0; i < times; i++)
135 {
136 res = bmp180_read_temperature_pressure(&gs_handle, (uint16_t *)&temperature_yaw, (float *)&temperature_c, (uint32_t *)&pressure_yaw, (uint32_t *)&pressure_pa);
137 if (res != 0)
138 {
139 bmp180_interface_debug_print("bmp180: read failed.\n");
140 (void)bmp180_deinit(&gs_handle);
141
142 return 1;
143 }
144 bmp180_interface_debug_print("bmp180: standard mode temperature: %.01fC.\n", temperature_c);
145 bmp180_interface_debug_print("bmp180: standard mode pressure: %dPa.\n", pressure_pa);
147 }
148
149 /* set high mode */
150 res = bmp180_set_mode(&gs_handle, BMP180_MODE_HIGH);
151 if (res != 0)
152 {
153 bmp180_interface_debug_print("bmp180: set high mode failed.\n");
154 (void)bmp180_deinit(&gs_handle);
155
156 return 1;
157 }
158 for (i = 0; i < times; i++)
159 {
160 res = bmp180_read_temperature_pressure(&gs_handle, (uint16_t *)&temperature_yaw, (float *)&temperature_c, (uint32_t *)&pressure_yaw, (uint32_t *)&pressure_pa);
161 if (res != 0)
162 {
163 bmp180_interface_debug_print("bmp180: read failed.\n");
164 (void)bmp180_deinit(&gs_handle);
165
166 return 1;
167 }
168 bmp180_interface_debug_print("bmp180: high mode temperature: %.01fC.\n", temperature_c);
169 bmp180_interface_debug_print("bmp180: high mode pressure: %dPa.\n", pressure_pa);
171 }
172
173 /* set ultra_high mode */
174 res = bmp180_set_mode(&gs_handle, BMP180_MODE_ULTRA_HIGH);
175 if (res != 0)
176 {
177 bmp180_interface_debug_print("bmp180: set ultra high mode failed.\n");
178 (void)bmp180_deinit(&gs_handle);
179
180 return 1;
181 }
182 for (i = 0; i < times; i++)
183 {
184 res = bmp180_read_temperature_pressure(&gs_handle, (uint16_t *)&temperature_yaw, (float *)&temperature_c, (uint32_t *)&pressure_yaw, (uint32_t *)&pressure_pa);
185 if (res != 0)
186 {
187 bmp180_interface_debug_print("bmp180: read failed.\n");
188 (void)bmp180_deinit(&gs_handle);
189
190 return 1;
191 }
192 bmp180_interface_debug_print("bmp180: ultra high mode temperature: %.01fC.\n", temperature_c);
193 bmp180_interface_debug_print("bmp180: ultra high mode pressure: %dPa.\n", pressure_pa);
195 }
196
197 /* finish read test */
198 bmp180_interface_debug_print("bmp180: finish read test.\n");
199 (void)bmp180_deinit(&gs_handle);
200
201 return 0;
202}
driver bmp180 read test header file
uint8_t bmp180_deinit(bmp180_handle_t *handle)
close the chip
struct bmp180_info_s bmp180_info_t
bmp180 information structure definition
struct bmp180_handle_s bmp180_handle_t
bmp180 handle structure definition
uint8_t bmp180_init(bmp180_handle_t *handle)
initialize the chip
uint8_t bmp180_info(bmp180_info_t *info)
get chip's information
uint8_t bmp180_read_temperature_pressure(bmp180_handle_t *handle, uint16_t *temperature_raw, float *temperature_c, uint32_t *pressure_raw, uint32_t *pressure_pa)
read the temperature and pressure data
uint8_t bmp180_set_mode(bmp180_handle_t *handle, bmp180_mode_t mode)
set the measurement mode
@ BMP180_MODE_ULTRA_LOW
@ BMP180_MODE_STANDARD
@ BMP180_MODE_HIGH
@ BMP180_MODE_ULTRA_HIGH
void bmp180_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t bmp180_interface_iic_deinit(void)
interface iic bus deinit
uint8_t bmp180_interface_iic_init(void)
interface iic bus init
uint8_t bmp180_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void bmp180_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t bmp180_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t bmp180_read_test(uint32_t times)
read test
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]