/** * @file board.h * @brief NXP S32K144 EVB board definitions */ #ifndef BOARD_H #define BOARD_H #include #include #include "S32K144.h" /* ============================================================================ * Board Identification * ============================================================================ */ #define BOARD_NAME "S32K144EVB-Q100" #define BOARD_MANUFACTURER "NXP Semiconductors" #define BOARD_VERSION "1.0" #define BOARD_MCU "S32K144" /* ============================================================================ * Clock Configuration * ============================================================================ */ #define SOSC_FREQUENCY 8000000U /* System oscillator */ #define SPLL_FREQUENCY 160000000U /* System PLL */ #define FIRC_FREQUENCY 48000000U /* Fast IRC */ #define SIRC_FREQUENCY 8000000U /* Slow IRC */ #define SYSTEM_CLOCK 160000000U /* 160 MHz */ #define BUS_CLOCK 40000000U /* 40 MHz */ #define FLASH_CLOCK 20000000U /* 20 MHz */ /* PLL Configuration */ #define PLL_MULT 20 #define PLL_DIV 1 /* ============================================================================ * LED Definitions * ============================================================================ */ #define LED_COUNT 3 #define LED_RED_PORT PTC #define LED_RED_PIN 0 #define LED_RED_INDEX 0 #define LED_GREEN_PORT PTC #define LED_GREEN_PIN 1 #define LED_GREEN_INDEX 1 #define LED_BLUE_PORT PTC #define LED_BLUE_PIN 2 #define LED_BLUE_INDEX 2 /* LED Active Level */ #define LED_ACTIVE_LEVEL 0 /* Active low */ /* ============================================================================ * Button Definitions * ============================================================================ */ #define BUTTON_COUNT 2 #define BUTTON1_PORT PTC #define BUTTON1_PIN 3 #define BUTTON1_INDEX 0 #define BUTTON2_PORT PTC #define BUTTON2_PIN 4 #define BUTTON2_INDEX 1 /* Button Active Level */ #define BUTTON_ACTIVE_LEVEL 0 /* Active low */ /* ============================================================================ * UART Definitions * ============================================================================ */ #define UART0_INSTANCE 0 #define UART0_BAUDRATE 115200 #define UART0_TX_PORT PTA #define UART0_TX_PIN 2 #define UART0_TX_MUX 2 #define UART0_RX_PORT PTA #define UART0_RX_PIN 3 #define UART0_RX_MUX 2 #define UART1_INSTANCE 1 #define UART1_BAUDRATE 115200 #define UART1_TX_PORT PTC #define UART1_TX_PIN 7 #define UART1_TX_MUX 2 #define UART1_RX_PORT PTC #define UART1_RX_PIN 6 #define UART1_RX_MUX 2 /* ============================================================================ * CAN Definitions * ============================================================================ */ #define CAN0_INSTANCE 0 #define CAN0_BAUDRATE 500000 #define CAN0_TX_PORT PTE #define CAN0_TX_PIN 5 #define CAN0_TX_MUX 5 #define CAN0_RX_PORT PTE #define CAN0_RX_PIN 4 #define CAN0_RX_MUX 5 #define CAN1_INSTANCE 1 #define CAN1_BAUDRATE 500000 #define CAN1_TX_PORT PTC #define CAN1_TX_PIN 17 #define CAN1_TX_MUX 2 #define CAN1_RX_PORT PTC #define CAN1_RX_PIN 16 #define CAN1_RX_MUX 2 /* ============================================================================ * SPI Definitions * ============================================================================ */ #define SPI0_INSTANCE 0 #define SPI0_SCK_PORT PTA #define SPI0_SCK_PIN 6 #define SPI0_SCK_MUX 2 #define SPI0_MISO_PORT PTA #define SPI0_MISO_PIN 7 #define SPI0_MISO_MUX 2 #define SPI0_MOSI_PORT PTA #define SPI0_MOSI_PIN 8 #define SPI0_MOSI_MUX 2 /* ============================================================================ * I2C Definitions * ============================================================================ */ #define I2C0_INSTANCE 0 #define I2C0_SCL_PORT PTA #define I2C0_SCL_PIN 9 #define I2C0_SCL_MUX 3 #define I2C0_SDA_PORT PTA #define I2C0_SDA_PIN 10 #define I2C0_SDA_MUX 3 /* ============================================================================ * ADC Definitions * ============================================================================ */ #define ADC0_INSTANCE 0 #define ADC0_CHANNEL_COUNT 8 #define ADC0_CH0_PORT PTA #define ADC0_CH0_PIN 0 #define ADC0_CH0_MUX 0 #define ADC0_CH1_PORT PTA #define ADC0_CH1_PIN 1 #define ADC0_CH1_MUX 0 /* ============================================================================ * PWM Definitions * ============================================================================ */ #define PWM_INSTANCE 0 #define PWM_TIMER FTM0 #define PWM_TIMER_CHANNEL_COUNT 4 #define PWM_TIMER_FREQUENCY 10000 #define PWM_TIMER_PRESCALER 4 #define PWM_CH0_PORT PTC #define PWM_CH0_PIN 1 #define PWM_CH0_MUX 4 #define PWM_CH1_PORT PTC #define PWM_CH1_PIN 2 #define PWM_CH1_MUX 4 #define PWM_CH2_PORT PTC #define PWM_CH2_PIN 3 #define PWM_CH2_MUX 4 #define PWM_CH3_PORT PTC #define PWM_CH3_PIN 4 #define PWM_CH3_MUX 4 /* ============================================================================ * Watchdog Configuration * ============================================================================ */ #define WATCHDOG_TIMEOUT_MS 100 #define WATCHDOG_WINDOW_MS 50 /* ============================================================================ * Board Functions * ============================================================================ */ void board_init(void); void board_clock_init(void); void board_gpio_init(void); void board_uart_init(void); void board_can_init(void); void board_spi_init(void); void board_i2c_init(void); void board_adc_init(void); void board_pwm_init(void); void board_watchdog_init(void); void board_watchdog_service(void); void board_led_on(uint8_t led); void board_led_off(uint8_t led); void board_led_toggle(uint8_t led); bool board_button_read(uint8_t button); void board_delay_ms(uint32_t ms); void board_delay_us(uint32_t us); float board_get_temperature(void); float board_get_voltage(void); #endif /* BOARD_H */