Added BME280/BMP280 sensor tests.
This commit is contained in:
parent
5d48dd82b7
commit
13985fff92
|
@ -0,0 +1,11 @@
|
|||
BasedOnStyle: Google
|
||||
IndentWidth: 4
|
||||
AlignConsecutiveMacros: Consecutive
|
||||
AlignConsecutiveDeclarations: true
|
||||
AlignConsecutiveAssignments: true
|
||||
BreakBeforeBraces: Custom
|
||||
BraceWrapping:
|
||||
AfterEnum: false
|
||||
AfterStruct: false
|
||||
SplitEmptyFunction: false
|
||||
ColumnLimit: 120
|
|
@ -0,0 +1,6 @@
|
|||
/board/*.bak
|
||||
/build
|
||||
/cmake-build-*
|
||||
/.vscode
|
||||
/*.jdebug*
|
||||
/*.jflash
|
|
@ -1,3 +1,6 @@
|
|||
[submodule "SDK"]
|
||||
path = SDK
|
||||
url = https://git.minori.work/Embedded_SDK/MCUXpresso_LPC54102.git
|
||||
[submodule "lib/sensors"]
|
||||
path = lib/sensors
|
||||
url = git@git.minori.work:Embedded_Projects/imsensors.git
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
project(lpc54102_hello)
|
||||
project(wearable_functional_test)
|
||||
|
||||
enable_language(CXX)
|
||||
enable_language(ASM)
|
||||
|
@ -53,6 +53,7 @@ set(TARGET_SOURCES
|
|||
"board/pin_mux.c"
|
||||
"src/main.c"
|
||||
"src/pah8001_impl.c"
|
||||
"src/sensors_impl.c"
|
||||
)
|
||||
|
||||
set(TARGET_C_DEFINES
|
||||
|
@ -79,6 +80,7 @@ set(TARGET_C_INCLUDES
|
|||
set(TARGET_LIBS
|
||||
"power_cm4_hardabi"
|
||||
"pah8001"
|
||||
"imsensors"
|
||||
)
|
||||
|
||||
# Shared library and linker script search paths
|
||||
|
@ -109,6 +111,9 @@ set(CMAKE_EXE_LINKER_FLAGS "-specs=nano.specs -specs=nosys.specs -Wl,--gc-sectio
|
|||
|
||||
add_subdirectory(lib/pixart_pah8001ei)
|
||||
|
||||
set(IMSENSORS_FLOAT_SUPPORT YES)
|
||||
add_subdirectory(lib/sensors)
|
||||
|
||||
# Shared sources, includes and definitions
|
||||
add_compile_definitions(${TARGET_C_DEFINES})
|
||||
include_directories(${TARGET_C_INCLUDES})
|
||||
|
@ -121,17 +126,25 @@ link_libraries(${TARGET_LIBS})
|
|||
add_executable("${CMAKE_PROJECT_NAME}_FLASH.elf" ${TARGET_SOURCES})
|
||||
target_link_options("${CMAKE_PROJECT_NAME}_FLASH.elf"
|
||||
PRIVATE "-T${TARGET_LDSCRIPT_FLASH}"
|
||||
PRIVATE "-Wl,--Map=${CMAKE_PROJECT_NAME}_FLASH.map"
|
||||
)
|
||||
add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_FLASH.hex"
|
||||
COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_FLASH.elf" "${CMAKE_PROJECT_NAME}_FLASH.hex"
|
||||
DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.elf"
|
||||
)
|
||||
set_property(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" APPEND
|
||||
PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_PROJECT_NAME}_FLASH.map"
|
||||
)
|
||||
add_custom_target("${CMAKE_PROJECT_NAME}_FLASH_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.hex")
|
||||
|
||||
# Create ELF
|
||||
add_executable("${CMAKE_PROJECT_NAME}_RAM.elf" ${TARGET_SOURCES})
|
||||
target_link_options("${CMAKE_PROJECT_NAME}_RAM.elf"
|
||||
PRIVATE "-T${TARGET_LDSCRIPT_RAM}"
|
||||
PRIVATE "-Wl,--Map=${CMAKE_PROJECT_NAME}_RAM.map"
|
||||
)
|
||||
set_property(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" APPEND
|
||||
PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_PROJECT_NAME}_RAM.map"
|
||||
)
|
||||
add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_RAM.hex"
|
||||
COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_RAM.elf" "${CMAKE_PROJECT_NAME}_RAM.hex"
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 6ee72440c713226cbcff2e9e148c8f61ea04b3e4
|
54
src/main.c
54
src/main.c
|
@ -3,23 +3,51 @@
|
|||
#include "peripherals.h"
|
||||
#include "pin_mux.h"
|
||||
|
||||
/* Debug console */
|
||||
#include "fsl_debug_console.h"
|
||||
|
||||
/* PPG */
|
||||
#include "pixart_pah8001ei.h"
|
||||
|
||||
/* Sensors */
|
||||
#include "imsensors/dht/dht_bme280.h"
|
||||
|
||||
pah_ret_t pah8001_impl_init(void *pdev);
|
||||
pah_ret_t pah8001_impl_write(void *pdev, uint8_t reg, uint8_t *value, uint16_t len);
|
||||
pah_ret_t pah8001_impl_read(void *pdev, uint8_t reg, uint8_t *value, uint16_t len);
|
||||
|
||||
ims_ret_t sensors_impl_i2c_xfer(void *pdev, uint16_t addr, ims_i2c_xfer_desc_t *xfer);
|
||||
ims_ret_t sensors_impl_delay(void *pdev, uint32_t msec);
|
||||
|
||||
pah_t s_pah = {
|
||||
.ops = {
|
||||
.init = pah8001_impl_init,
|
||||
.write = pah8001_impl_write,
|
||||
.read = pah8001_impl_read,
|
||||
},
|
||||
.ops =
|
||||
{
|
||||
.init = pah8001_impl_init,
|
||||
.write = pah8001_impl_write,
|
||||
.read = pah8001_impl_read,
|
||||
},
|
||||
.pdev = NULL,
|
||||
};
|
||||
|
||||
ims_bme280_t s_bme = {
|
||||
.user_data = NULL,
|
||||
.i2c_addr = 0x77,
|
||||
.cb =
|
||||
{
|
||||
.i2c_xfer = sensors_impl_i2c_xfer,
|
||||
.delay = sensors_impl_delay,
|
||||
},
|
||||
};
|
||||
|
||||
ims_bme280_t s_bmp = {
|
||||
.user_data = NULL,
|
||||
.i2c_addr = 0x76,
|
||||
.cb = {
|
||||
.i2c_xfer = sensors_impl_i2c_xfer,
|
||||
.delay = sensors_impl_delay,
|
||||
},
|
||||
};
|
||||
|
||||
int main(void) {
|
||||
BOARD_InitBootPins();
|
||||
BOARD_BootClockRUN();
|
||||
|
@ -31,7 +59,19 @@ int main(void) {
|
|||
|
||||
pah8001_init(&s_pah);
|
||||
|
||||
for(;;) {
|
||||
__WFI();
|
||||
ims_bme280_init(&s_bme);
|
||||
ims_bme280_init(&s_bmp);
|
||||
|
||||
ims_bme280_config_t dht_cfg;
|
||||
|
||||
ims_bme280_preset_config(&dht_cfg, IMS_BME280_PRESET_WEATHER);
|
||||
ims_bme280_apply_config(&s_bme, &dht_cfg);
|
||||
ims_bme280_apply_config(&s_bmp, &dht_cfg);
|
||||
ims_bme280_result_float_t r_bme_float;
|
||||
ims_bme280_result_float_t r_bmp_float;
|
||||
|
||||
for (;;) {
|
||||
ims_bme280_measure_float(&s_bme, &r_bme_float);
|
||||
ims_bme280_measure_float(&s_bmp, &r_bmp_float);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
#include "imsensors/sensors_common.h"
|
||||
|
||||
/* SDK drivers */
|
||||
#include "fsl_i2c.h"
|
||||
|
||||
ims_ret_t sensors_impl_i2c_xfer(void *pdev, uint16_t addr, ims_i2c_xfer_desc_t *xfer) {
|
||||
if (xfer->tx_size > 0) {
|
||||
if (I2C_MasterStart(I2C0, addr, kI2C_Write) != kStatus_Success) {
|
||||
return IMS_FAIL;
|
||||
}
|
||||
|
||||
if (I2C_MasterWriteBlocking(I2C0, xfer->tx_data, xfer->tx_size, kI2C_TransferNoStopFlag) != kStatus_Success) {
|
||||
return IMS_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
if (xfer->rx_size > 0) {
|
||||
if (xfer->tx_size > 0) {
|
||||
if (I2C_MasterRepeatedStart(I2C0, addr, kI2C_Read) != kStatus_Success) {
|
||||
return IMS_FAIL;
|
||||
}
|
||||
} else {
|
||||
if (I2C_MasterStart(I2C0, addr, kI2C_Read) != kStatus_Success) {
|
||||
return IMS_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
if (I2C_MasterReadBlocking(I2C0, xfer->rx_data, xfer->rx_size, kI2C_TransferNoStopFlag) != kStatus_Success) {
|
||||
return IMS_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
if (I2C_MasterStop(I2C0) != kStatus_Success) {
|
||||
return IMS_FAIL;
|
||||
}
|
||||
|
||||
return IMS_SUCCESS;
|
||||
}
|
||||
|
||||
ims_ret_t sensors_impl_delay(void *pdev, uint32_t msec) {
|
||||
SDK_DelayAtLeastUs(msec * 20);
|
||||
|
||||
return IMS_SUCCESS;
|
||||
}
|
Loading…
Reference in New Issue