Added header comments in both files, improved the temperature reading function and refactored the calibrated magnetic fields reading function

This commit is contained in:
anschrammh 2025-04-29 07:11:22 +02:00
parent fe40710b7e
commit f0a6562c99
2 changed files with 31 additions and 17 deletions

View File

@ -1,3 +1,13 @@
/**
* @file QMC5883L.c
* @author Anatole SCHRAMM-HENRY
* @brief QMC5883L magnetometer functions implementation source file.
* @version 0.1
* @date 2025-03-17
*
* @copyright MIT
*/
#include <math.h>
#include "i2c.h"
#include "QMC5883L.h"
@ -45,18 +55,17 @@ bool QMC5883L_software_reset(void)
float QMC5883L_get_temperature(void)
{
uint8_t data;
uint8_t data[2];
int16_t raw_temp;
float temperature = 0.0F;
i2c_read_reg(QMC5883L_I2C_ADDR, QMC5883L_TEMP_MSB_REG, &data);
if(i2c_read(QMC5883L_I2C_ADDR, QMC5883L_TEMP_LSB_REG, data, sizeof data))
{
raw_temp = (data[1] << 8) | data[0];
temperature = (float)raw_temp / 100.0F + _calibration_data.temperature_offset;
}
raw_temp = data << 8;
i2c_read_reg(QMC5883L_I2C_ADDR, QMC5883L_TEMP_LSB_REG, &data);
raw_temp |= data;
return (float) raw_temp / 100.0 + _calibration_data.temperature_offset;
return temperature;
}
bool QMC5883L_is_data_available(void)
@ -96,15 +105,10 @@ QMC5883L_MData_t QMC5883L_get_MFields_raw(void)
QMC5883L_MData_calibrated_t QMC5883L_get_MFields_calibrated(void)
{
uint8_t data[6];
QMC5883L_MData_calibrated_t Mdata = {.MFieldX = -1, .MFieldY = -1, .MFieldZ = -1};
/* Read the raw magnetic field values first */
QMC5883L_MData_t raw_data = QMC5883L_get_MFields_raw();
if(i2c_read(QMC5883L_I2C_ADDR, QMC5883L_DATA_X_LSB_REG, data, sizeof data))
{
Mdata.MFieldX = (data[1] << 8) | data[0];
Mdata.MFieldY = (data[3] << 8) | data[2];
Mdata.MFieldZ = (data[5] << 8) | data[4];
}
QMC5883L_MData_calibrated_t Mdata = {.MFieldX = raw_data.MFieldX, .MFieldY = raw_data.MFieldY, .MFieldZ = raw_data.MFieldZ};
int x_offset = (_calibration_data.x_min + _calibration_data.x_max) / 2;
int y_offset = (_calibration_data.y_min + _calibration_data.y_max) / 2;

View File

@ -1,3 +1,13 @@
/**
* @file QMC5883L.h
* @author Anatole SCHRAMM-HENRY
* @brief QMC5883L magnetometer functions API header file.
* @version 0.1
* @date 2025-03-17
*
* @copyright MIT
*/
#ifndef QMC5883L_H
#define QMC5883L_H