0hmX/dual-usb-peltier-assembly
A complete USB‑C PD Peltier controller assembly featuring an RP2040, adjustable TPS55289 buck‑boost TEC driver, 12 V fan supply, temperature-sensor inputs, USB programming, protection, status LEDs, and supporting passives/connectors.
- Version
- 0.4.7
- License
- unset
- Stars
- 0
firmware/CMakeLists.txt
cmake_minimum_required(VERSION 3.13)
if(NOT PICO_SDK_PATH)
set(PICO_SDK_PATH "$ENV{PICO_SDK_PATH}")
endif()
if(NOT EXISTS "${PICO_SDK_PATH}/external/pico_sdk_import.cmake")
message(FATAL_ERROR "Set PICO_SDK_PATH to the pinned official pico-sdk 2.2.0 checkout")
endif()
set(PICO_BOARD general_pd_rp2040)
set(PICO_BOARD_HEADER_DIRS "${CMAKE_CURRENT_LIST_DIR}/include")
include("${PICO_SDK_PATH}/external/pico_sdk_import.cmake")
project(general_pd C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
if(NOT PICO_SDK_VERSION_STRING STREQUAL "2.2.0")
message(FATAL_ERROR "This firmware is qualified for pico-sdk 2.2.0")
endif()
add_executable(general_pd src/main.c src/policy.c src/command.c src/profile.c src/session.c src/usb_descriptors.c src/temperature.c src/onewire.c)
target_include_directories(general_pd PRIVATE include)
target_link_libraries(general_pd pico_stdlib hardware_i2c hardware_adc hardware_watchdog hardware_flash tinyusb_device pico_unique_id)
target_compile_options(general_pd PRIVATE -Wall -Wextra -Werror)
pico_enable_stdio_usb(general_pd 0)
pico_enable_stdio_uart(general_pd 0)
# Preserve the exact SDK linker layout while reserving the final flash sector.
file(READ "${PICO_SDK_PATH}/src/rp2_common/pico_crt0/rp2040/memmap_default.ld" sdk_linker)
string(REPLACE "INCLUDE \"pico_flash_region.ld\"" "FLASH(rx) : ORIGIN = 0x10000000, LENGTH = 0x00FFF000" sdk_linker "${sdk_linker}")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/general_pd.ld" "${sdk_linker}")
pico_set_linker_script(general_pd "${CMAKE_CURRENT_BINARY_DIR}/general_pd.ld")
pico_add_extra_outputs(general_pd)