Da Vinci Firmware 1
Firmware for the DaVinci-M rocket avionics board.
Loading...
Searching...
No Matches
utilities.h
Go to the documentation of this file.
1
16#ifndef UTILITIES_H_
17#define UTILITIES_H_
18
19#ifndef _BMP3_H
20#include "bmp3.h"
21#endif
22
23#ifndef LSM6DSO32_REGS_H
24#include "lsm6dso32_reg.h"
25#endif
26
27//#ifndef W25Q128_H
28//#include "W25Q128.h"
29//#endif
30
31//#define DEBUG_EN
32
33#ifdef DEBUG_EN
34
35#include "stm32h7xx.h"
36
37HAL_StatusTypeDef COM_port_serial_print(const uint8_t* data);
38#endif
39
40#ifndef __MAIN_H
41#include "main.h"
42#endif
43
44#include <stdbool.h>
45#include <math.h>
46#include "cmsis_os2.h"
47
48
49
50#define AIR_DENSITY_KG_M3 1.293f
51#define SPECIFIC_GAS_CONSTANT 287.0f // Joules/Kg*Kelvin
52
60typedef enum {
65
66
78int32_t imuP_write(void *handle, uint8_t reg_addr, const uint8_t *buf, uint16_t len);
79
91int32_t imuP_read(void *handle, uint8_t reg_addr, uint8_t *buf, uint16_t len);
92
103int8_t bmp390_P_write(uint8_t reg_addr, const uint8_t *buf, uint32_t len, void *intf_ptr);
104
115int8_t bmp390_P_read(uint8_t reg_addr, uint8_t *buf, uint32_t len, void *intf_ptr);
116
128int32_t imuB_write(void *handle, uint8_t reg_addr, const uint8_t *buf, uint16_t len);
129
141int32_t imuB_read(void *handle, uint8_t reg_addr, uint8_t *buf, uint16_t len);
142
153int8_t bmp390_B_write(uint8_t reg_addr, const uint8_t *buf, uint32_t len, void *intf_ptr);
154
165int8_t bmp390_B_read(uint8_t reg_addr, uint8_t *buf, uint32_t len, void *intf_ptr);
166
179int8_t init_imup(stmdev_ctx_t *imu, lsm6dso32_fs_xl_t acc_full_scale, lsm6dso32_fs_g_t gyro_full_scale, lsm6dso32_odr_xl_t acc_output_data_rate, lsm6dso32_odr_g_t gyro_output_data_rate);
180
189int8_t init_bmp390_p(struct bmp3_dev *bmp390);
190
203int8_t init_imuB(stmdev_ctx_t *imu, lsm6dso32_fs_xl_t acc_full_scale, lsm6dso32_fs_g_t gyro_full_scale, lsm6dso32_odr_xl_t acc_output_data_rate, lsm6dso32_odr_g_t gyro_output_data_rate);
204
213int8_t init_bmp390_B(struct bmp3_dev *bmp390);
214
215//int8_t init_flash(W25Q128_t *flash, chip_erasing erase);
216
217//int8_t calibrateBMP390(struct bmp3_dev *bmp390, uint16_t iterationNum);
218
234int8_t calibrateIMU(stmdev_ctx_t *imu, uint16_t iterationNum, OFFSET_TYPE type);
235
247int32_t imuP_read_2(void *handle, uint8_t reg_addr, uint8_t *buf, uint16_t len);
248
268float_t readAltitude(float_t seaLevelPa,float_t seaLevelT,float_t currentPa);
269
270
271
272#endif /* UTILITIES_H_ */
int8_t calibrateIMU(stmdev_ctx_t *imu, uint16_t iterationNum, OFFSET_TYPE type)
Calibrates the IMU by calculating sensor offsets.
Definition utilities.c:366
int32_t imuP_read(void *handle, uint8_t reg_addr, uint8_t *buf, uint16_t len)
SPI read function for the primary IMU (LSM6DSO32).
Definition utilities.c:52
OFFSET_TYPE
Specifies the type of offset compensation to be used.
Definition utilities.h:60
int32_t imuP_read_2(void *handle, uint8_t reg_addr, uint8_t *buf, uint16_t len)
SPI read function for the primary IMU (LSM6DSO32).
Definition utilities.c:71
int32_t imuB_read(void *handle, uint8_t reg_addr, uint8_t *buf, uint16_t len)
SPI read function for the backup IMU (LSM6DSO32).
Definition utilities.c:582
int8_t init_imup(stmdev_ctx_t *imu, lsm6dso32_fs_xl_t acc_full_scale, lsm6dso32_fs_g_t gyro_full_scale, lsm6dso32_odr_xl_t acc_output_data_rate, lsm6dso32_odr_g_t gyro_output_data_rate)
Initializes the primary IMU (LSM6DSO32).
Definition utilities.c:193
int32_t imuP_write(void *handle, uint8_t reg_addr, const uint8_t *buf, uint16_t len)
SPI write function for the primary IMU (LSM6DSO32).
Definition utilities.c:33
int8_t init_imuB(stmdev_ctx_t *imu, lsm6dso32_fs_xl_t acc_full_scale, lsm6dso32_fs_g_t gyro_full_scale, lsm6dso32_odr_xl_t acc_output_data_rate, lsm6dso32_odr_g_t gyro_output_data_rate)
Initializes the backup IMU (LSM6DSO32).
Definition utilities.c:665
int32_t imuB_write(void *handle, uint8_t reg_addr, const uint8_t *buf, uint16_t len)
SPI write function for the backup IMU (LSM6DSO32).
Definition utilities.c:563
@ SWOFFSET
Apply a software-based offset after reading the data.
Definition utilities.h:62
@ HWOFFSET
Use the hardware's internal offset registers.
Definition utilities.h:61
@ RESET_HWOFFSET
Reset the hardware offset registers to their default values.
Definition utilities.h:63
int8_t bmp390_P_read(uint8_t reg_addr, uint8_t *buf, uint32_t len, void *intf_ptr)
SPI read function for the primary Barometer (bmp390).
Definition utilities.c:122
int8_t init_bmp390_B(struct bmp3_dev *bmp390)
Initializes the backup barometer (BMP390).
Definition utilities.c:723
int8_t bmp390_B_read(uint8_t reg_addr, uint8_t *buf, uint32_t len, void *intf_ptr)
SPI read function for the backup Barometer (bmp390).
Definition utilities.c:623
int8_t bmp390_B_write(uint8_t reg_addr, const uint8_t *buf, uint32_t len, void *intf_ptr)
SPI write function for the backup Barometer (bmp390).
Definition utilities.c:603
int8_t init_bmp390_p(struct bmp3_dev *bmp390)
Initializes the primary barometer (BMP390).
Definition utilities.c:252
int8_t bmp390_P_write(uint8_t reg_addr, const uint8_t *buf, uint32_t len, void *intf_ptr)
SPI write function for the primary Barometer (bmp390).
Definition utilities.c:103
This file contains all the functions prototypes for the lsm6dso32_reg.c driver.
lsm6dso32_odr_xl_t
lsm6dso32_fs_g_t
lsm6dso32_odr_g_t
lsm6dso32_fs_xl_t
: Header for main.c file. This file contains the common defines of the application.
bmp3 device structure
Definition bmp3_defs.h:895
float_t readAltitude(float_t seaLevelPa, float_t seaLevelT, float_t currentPa)
Calculates altitude based on the barometric formula.
Definition utilities.c:780
HAL_StatusTypeDef
HAL Status structures definition.