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"]
|
[submodule "SDK"]
|
||||||
path = SDK
|
path = SDK
|
||||||
url = https://git.minori.work/Embedded_SDK/MCUXpresso_LPC54102.git
|
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)
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
|
||||||
project(lpc54102_hello)
|
project(wearable_functional_test)
|
||||||
|
|
||||||
enable_language(CXX)
|
enable_language(CXX)
|
||||||
enable_language(ASM)
|
enable_language(ASM)
|
||||||
|
@ -53,6 +53,7 @@ set(TARGET_SOURCES
|
||||||
"board/pin_mux.c"
|
"board/pin_mux.c"
|
||||||
"src/main.c"
|
"src/main.c"
|
||||||
"src/pah8001_impl.c"
|
"src/pah8001_impl.c"
|
||||||
|
"src/sensors_impl.c"
|
||||||
)
|
)
|
||||||
|
|
||||||
set(TARGET_C_DEFINES
|
set(TARGET_C_DEFINES
|
||||||
|
@ -79,6 +80,7 @@ set(TARGET_C_INCLUDES
|
||||||
set(TARGET_LIBS
|
set(TARGET_LIBS
|
||||||
"power_cm4_hardabi"
|
"power_cm4_hardabi"
|
||||||
"pah8001"
|
"pah8001"
|
||||||
|
"imsensors"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Shared library and linker script search paths
|
# 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)
|
add_subdirectory(lib/pixart_pah8001ei)
|
||||||
|
|
||||||
|
set(IMSENSORS_FLOAT_SUPPORT YES)
|
||||||
|
add_subdirectory(lib/sensors)
|
||||||
|
|
||||||
# Shared sources, includes and definitions
|
# Shared sources, includes and definitions
|
||||||
add_compile_definitions(${TARGET_C_DEFINES})
|
add_compile_definitions(${TARGET_C_DEFINES})
|
||||||
include_directories(${TARGET_C_INCLUDES})
|
include_directories(${TARGET_C_INCLUDES})
|
||||||
|
@ -121,17 +126,25 @@ link_libraries(${TARGET_LIBS})
|
||||||
add_executable("${CMAKE_PROJECT_NAME}_FLASH.elf" ${TARGET_SOURCES})
|
add_executable("${CMAKE_PROJECT_NAME}_FLASH.elf" ${TARGET_SOURCES})
|
||||||
target_link_options("${CMAKE_PROJECT_NAME}_FLASH.elf"
|
target_link_options("${CMAKE_PROJECT_NAME}_FLASH.elf"
|
||||||
PRIVATE "-T${TARGET_LDSCRIPT_FLASH}"
|
PRIVATE "-T${TARGET_LDSCRIPT_FLASH}"
|
||||||
|
PRIVATE "-Wl,--Map=${CMAKE_PROJECT_NAME}_FLASH.map"
|
||||||
)
|
)
|
||||||
add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_FLASH.hex"
|
add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_FLASH.hex"
|
||||||
COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_FLASH.elf" "${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"
|
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")
|
add_custom_target("${CMAKE_PROJECT_NAME}_FLASH_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.hex")
|
||||||
|
|
||||||
# Create ELF
|
# Create ELF
|
||||||
add_executable("${CMAKE_PROJECT_NAME}_RAM.elf" ${TARGET_SOURCES})
|
add_executable("${CMAKE_PROJECT_NAME}_RAM.elf" ${TARGET_SOURCES})
|
||||||
target_link_options("${CMAKE_PROJECT_NAME}_RAM.elf"
|
target_link_options("${CMAKE_PROJECT_NAME}_RAM.elf"
|
||||||
PRIVATE "-T${TARGET_LDSCRIPT_RAM}"
|
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"
|
add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_RAM.hex"
|
||||||
COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_RAM.elf" "${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 "peripherals.h"
|
||||||
#include "pin_mux.h"
|
#include "pin_mux.h"
|
||||||
|
|
||||||
|
/* Debug console */
|
||||||
#include "fsl_debug_console.h"
|
#include "fsl_debug_console.h"
|
||||||
|
|
||||||
|
/* PPG */
|
||||||
#include "pixart_pah8001ei.h"
|
#include "pixart_pah8001ei.h"
|
||||||
|
|
||||||
|
/* Sensors */
|
||||||
|
#include "imsensors/dht/dht_bme280.h"
|
||||||
|
|
||||||
pah_ret_t pah8001_impl_init(void *pdev);
|
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_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);
|
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 = {
|
pah_t s_pah = {
|
||||||
.ops = {
|
.ops =
|
||||||
.init = pah8001_impl_init,
|
{
|
||||||
.write = pah8001_impl_write,
|
.init = pah8001_impl_init,
|
||||||
.read = pah8001_impl_read,
|
.write = pah8001_impl_write,
|
||||||
},
|
.read = pah8001_impl_read,
|
||||||
|
},
|
||||||
.pdev = NULL,
|
.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) {
|
int main(void) {
|
||||||
BOARD_InitBootPins();
|
BOARD_InitBootPins();
|
||||||
BOARD_BootClockRUN();
|
BOARD_BootClockRUN();
|
||||||
|
@ -31,7 +59,19 @@ int main(void) {
|
||||||
|
|
||||||
pah8001_init(&s_pah);
|
pah8001_init(&s_pah);
|
||||||
|
|
||||||
for(;;) {
|
ims_bme280_init(&s_bme);
|
||||||
__WFI();
|
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