diff options
Diffstat (limited to 'platforms/chibios/chibios_config.h')
| -rw-r--r-- | platforms/chibios/chibios_config.h | 50 | 
1 files changed, 49 insertions, 1 deletions
| diff --git a/platforms/chibios/chibios_config.h b/platforms/chibios/chibios_config.h index a7098f2713..8dcc23727f 100644 --- a/platforms/chibios/chibios_config.h +++ b/platforms/chibios/chibios_config.h @@ -19,6 +19,30 @@  #    define SPLIT_USB_DETECT // Force this on when dedicated pin is not used  #endif +#if defined(MCU_RP) +#    define CPU_CLOCK RP_CORE_CLK +// ChibiOS uses the RP2040 timer peripheral as its real time counter, this timer +// is monotonic and running at 1MHz. +#    define REALTIME_COUNTER_CLOCK 1000000 + +#    define USE_GPIOV1 +#    define PAL_OUTPUT_TYPE_OPENDRAIN _Static_assert(0, "RP2040 has no Open Drain GPIO configuration, setting this is not possible"); + +#    define usb_lld_endpoint_fields + +#    define I2C1_SCL_PAL_MODE (PAL_MODE_ALTERNATE_I2C | PAL_RP_PAD_SLEWFAST | PAL_RP_PAD_PUE | PAL_RP_PAD_DRIVE4) +#    define I2C1_SDA_PAL_MODE I2C1_SCL_PAL_MODE + +#    define USE_I2CV1_CONTRIB +#    if !defined(I2C1_CLOCK_SPEED) +#        define I2C1_CLOCK_SPEED 400000 +#    endif + +#    define SPI_SCK_PAL_MODE (PAL_MODE_ALTERNATE_SPI | PAL_RP_PAD_SLEWFAST | PAL_RP_PAD_DRIVE4) +#    define SPI_MOSI_PAL_MODE SPI_SCK_PAL_MODE +#    define SPI_MISO_PAL_MODE SPI_SCK_PAL_MODE +#endif +  // STM32 compatibility  #if defined(MCU_STM32)  #    define CPU_CLOCK STM32_SYSCLK @@ -60,6 +84,8 @@  #        define PAL_OUTPUT_TYPE_PUSHPULL PAL_WB32_OTYPE_PUSHPULL  #        define PAL_OUTPUT_SPEED_HIGHEST PAL_WB32_OSPEED_HIGH  #        define PAL_PUPDR_FLOATING PAL_WB32_PUPDR_FLOATING + +#        define SPI_SCK_FLAGS PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3  #    endif  #endif @@ -74,13 +100,18 @@  #if defined(MCU_KINETIS)  #    define CPU_CLOCK KINETIS_SYSCLK_FREQUENCY -#    if defined(K20x) || defined(KL2x) +#    if defined(K20x) || defined(K60x) || defined(KL2x)  #        define USE_I2CV1  #        define USE_I2CV1_CONTRIB // for some reason a bunch of ChibiOS-Contrib boards only have clock_speed  #        define USE_GPIOV1  #    endif  #endif +#if defined(MCU_MIMXRT1062) +#    include "clock_config.h" +#    define CPU_CLOCK BOARD_BOOTCLOCKRUN_CORE_CLOCK +#endif +  #if defined(HT32)  #    define CPU_CLOCK HT32_CK_SYS_FREQUENCY  #    define PAL_MODE_ALTERNATE PAL_HT32_MODE_AF @@ -88,3 +119,20 @@  #    define PAL_OUTPUT_TYPE_PUSHPULL PAL_HT32_MODE_DIR  #    define PAL_OUTPUT_SPEED_HIGHEST 0  #endif + +#if !defined(REALTIME_COUNTER_CLOCK) +#    define REALTIME_COUNTER_CLOCK CPU_CLOCK +#endif + +// SPI Fallbacks +#ifndef SPI_SCK_FLAGS +#    define SPI_SCK_FLAGS PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST +#endif + +#ifndef SPI_MOSI_FLAGS +#    define SPI_MOSI_FLAGS PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST +#endif + +#ifndef SPI_MISO_FLAGS +#    define SPI_MISO_FLAGS PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST +#endif | 
