Add basic hardware configuration options for P8
This enables the configuration of the LFCLK source, as well as the target hardware board pin configuration.
This commit is contained in:
parent
bab86633a0
commit
8b0559c481
|
@ -54,13 +54,8 @@ if(BUILD_DFU)
|
||||||
set(BUILD_DFU true)
|
set(BUILD_DFU true)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(WATCH_COLMI_P8 "Build for the Colmi P8" OFF)
|
set(TARGET_DEVICE "PINETIME" CACHE STRING "Target device")
|
||||||
set(TARGET_DEVICE "PineTime")
|
set_property(CACHE TARGET_DEVICE PROPERTY STRINGS PINETIME MOY-TFK5 MOY-TIN5 MOY-TON5 MOY-UNK)
|
||||||
|
|
||||||
if(WATCH_COLMI_P8)
|
|
||||||
set(TARGET_DEVICE "Colmi P8")
|
|
||||||
add_definitions(-DWATCH_P8)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PROJECT_GIT_COMMIT_HASH "")
|
set(PROJECT_GIT_COMMIT_HASH "")
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ CMake configures the project according to variables you specify the command line
|
||||||
**GDB_CLIENT_BIN_PATH**|Path to arm-none-eabi-gdb executable. Used only if `USE_GDB_CLIENT` is 1.|`-DGDB_CLIENT_BIN_PATH=/home/jf/nrf52/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-gdb`
|
**GDB_CLIENT_BIN_PATH**|Path to arm-none-eabi-gdb executable. Used only if `USE_GDB_CLIENT` is 1.|`-DGDB_CLIENT_BIN_PATH=/home/jf/nrf52/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-gdb`
|
||||||
**GDB_CLIENT_TARGET_REMOTE**|Target remote connection string. Used only if `USE_GDB_CLIENT` is 1.|`-DGDB_CLIENT_TARGET_REMOTE=/dev/ttyACM0`
|
**GDB_CLIENT_TARGET_REMOTE**|Target remote connection string. Used only if `USE_GDB_CLIENT` is 1.|`-DGDB_CLIENT_TARGET_REMOTE=/dev/ttyACM0`
|
||||||
**BUILD_DFU (\*\*)**|Build DFU files while building (needs [adafruit-nrfutil](https://github.com/adafruit/Adafruit_nRF52_nrfutil)).|`-DBUILD_DFU=1`
|
**BUILD_DFU (\*\*)**|Build DFU files while building (needs [adafruit-nrfutil](https://github.com/adafruit/Adafruit_nRF52_nrfutil)).|`-DBUILD_DFU=1`
|
||||||
**WATCH_COLMI_P8**|Use pin configuration for Colmi P8 watch|`-DWATCH_COLMI_P8=1`
|
**TARGET_DEVICE**|Target device, used for hardware configuration. Allowed: `PINETIME, MOY-TFK5, MOY-TIN5, MOY-TON5, MOY-UNK`|`-DTARGET_DEVICE=PINETIME` (Default)
|
||||||
|
|
||||||
####(**) Note about **CMAKE_BUILD_TYPE**:
|
####(**) Note about **CMAKE_BUILD_TYPE**:
|
||||||
By default, this variable is set to *Release*. It compiles the code with size and speed optimizations. We use this value for all the binaries we publish when we [release](https://github.com/InfiniTimeOrg/InfiniTime/releases) new versions of InfiniTime.
|
By default, this variable is set to *Release*. It compiles the code with size and speed optimizations. We use this value for all the binaries we publish when we [release](https://github.com/InfiniTimeOrg/InfiniTime/releases) new versions of InfiniTime.
|
||||||
|
|
|
@ -779,6 +779,35 @@ add_definitions(-DFREERTOS)
|
||||||
add_definitions(-D__STACK_SIZE=1024)
|
add_definitions(-D__STACK_SIZE=1024)
|
||||||
add_definitions(-D__HEAP_SIZE=4096)
|
add_definitions(-D__HEAP_SIZE=4096)
|
||||||
|
|
||||||
|
# Note: Only use this for debugging
|
||||||
|
# Derive the low frequency clock from the main clock (SYNT)
|
||||||
|
# add_definitions(-DCLOCK_CONFIG_LF_SRC=2)
|
||||||
|
|
||||||
|
# Target hardware configuration options
|
||||||
|
add_definitions(-DTARGET_DEVICE_${TARGET_DEVICE})
|
||||||
|
if(TARGET_DEVICE STREQUAL "PINETIME")
|
||||||
|
add_definitions(-DDRIVER_PINMAP_PINETIME)
|
||||||
|
add_definitions(-DCLOCK_CONFIG_LF_SRC=1) # XTAL
|
||||||
|
elseif(TARGET_DEVICE STREQUAL "MOY-TFK5") # P8a
|
||||||
|
add_definitions(-DDRIVER_PINMAP_P8)
|
||||||
|
add_definitions(-DCLOCK_CONFIG_LF_SRC=1) # XTAL
|
||||||
|
elseif(TARGET_DEVICE STREQUAL "MOY-TIN5") # P8a variant 2
|
||||||
|
add_definitions(-DDRIVER_PINMAP_P8)
|
||||||
|
add_definitions(-DCLOCK_CONFIG_LF_SRC=1) # XTAL
|
||||||
|
elseif(TARGET_DEVICE STREQUAL "MOY-TON5") # P8b
|
||||||
|
add_definitions(-DDRIVER_PINMAP_P8)
|
||||||
|
add_definitions(-DCLOCK_CONFIG_LF_SRC=0) # RC
|
||||||
|
add_definitions(-DMYNEWT_VAL_BLE_LL_SCA=500)
|
||||||
|
add_definitions(-DCLOCK_CONFIG_LF_CAL_ENABLED=1)
|
||||||
|
elseif(TARGET_DEVICE STREQUAL "MOY-UNK") # P8b mirrored
|
||||||
|
add_definitions(-DDRIVER_PINMAP_P8)
|
||||||
|
add_definitions(-DCLOCK_CONFIG_LF_SRC=0) # RC
|
||||||
|
add_definitions(-DMYNEWT_VAL_BLE_LL_SCA=500)
|
||||||
|
add_definitions(-DCLOCK_CONFIG_LF_CAL_ENABLED=1)
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Invalid TARGET_DEVICE")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Debug configuration
|
# Debug configuration
|
||||||
if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
||||||
add_definitions(-DDEBUG)
|
add_definitions(-DDEBUG)
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
namespace Pinetime {
|
namespace Pinetime {
|
||||||
namespace PinMap {
|
namespace PinMap {
|
||||||
|
|
||||||
#ifdef WATCH_P8
|
#if defined(DRIVER_PINMAP_P8)
|
||||||
// COLMI P8
|
// COLMI P8 and variants
|
||||||
static constexpr uint8_t Charging = 19;
|
static constexpr uint8_t Charging = 19;
|
||||||
static constexpr uint8_t Cst816sReset = 13;
|
static constexpr uint8_t Cst816sReset = 13;
|
||||||
static constexpr uint8_t Button = 17;
|
static constexpr uint8_t Button = 17;
|
||||||
|
|
14
src/main.cpp
14
src/main.cpp
|
@ -300,10 +300,24 @@ void nimble_port_ll_task_func(void* args) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void calibrate_lf_clock_rc(nrf_drv_clock_evt_type_t event) {
|
||||||
|
// 16 * 0.25s = 4s calibration cycle
|
||||||
|
// Not recursive, call is deferred via internal calibration timer
|
||||||
|
nrf_drv_clock_calibration_start(16, calibrate_lf_clock_rc);
|
||||||
|
}
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
logger.Init();
|
logger.Init();
|
||||||
|
|
||||||
nrf_drv_clock_init();
|
nrf_drv_clock_init();
|
||||||
|
nrf_drv_clock_lfclk_request(NULL);
|
||||||
|
|
||||||
|
// The RC source for the LF clock has to be calibrated
|
||||||
|
#if (CLOCK_CONFIG_LF_SRC == NRF_CLOCK_LFCLK_RC)
|
||||||
|
while (!nrf_clock_lf_is_running()) {
|
||||||
|
}
|
||||||
|
nrf_drv_clock_calibration_start(0, calibrate_lf_clock_rc);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Unblock i2c?
|
// Unblock i2c?
|
||||||
nrf_gpio_cfg(Pinetime::PinMap::TwiScl,
|
nrf_gpio_cfg(Pinetime::PinMap::TwiScl,
|
||||||
|
|
Loading…
Reference in a new issue