Skip to content
Snippets Groups Projects
Commit d0d59f52 authored by Nicolò's avatar Nicolò
Browse files

FIles for the driver, cmake change, Defs implemented (WIP)

Created necessary files, cmake change, test added to see everything compiles.
LIS3DSHDefs.h in implementation phase (WIP)
parent c0c732f5
No related branches found
No related tags found
No related merge requests found
......@@ -106,7 +106,7 @@ add_executable(test-sensormanager src/tests/test-sensormanager.cpp)
sbs_target(test-sensormanager stm32f429zi_skyward_death_stack_x)
add_executable(test-serial src/tests/test-serial.cpp)
sbs_target(test-serial stm32f756zg_nucleo)
sbs_target(test-serial stm32f407vg_stm32f4discovery)
add_executable(test-taskscheduler src/tests/scheduler/test-taskscheduler.cpp)
sbs_target(test-taskscheduler stm32f407vg_stm32f4discovery)
......@@ -114,6 +114,9 @@ sbs_target(test-taskscheduler stm32f407vg_stm32f4discovery)
add_executable(test-trace-logger src/tests/test-trace-logger.cpp)
sbs_target(test-trace-logger stm32f429zi_stm32f4discovery)
add_executable(test-my-test src/tests/test-my-test.cpp)
sbs_target(test-my-test stm32f407vg_stm32f4discovery) # Target name in ./sbs tartet_name
#-----------------------------------------------------------------------------#
# Tests - Catch #
#-----------------------------------------------------------------------------#
......
/*
* My driver for the 3-axis accelerometer LIS3DSH
*
*/
#pragma once
#include <drivers/spi/SPIDriver.h>
#include <miosix.h>
#include <sensors/Sensor.h>
namespace Boardcore{
class LIS3DSH::Sensor<LIS3DSH>{
public:
// Constructor
LIS3DSH(SPIBusInterface& spiBus,
miosix::GpioPin cs,
LIS
)
}
}
\ No newline at end of file
// Definition file for LIS3DSH
namespace Boardcore
{
namespace LIS3DSHDefs{
// Given by the datasheet FS ranges
// Bitwise operation, to have 00, 01. 10, 11 representation
// Offset given by its position into the CTRL_REG4
enum FullScaleRange
{
FS_02 = 0 << 4, // +- 2.0 sensitivity
FS_04 = 1 << 4, // +- 4.0 sensitivity
FS_08 = 2 << 4, // +- 8.0 sensitivity
FS_16 = 3 << 4 // +- 16.0 sensitivity
};
// Offset given by the register CTRL_REG1 table!
enum OutputDataRate{
ODR_1 = 0b0001 << 4, // Normal/HR power mode 1 Hz
ODR_10 = 0b0010 << 4, // Normal/HR power mode 10 Hz
ODR_25 = 0b0011 << 4, // Normal/HR power mode 25 Hz
ODR_50 = 0b0100 << 4, // Normal/HR power mode 50 Hz
ODR_100 = 0b0101 << 4, // Normal/HR power mode 100 Hz
ODR_200 = 0b0110 << 4, // Normal/HR power mode 200 Hz
ODR_400 = 0b0111 << 4, // Normal/HR power mode 400 Hz
ODR_LP_1 = 0b0001 << 4 | 0b1 << 3, // Low power mode 1 Hz
ODR_LP_10 = 0b0010 << 4 | 0b1 << 3, // Low power mode 10 Hz
ODR_LP_25 = 0b0011 << 4 | 0b1 << 3, // Low power mode 25 Hz
ODR_LP_50 = 0b0100 << 4 | 0b1 << 3, // Low power mode 50 Hz
ODR_LP_100 = 0b0101 << 4 | 0b1 << 3, // Low power mode 100 Hz
ODR_LP_200 = 0b0110 << 4 | 0b1 << 3, // Low power mode 200 Hz
ODR_LP_400 = 0b0111 << 4 | 0b1 << 3, // Low power mode 400 Hz
ODR_L0 = 0b1000 << 4 | 0b1 << 3, // Low power mode 1.60 kHz
ODR_HN = 0b1001 << 4, // Normal/HR power mode 1.344 kHz
ODR_L1 = 0b1001 << 4 // Low power mode 5.376 kHz
};
// BDU mode for update, given by position in register CTRL_REG4
enum BlockDataUpdate{
BDU_CONTINOUS_UPDATE = 0 << 7,
BDU_WAIT_UNTIL_READ = 1 << 7
};
// Registers position, given by the register mapping of the datasheet
enum Registers
{
REG_WHO_AM_I = 0x0F, // Who Am I register
REG_CTRL_REG0 = 0x1E, // The control registers used for
REG_CTRL_REG1 = 0x20,
REG_CTRL_REG2 = 0x21,
REG_CTRL_REG3 = 0x22,
REG_CTRL_REG4 = 0x23,
REG_CTRL_REG5 = 0x24,
REG_CTRL_REG6 = 0x25,
REG_STATUS_REG = 0x27,
REG_OUT_X_L = 0x28,
REG_OUT_X_H = 0x29,
REG_OUT_Y_L = 0x2A,
REG_OUT_Y_H = 0x2B,
REG_OUT_Z_L = 0x2C,
REG_OUT_Z_H = 0x2D
};
enum Statuses : uint8_t
{
// Register if Data Available
STATUS_REG_XDA = 0b0000'0001, // Data available on X-axis
STATUS_REG_YDA = 0b0000'0010, // Data available on Y-axis
STATUS_REG_ZDA = 0b0000'0100, // Data available on Z-axis
STATUS_REG_XYZDA = 0b0000'1000, // Data available on X-axis
// Registers for data overrnun (x overwrite)
STATUS_REG_XOR = 0b0001 << 4,
STATUS_REG_YOR = 0b0010 << 4,
STATUS_REG_ZOR = 0b0100 << 4,
STATUS_REG_XYZOR = 0b1000 << 4,
}
}
}
\ No newline at end of file
#include <miosix.h>
using namespace miosix;
int main(){
printf("Hello, my test ok");
return 0;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment