canfd-transmit.ino
Configura el controlador FDCAN2 para enviar tramas periódicas a través del transceptor integrado.
Usa FDCAN2 conectado al TCAN3403-Q1 con terminación de 120Ω. Asegúrese de que los pines TX/RX de FDCAN2 estén correctamente mapeados en CubeMX. Se usa el modo Clásico aquí por compatibilidad, pero el modo FD es compatible con el hardware.
canfd-transmit.ino
#include "stm32c5xx_hal.h"
FDCAN_HandleTypeDef hfdcan2;
FDCAN_FilterTypeDef sFilterConfig;
FDCAN_TxHeaderTypeDef TxHeader;
uint8_t TxData[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
int main(void) {
HAL_Init();
// Init FDCAN2 (connecté au TCAN3403)
hfdcan2.Instance = FDCAN2;
hfdcan2.Init.ClockDivider = FDCAN_CLOCK_DIV1;
hfdcan2.Init.FrameFormat = FDCAN_FRAME_CLASSIC; // Ou FDCAN_FRAME_FD_BRS pour FD
hfdcan2.Init.Mode = FDCAN_MODE_NORMAL;
// ... configuration timing ...
HAL_FDCAN_Init(&hfdcan2);
HAL_FDCAN_Start(&hfdcan2);
TxHeader.Identifier = 0x123;
TxHeader.IdType = FDCAN_STANDARD_ID;
TxHeader.TxFrameType = FDCAN_DATA_FRAME;
TxHeader.DataLength = 8;
TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
TxHeader.BitRateSwitch = FDCAN_BRS_OFF;
TxHeader.FDFormat = FDCAN_CLASSIC_CAN;
TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
TxHeader.MessageMarker = 0;
while(1) {
HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan2, &TxHeader, TxData);
HAL_Delay(1000);
}
}