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.
199 lines
6.8 KiB
C
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 */
|