LibDriver MS5611
Loading...
Searching...
No Matches
driver_ms5611_read_test.c
Go to the documentation of this file.
1
36
38
39static ms5611_handle_t gs_handle;
40
51uint8_t ms5611_read_test(ms5611_interface_t interface, ms5611_address_t addr_pin, uint32_t times)
52{
53 uint8_t res;
54 uint32_t i;
55 ms5611_info_t info;
56
57 /* link interface function */
69
70 /* get information */
71 res = ms5611_info(&info);
72 if (res != 0)
73 {
74 ms5611_interface_debug_print("ms5611: get info failed.\n");
75
76 return 1;
77 }
78 else
79 {
80 /* print chip info */
81 ms5611_interface_debug_print("ms5611: chip is %s.\n", info.chip_name);
82 ms5611_interface_debug_print("ms5611: manufacturer is %s.\n", info.manufacturer_name);
83 ms5611_interface_debug_print("ms5611: interface is %s.\n", info.interface);
84 ms5611_interface_debug_print("ms5611: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
85 ms5611_interface_debug_print("ms5611: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
86 ms5611_interface_debug_print("ms5611: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
87 ms5611_interface_debug_print("ms5611: max current is %0.2fmA.\n", info.max_current_ma);
88 ms5611_interface_debug_print("ms5611: max temperature is %0.1fC.\n", info.temperature_max);
89 ms5611_interface_debug_print("ms5611: min temperature is %0.1fC.\n", info.temperature_min);
90 }
91
92 /* set the interface */
93 res = ms5611_set_interface(&gs_handle, interface);
94 if (res != 0)
95 {
96 ms5611_interface_debug_print("ms5611: set interface failed.\n");
97
98 return 1;
99 }
100
101 /* set the address pin */
102 res = ms5611_set_addr_pin(&gs_handle, addr_pin);
103 if (res != 0)
104 {
105 ms5611_interface_debug_print("ms5611: set addr pin failed.\n");
106
107 return 1;
108 }
109
110 /* start read test */
111 ms5611_interface_debug_print("ms5611: start read test.\n");
112
113 /* init ms5611 */
114 res = ms5611_init(&gs_handle);
115 if (res != 0)
116 {
117 ms5611_interface_debug_print("ms5611: init failed.\n");
118
119 return 1;
120 }
121
122 /* set temperature osr 4096 */
124 if (res != 0)
125 {
126 ms5611_interface_debug_print("ms5611: set temperature osr failed.\n");
127 (void)ms5611_deinit(&gs_handle);
128
129 return 1;
130 }
131
132 /* set pressure osr 4096 */
133 res = ms5611_set_pressure_osr(&gs_handle, MS5611_OSR_4096);
134 if (res != 0)
135 {
136 ms5611_interface_debug_print("ms5611: set pressure osr failed.\n");
137 (void)ms5611_deinit(&gs_handle);
138
139 return 1;
140 }
141
142 /* output */
143 ms5611_interface_debug_print("ms5611: set temperature osr 4096.\n");
144 ms5611_interface_debug_print("ms5611: set pressure osr 4096.\n");
145
146 for (i = 0; i < times; i++)
147 {
148 uint32_t temperature_raw;
149 float temperature_c;
150 uint32_t pressure_raw;
151 float pressure_mbar;
152
153 res = ms5611_read_temperature_pressure(&gs_handle, &temperature_raw, &temperature_c,
154 &pressure_raw, &pressure_mbar);
155 if (res != 0)
156 {
157 ms5611_interface_debug_print("ms5611: read temperature pressure failed.\n");
158 (void)ms5611_deinit(&gs_handle);
159
160 return 1;
161 }
162
163 /* output */
164 ms5611_interface_debug_print("ms5611: temperature is %0.2fC.\n", temperature_c);
165 ms5611_interface_debug_print("ms5611: pressure is %0.2fmbar.\n", pressure_mbar);
166
167 /* delay 1000ms */
169 }
170
171 /* set temperature osr 256 */
173 if (res != 0)
174 {
175 ms5611_interface_debug_print("ms5611: set temperature osr failed.\n");
176 (void)ms5611_deinit(&gs_handle);
177
178 return 1;
179 }
180
181 /* set pressure osr 256 */
182 res = ms5611_set_pressure_osr(&gs_handle, MS5611_OSR_256);
183 if (res != 0)
184 {
185 ms5611_interface_debug_print("ms5611: set pressure osr failed.\n");
186 (void)ms5611_deinit(&gs_handle);
187
188 return 1;
189 }
190
191 /* output */
192 ms5611_interface_debug_print("ms5611: set temperature osr 256.\n");
193 ms5611_interface_debug_print("ms5611: set pressure osr 256.\n");
194
195 for (i = 0; i < times; i++)
196 {
197 uint32_t temperature_raw;
198 float temperature_c;
199 uint32_t pressure_raw;
200 float pressure_mbar;
201
202 res = ms5611_read_temperature_pressure(&gs_handle, &temperature_raw, &temperature_c,
203 &pressure_raw, &pressure_mbar);
204 if (res != 0)
205 {
206 ms5611_interface_debug_print("ms5611: read temperature pressure failed.\n");
207 (void)ms5611_deinit(&gs_handle);
208
209 return 1;
210 }
211
212 /* output */
213 ms5611_interface_debug_print("ms5611: temperature is %0.2fC.\n", temperature_c);
214 ms5611_interface_debug_print("ms5611: pressure is %0.2fmbar.\n", pressure_mbar);
215
216 /* delay 1000ms */
218 }
219
220 /* finish read test */
221 ms5611_interface_debug_print("ms5611: finish read test.\n");
222 (void)ms5611_deinit(&gs_handle);
223
224 return 0;
225}
driver ms5611 read test header file
struct ms5611_info_s ms5611_info_t
ms5611 information structure definition
ms5611_address_t
ms5611 address enumeration definition
uint8_t ms5611_info(ms5611_info_t *info)
get chip's information
uint8_t ms5611_deinit(ms5611_handle_t *handle)
close the chip
uint8_t ms5611_set_pressure_osr(ms5611_handle_t *handle, ms5611_osr_t osr)
set pressure osr
uint8_t ms5611_set_addr_pin(ms5611_handle_t *handle, ms5611_address_t addr_pin)
set the iic address pin
uint8_t ms5611_read_temperature_pressure(ms5611_handle_t *handle, uint32_t *temperature_raw, float *temperature_c, uint32_t *pressure_raw, float *pressure_mbar)
read the temperature and pressure
ms5611_interface_t
ms5611 interface enumeration definition
struct ms5611_handle_s ms5611_handle_t
ms5611 handle structure definition
uint8_t ms5611_init(ms5611_handle_t *handle)
initialize the chip
uint8_t ms5611_set_interface(ms5611_handle_t *handle, ms5611_interface_t interface)
set the chip interface
uint8_t ms5611_set_temperature_osr(ms5611_handle_t *handle, ms5611_osr_t osr)
set temperature osr
@ MS5611_OSR_4096
@ MS5611_OSR_256
uint8_t ms5611_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
void ms5611_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ms5611_interface_spi_deinit(void)
interface spi bus deinit
uint8_t ms5611_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t ms5611_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void ms5611_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t ms5611_interface_iic_init(void)
interface iic bus init
uint8_t ms5611_interface_spi_init(void)
interface spi bus init
uint8_t ms5611_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t ms5611_interface_iic_deinit(void)
interface iic bus deinit
uint8_t ms5611_read_test(ms5611_interface_t interface, ms5611_address_t addr_pin, 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]