Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
},

"runArgs": [
"--device=/dev/ttyACM0",
"--privileged"
],

Expand Down Expand Up @@ -35,4 +36,4 @@
"IDF_PATH": "/opt/esp/idf",
"PATH": "/opt/esp/idf/tools:${env:PATH}"
}
}
}
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@ sdkconfig.old
solaris-v1/sdkconfig
settings.json
/solaris-v1/sdkconfig
.espidf/
.espidf/
*.cache*
launch.json
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
"program": "${workspaceFolder}/solaris-v1/build/solaris-v1.elf",
"cwd": "${workspaceFolder}/solaris-v1",
"MIMode": "gdb",
"miDebuggerPath": "/opt/esp/tools/xtensa-esp-elf-gdb/16.2_20250324/xtensa-esp-elf-gdb/bin/xtensa-esp32s3-elf-gdb",
"miDebuggerServerAddress": "192.168.20.236:3333",
"miDebuggerPath": "/home/user/.espressif/tools/xtensa-esp-elf-gdb/16.3_20250913/xtensa-esp-elf-gdb/bin/xtensa-esp32s3-elf-gdb",
"miDebuggerServerAddress": "192.168.20.236:3334",
"externalConsole": false,
"stopAtEntry": true,
"preLaunchTask": "gdb-prepare",
Expand Down
36 changes: 28 additions & 8 deletions solaris-v1/components/pressure_sensor_driver/bmp390.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "core/returntypes.h"
#include "spi.h"
#include "task.h"
#include "spp_log.h"

static const char* TAG = "BMP390";
spp_uint8_t id, ifc;
Expand Down Expand Up @@ -81,7 +82,7 @@ retval_t bmp390_soft_reset(void *p_spi)
};

retval_t ret = SPP_HAL_SPI_Transmit(p_spi, buf, (spp_uint8_t)sizeof(buf));
//vTaskDelay(pdMS_TO_TICKS(100));
SPP_OSAL_TaskDelay(pdMS_TO_TICKS(100));

return ret;
}
Expand All @@ -101,7 +102,7 @@ retval_t bmp390_enable_spi_mode(void *p_spi)
};

retval_t ret = SPP_HAL_SPI_Transmit(p_spi, buf, (spp_uint8_t)sizeof(buf));
//vTaskDelay(pdMS_TO_TICKS(100));
SPP_OSAL_TaskDelay(pdMS_TO_TICKS(100));

return ret;
}
Expand All @@ -114,13 +115,29 @@ retval_t bmp390_enable_spi_mode(void *p_spi)
*/
retval_t bmp390_config_check(void *p_spi)
{
spp_uint8_t buf[4] =
spp_uint8_t buf[9] =
{
(spp_uint8_t)(READ_OP | BMP390_IF_CONF_REG), EMPTY_MESSAGE,
(spp_uint8_t)(READ_OP | BMP390_SOFT_RESET_REG), EMPTY_MESSAGE
(spp_uint8_t)(READ_OP | BMP390_IF_CONF_REG), EMPTY_MESSAGE, EMPTY_MESSAGE,
(spp_uint8_t)(READ_OP | BMP390_SOFT_RESET_REG), EMPTY_MESSAGE, EMPTY_MESSAGE,
(spp_uint8_t)(READ_OP | BMP390_CHIP_ID_REG), EMPTY_MESSAGE, EMPTY_MESSAGE
};

retval_t ret;
ret = SPP_HAL_SPI_Transmit(p_spi, buf, (spp_uint8_t)sizeof(buf));

if (ret != SPP_OK) {
return ret;
}

SPP_LOGI(TAG, "ID: 0x%02X", buf[8]);


return SPP_HAL_SPI_Transmit(p_spi, buf, (spp_uint8_t)sizeof(buf));
if (buf[8] != 0x60) {
SPP_LOGE(TAG, "BMP390 not detected! Expected ID: 0x%02X, Read ID: 0x%02X", 0x60, buf[5]);
return SPP_ERROR;
}

return ret;
}

/**
Expand All @@ -137,9 +154,12 @@ retval_t bmp390_aux_config(void *p_spi)
if (ret != SPP_OK) return ret;

ret = bmp390_enable_spi_mode(p_spi);
if (ret != SPP_OK) return ret;
if (ret != SPP_OK) return ret;

return bmp390_config_check(p_spi);
ret = bmp390_config_check(p_spi);
if (ret != SPP_OK) return ret;

return ret;
}

//--------------------PREPARE READ---------------------------
Expand Down
2 changes: 1 addition & 1 deletion solaris-v1/components/spp_port_wrapper/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,5 @@ list(REMOVE_DUPLICATES SPP_EXT_INCLUDE_DIRS)
idf_component_register(
SRCS ${SPP_EXT_SOURCES}
INCLUDE_DIRS ${SPP_EXT_INCLUDE_DIRS}
REQUIRES spp_wrapper esp_driver_spi esp_driver_gpio esp_driver_sdspi fatfs fatfs
REQUIRES spp_wrapper esp_driver_spi esp_driver_gpio esp_driver_sdspi fatfs fatfs freertos
)
5 changes: 4 additions & 1 deletion solaris-v1/components/spp_wrapper/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,10 @@ endif()
# ---------------------------------------------------------

# Solo .c directamente en external/spp (sin recursión)
file(GLOB SPP_EXT_SOURCES "${SPP_ROOT}/*.c")
file(GLOB_RECURSE SPP_EXT_SOURCES
"${SPP_ROOT}/*.c"
)


# No cogemos ni external/spp/hal/*.c
# ni external/spp/osal/*.c
Expand Down
2 changes: 1 addition & 1 deletion solaris-v1/external/spp-ports
97 changes: 42 additions & 55 deletions solaris-v1/main/main.c
Original file line number Diff line number Diff line change
@@ -1,73 +1,60 @@
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

#include "core/returntypes.h"
#include "storage.h"
#include "spi.h"
#include "bmp390.h"

#include "gpio_int.h"
#include "driver/gpio.h"
#include "macros_esp.h"
#include "spp_log.h"
#include "osal/task.h"

static bmp_data_t s_bmp;
#include <stdio.h>
#include <string.h>

static void bmp_init_task(void *arg)
{
BmpInit(arg);
}
#define TAG "MAIN"

void app_main(void)
{
SPP_OSAL_TaskDelay(2000);
retval_t ret;

// Step 1: Initialize SPI Bus
// 1) SPI Bus Init
ret = SPP_HAL_SPI_BusInit();
if (ret != SPP_OK) while (1) {}

// Step 2: Initialize ICM SPI Device
void *p_spi_icm = SPP_HAL_SPI_GetHandler();
ret = SPP_HAL_SPI_DeviceInit(p_spi_icm);
if (ret != SPP_OK) while (1) {}

// Step 3: Initialize BMP SPI Device
void *p_spi_bmp = SPP_HAL_SPI_GetHandler();
ret = SPP_HAL_SPI_DeviceInit(p_spi_bmp);
if (ret != SPP_OK) while (1) {}

// Step 4: Assign SPI Handler to BMP Structure
s_bmp.p_handler_spi = p_spi_bmp;

// Step 5: Configure BMP390 Auxiliary Settings
ret = bmp390_aux_config(p_spi_bmp);
if (ret != SPP_OK) while (1) {}

// Step 6: Prepare BMP390 Measurement
ret = bmp390_prepare_measure(p_spi_bmp);
if (ret != SPP_OK) while (1) {}
if (ret != SPP_OK) {
SPP_LOGE(TAG, "SPI Bus Init failed");
}

// Step 7: Configure Control Register
{
spp_uint8_t buf[2] = { (spp_uint8_t)0x19u, (spp_uint8_t)(1u << 6) };
ret = SPP_HAL_SPI_Transmit(p_spi_bmp, buf, (spp_uint8_t)sizeof(buf));
if (ret != SPP_OK) while (1) {}
// 2) Config
static SPP_Storage_InitCfg sd_cfg = {
.base_path = "/sdcard",
.spi_host_id = USED_HOST,
.pin_cs = CS_PIN_SDC,
.max_files = 5,
.allocation_unit_size = 16 * 1024,
.format_if_mount_failed = false
};

// 3) Mount
ret = SPP_HAL_Storage_Mount((void*)&sd_cfg);
if (ret != SPP_OK) {
SPP_LOGE(TAG, "Storage Mount failed");
}

// Step 8: Configure Interrupt Pin Settings
s_bmp.int_pin = (spp_uint32_t)INT_GPIO;
s_bmp.int_intr_type = (spp_uint32_t)GPIO_INTR_POSEDGE;
s_bmp.int_pull = 0;
// 4) Write Test
FILE* f = fopen("/sdcard/test.txt", "w");
if (f == NULL) {
(void)SPP_HAL_Storage_Unmount((void*)&sd_cfg);
SPP_LOGE(TAG, "Failed to open file for writing");
}

// Step 9: Create BMP Initialization Task
xTaskCreate(bmp_init_task, "bmp_init", BMP_INIT_TASK_STACK_SIZE, &s_bmp, BMP_INIT_PRIO, NULL);
const char* msg = "hola sd\n";
size_t wr = fwrite(msg, 1, strlen(msg), f);
fclose(f);

vTaskDelay(pdMS_TO_TICKS(100));
if (wr != strlen(msg)) {
(void)SPP_HAL_Storage_Unmount((void*)&sd_cfg);
SPP_LOGE(TAG, "Failed to write to file");
}

// Step 10: Read Altitude Measurement
float altitude = 0.0f;
ret = bmp390_get_altitude(p_spi_bmp, &s_bmp, &altitude);
// 5) Unmount
ret = SPP_HAL_Storage_Unmount((void*)&sd_cfg);
if (ret != SPP_OK) {
while (1) {}
SPP_LOGE(TAG, "Storage Unmount failed");
}

vTaskDelay(pdMS_TO_TICKS(50));

}
26 changes: 4 additions & 22 deletions solaris-v1/sdkconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1248,6 +1248,7 @@ CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0
CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE=y
CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y
CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y

Expand All @@ -1262,7 +1263,6 @@ CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584
CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set
# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
Expand All @@ -1280,13 +1280,11 @@ CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
CONFIG_ESP_INT_WDT=y
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
CONFIG_ESP_INT_WDT_CHECK_CPU1=y
CONFIG_ESP_TASK_WDT_EN=y
CONFIG_ESP_TASK_WDT_INIT=y
# CONFIG_ESP_TASK_WDT_PANIC is not set
CONFIG_ESP_TASK_WDT_TIMEOUT_S=5
CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set
CONFIG_ESP_DEBUG_OCDAWARE=y
Expand All @@ -1298,8 +1296,6 @@ CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y
# IPC (Inter-Processor Call)
#
CONFIG_ESP_IPC_TASK_STACK_SIZE=1280
CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y
CONFIG_ESP_IPC_ISR_ENABLE=y
# end of IPC (Inter-Processor Call)

#
Expand Down Expand Up @@ -1339,8 +1335,6 @@ CONFIG_ESP_WIFI_TX_BA_WIN=6
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP_WIFI_RX_BA_WIN=6
CONFIG_ESP_WIFI_NVS_ENABLED=y
CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y
# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set
CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752
CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32
CONFIG_ESP_WIFI_IRAM_OPT=y
Expand Down Expand Up @@ -1455,8 +1449,9 @@ CONFIG_FATFS_DONT_TRUST_LAST_ALLOC=0
# Kernel
#
# CONFIG_FREERTOS_SMP is not set
# CONFIG_FREERTOS_UNICORE is not set
CONFIG_FREERTOS_UNICORE=y
CONFIG_FREERTOS_HZ=100
CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y
# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set
# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set
CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y
Expand All @@ -1469,7 +1464,6 @@ CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
CONFIG_FREERTOS_USE_TIMERS=y
CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc"
# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set
# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set
CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y
CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF
CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
Expand Down Expand Up @@ -1513,7 +1507,7 @@ CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
CONFIG_FREERTOS_DEBUG_OCDAWARE=y
CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y
CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
CONFIG_FREERTOS_NUMBER_OF_CORES=2
CONFIG_FREERTOS_NUMBER_OF_CORES=1
CONFIG_FREERTOS_IN_IRAM=y
# end of FreeRTOS

Expand Down Expand Up @@ -1707,7 +1701,6 @@ CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y
CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
Expand Down Expand Up @@ -1993,9 +1986,6 @@ CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y
CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5
CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
CONFIG_PTHREAD_STACK_MIN=768
CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y
# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set
# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set
CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1
CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread"
# end of PThreads
Expand Down Expand Up @@ -2320,13 +2310,11 @@ CONFIG_CONSOLE_UART_NUM=0
CONFIG_CONSOLE_UART_BAUDRATE=115200
CONFIG_INT_WDT=y
CONFIG_INT_WDT_TIMEOUT_MS=300
CONFIG_INT_WDT_CHECK_CPU1=y
CONFIG_TASK_WDT=y
CONFIG_ESP_TASK_WDT=y
# CONFIG_TASK_WDT_PANIC is not set
CONFIG_TASK_WDT_TIMEOUT_S=5
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set
CONFIG_ESP32S3_DEBUG_OCDAWARE=y
CONFIG_IPC_TASK_STACK_SIZE=1280
Expand All @@ -2344,8 +2332,6 @@ CONFIG_ESP32_WIFI_TX_BA_WIN=6
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP32_WIFI_RX_BA_WIN=6
CONFIG_ESP32_WIFI_NVS_ENABLED=y
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set
CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752
CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
CONFIG_ESP32_WIFI_IRAM_OPT=y
Expand Down Expand Up @@ -2391,7 +2377,6 @@ CONFIG_UDP_RECVMBOX_SIZE=6
CONFIG_TCPIP_TASK_STACK_SIZE=3072
CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set
# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF
# CONFIG_PPP_SUPPORT is not set
CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y
Expand All @@ -2414,9 +2399,6 @@ CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1=y
CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
CONFIG_ESP32_PTHREAD_STACK_MIN=768
CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set
# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set
CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
Expand Down
Loading