ca13734bf0
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.
204 lines
7.3 KiB
C
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 */
|