Files
RTOS/board/nxp_s32k144_evb/board.h
T
root ca13734bf0 Add full automotive RTOS project
Add kernel (Cortex-M0/M3/M4, Tricore, S32K, RISC-V ports), drivers,
middleware (CAN stack, diagnostics, safety), applications, board
support, build/test tooling, and documentation.
2026-08-23 03:35:29 -04:00

204 lines
7.3 KiB
C

/**
* @file board.h
* @brief NXP S32K144 EVB board definitions
*/
#ifndef BOARD_H
#define BOARD_H
#include <stdint.h>
#include <stdbool.h>
#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 */