Files
RTOS/config/can_config.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

199 lines
6.8 KiB
C

/**
* @file can_config.h
* @brief CAN bus configuration for automotive applications
*/
#ifndef CAN_CONFIG_H
#define CAN_CONFIG_H
#include <stdint.h>
/* ============================================================================
* CAN Hardware Configuration
* ============================================================================ */
/* Number of CAN controllers */
#define CAN_CONTROLLER_COUNT 2
/* CAN controller base addresses */
#define CAN0_BASE_ADDRESS 0x40006400U
#define CAN1_BASE_ADDRESS 0x40006800U
/* CAN controller interrupts */
#define CAN0_IRQ_NUMBER 19
#define CAN1_IRQ_NUMBER 20
/* CAN controller priorities */
#define CAN0_IRQ_PRIORITY 5
#define CAN1_IRQ_PRIORITY 5
/* ============================================================================
* CAN Baudrate Configuration
* ============================================================================ */
/* CAN baudrates */
#define CAN_BAUDRATE_125K 125000
#define CAN_BAUDRATE_250K 250000
#define CAN_BAUDRATE_500K 500000
#define CAN_BAUDRATE_1M 1000000
/* CAN FD baudrates */
#define CAN_FD_BAUDRATE_2M 2000000
#define CAN_FD_BAUDRATE_5M 5000000
#define CAN_FD_BAUDRATE_8M 8000000
/* Default CAN baudrate */
#define CAN_DEFAULT_BAUDRATE CAN_BAUDRATE_500K
/* CAN FD data baudrate */
#define CAN_FD_DATA_BAUDRATE CAN_FD_BAUDRATE_2M
/* ============================================================================
* CAN Frame Configuration
* ============================================================================ */
/* Enable CAN FD */
#define CAN_FD_ENABLED 1
/* Maximum CAN frame length */
#define CAN_MAX_FRAME_LENGTH 64
/* Enable automatic retransmission */
#define CAN_AUTO_RETRANSMIT 1
/* Maximum retransmission attempts */
#define CAN_MAX_RETRANSMIT 3
/* ============================================================================
* CAN Message IDs
* ============================================================================ */
/* OBD-II IDs */
#define CAN_ID_OBD_REQUEST 0x7DF
#define CAN_ID_OBD_RESPONSE 0x7E8
#define CAN_ID_OBD_RESPONSE_2 0x7E9
/* Diagnostic IDs */
#define CAN_ID_DIAG_REQUEST 0x700
#define CAN_ID_DIAG_RESPONSE 0x708
/* Network management IDs */
#define CAN_ID_NM_BASE 0x400
#define CAN_ID_NM_END 0x4FF
/* ============================================================================
* Application Message IDs
* ============================================================================ */
/* Engine control messages */
#define CAN_ID_ENGINE_DATA 0x100
#define CAN_ID_ENGINE_CONTROL 0x101
#define CAN_ID_ENGINE_STATUS 0x102
#define CAN_ID_ENGINE_FAULT 0x103
/* Transmission messages */
#define CAN_ID_TRANSMISSION_DATA 0x110
#define CAN_ID_TRANSMISSION_CONTROL 0x111
#define CAN_ID_GEAR_POSITION 0x112
/* Brake control messages */
#define CAN_ID_BRAKE_DATA 0x120
#define CAN_ID_BRAKE_CONTROL 0x121
#define CAN_ID_ABS_DATA 0x122
#define CAN_ID_WHEEL_SPEED 0x123
/* Steering messages */
#define CAN_ID_STEERING_ANGLE 0x130
#define CAN_ID_STEERING_TORQUE 0x131
#define CAN_ID_STEERING_CONTROL 0x132
/* Body control messages */
#define CAN_ID_BODY_CONTROL 0x140
#define CAN_ID_DOOR_STATUS 0x141
#define CAN_ID_LIGHT_STATUS 0x142
#define CAN_ID_WINDOW_CONTROL 0x143
/* Dashboard messages */
#define CAN_ID_SPEED 0x150
#define CAN_ID_RPM 0x151
#define CAN_ID_FUEL_LEVEL 0x152
#define CAN_ID_TEMPERATURE 0x153
/* Safety messages */
#define CAN_ID_AIRBAG_STATUS 0x160
#define CAN_ID_SEATBELT_STATUS 0x161
#define CAN_ID_CRASH_DETECTION 0x162
/* ============================================================================
* CAN Filter Configuration
* ============================================================================ */
typedef struct {
uint32_t filter_id;
uint32_t filter_mask;
bool is_extended;
uint8_t controller;
uint8_t fifo;
} CanFilterConfig_t;
/* Default CAN filters */
static const CanFilterConfig_t can_filters[] = {
/* Engine messages */
{.filter_id = 0x100, .filter_mask = 0x1F0, .is_extended = false, .controller = 0, .fifo = 0},
/* Transmission messages */
{.filter_id = 0x110, .filter_mask = 0x1F0, .is_extended = false, .controller = 0, .fifo = 0},
/* Brake messages */
{.filter_id = 0x120, .filter_mask = 0x1F0, .is_extended = false, .controller = 0, .fifo = 0},
/* Steering messages */
{.filter_id = 0x130, .filter_mask = 0x1F0, .is_extended = false, .controller = 0, .fifo = 0},
/* Body control messages */
{.filter_id = 0x140, .filter_mask = 0x1F0, .is_extended = false, .controller = 0, .fifo = 1},
/* Dashboard messages */
{.filter_id = 0x150, .filter_mask = 0x1F0, .is_extended = false, .controller = 0, .fifo = 1},
/* Safety messages */
{.filter_id = 0x160, .filter_mask = 0x1F0, .is_extended = false, .controller = 0, .fifo = 0},
/* OBD-II messages */
{.filter_id = 0x7DF, .filter_mask = 0x7FF, .is_extended = false, .controller = 1, .fifo = 0},
/* Diagnostic messages */
{.filter_id = 0x700, .filter_mask = 0x7F0, .is_extended = false, .controller = 1, .fifo = 1},
/* Network management */
{.filter_id = 0x400, .filter_mask = 0x700, .is_extended = false, .controller = 0, .fifo = 1}
};
#define CAN_FILTER_COUNT (sizeof(can_filters) / sizeof(CanFilterConfig_t))
/* ============================================================================
* CAN TP Configuration
* ============================================================================ */
/* CAN TP timeouts */
#define CAN_TP_N_AS_TIMEOUT 1000 /* ms */
#define CAN_TP_N_BS_TIMEOUT 1000 /* ms */
#define CAN_TP_N_CR_TIMEOUT 1000 /* ms */
/* CAN TP parameters */
#define CAN_TP_STMIN_DEFAULT 10 /* ms */
#define CAN_TP_BS_DEFAULT 8 /* frames */
#define CAN_TP_MAX_PAYLOAD 4096 /* bytes */
/* ============================================================================
* CAN NM Configuration
* ============================================================================ */
/* CAN NM parameters */
#define CAN_NM_TIMEOUT 2000 /* ms */
#define CAN_NM_REPEAT_TIME 500 /* ms */
#define CAN_NM_WAIT_BUS_SLEEP 2000 /* ms */
/* ============================================================================
* CAN Statistics
* ============================================================================ */
/* Enable CAN statistics collection */
#define CAN_STATS_ENABLED 1
/* Statistics buffer size */
#define CAN_STATS_BUFFER_SIZE 100
#endif /* CAN_CONFIG_H */