Здравствуйте, никак не могу запустить CAN на STM32. Моя инициализация:
static void MX_CAN1_Init(void) { hcan1.Instance = CAN1; hcan1.Init.Prescaler = 2; hcan1.Init.Mode = CAN_MODE_NORMAL; hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan1.Init.TimeSeg1 = CAN_BS1_2TQ; hcan1.Init.TimeSeg2 = CAN_BS2_1TQ; hcan1.Init.TimeTriggeredMode = DISABLE; hcan1.Init.AutoBusOff = DISABLE; hcan1.Init.AutoWakeUp = DISABLE; hcan1.Init.AutoRetransmission = DISABLE; hcan1.Init.ReceiveFifoLocked = DISABLE; hcan1.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan1) != HAL_OK) { Error_Handler(); } }
А какие симптомы?
@tech Вообще ничего нет на линии Tx, просто постоянно высокий уровень.
А трансивер присутствует в шине, второе устройство? Какая вообще конфигурация физическая?
А выводы инициализируются?
В этом коде инициализация отсутствует.
@eduard да, есть, Куб сгенерировал, вроде все нормально там.
@tech STM32 отправляет данные на TJA1042, с другой стороны тоже TJA1042 и второе устройство. Если я вместо связки STM32 + TJA1042 передаю данные через USB-CAN адаптер (Systec), то второе устройство отвечает нормально. То есть я так понимаю что проблема именно в части STM-ки.
Попробуй изменить:
hcan1.Init.AutoWakeUp = DISABLE;
на
hcan1.Init.AutoWakeUp = ENABLE;
@aveal Чудо! Все заработало) ВСЕМ СПАСИБО, буду копаться дальше)