Уведомления
Очистить все
Здравствуйте, никак не могу запустить 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();
}
}
Создатель темы Размещено : 07.10.2022 14:05
А какие симптомы?
Размещено : 07.10.2022 17:29
@tech Вообще ничего нет на линии Tx, просто постоянно высокий уровень.
Создатель темы Размещено : 07.10.2022 17:52
Размещено : 07.10.2022 18:46
А выводы инициализируются?
В этом коде инициализация отсутствует.
Размещено : 07.10.2022 19:06
@eduard да, есть, Куб сгенерировал, вроде все нормально там.
Создатель темы Размещено : 07.10.2022 19:27
@tech STM32 отправляет данные на TJA1042, с другой стороны тоже TJA1042 и второе устройство. Если я вместо связки STM32 + TJA1042 передаю данные через USB-CAN адаптер (Systec), то второе устройство отвечает нормально. То есть я так понимаю что проблема именно в части STM-ки.
Создатель темы Размещено : 07.10.2022 19:28
Попробуй изменить:
hcan1.Init.AutoWakeUp = DISABLE;
на
hcan1.Init.AutoWakeUp = ENABLE;
Размещено : 08.10.2022 11:35
@aveal Чудо! Все заработало) ВСЕМ СПАСИБО, буду копаться дальше)
Создатель темы Размещено : 09.10.2022 12:27
