STM32F105 и CAN

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
safronov-63
Открыл глаза
Сообщения: 61
Зарегистрирован: Пн ноя 15, 2010 15:49:37
Откуда: Россия
Контактная информация:

STM32F105 и CAN

Сообщение safronov-63 »

Делаю адаптер USB-CAN. в режиме CAN_MODE_NORMAL не отправляются и не принимаются сообщения. но в режиме CAN_MODE_LOOPBACK все работает как и должно. Трансивер ISO1050 (работает, проверено). на ноге PB9 при отправке ничего не происходит. Уже неделю мучаюсь.

инициализация CAN
Спойлер

Код: Выделить всё

    can_filter.FilterIdHigh = 0;
    can_filter.FilterIdLow = 0;
    can_filter.FilterMaskIdHigh = 0;
    can_filter.FilterMaskIdLow = 0;
    can_filter.FilterMode = CAN_FILTERMODE_IDMASK;
    can_filter.FilterScale = CAN_FILTERSCALE_32BIT;
    can_filter.FilterNumber = 0;
    can_filter.FilterFIFOAssignment = CAN_FIFO0;
    can_filter.BankNumber = 0;
    can_filter.FilterActivation = ENABLE;

    can_handle.Instance = CAN1;
    can_handle.Init.Prescaler = 450;
    can_handle.Init.Mode = CAN_MODE_NORMAL;
    can_handle.Init.SJW = CAN_SJW_1TQ;
    can_handle.Init.BS1 = CAN_BS1_4TQ;
    can_handle.Init.BS2 = CAN_BS2_3TQ;
    can_handle.Init.TTCM = DISABLE;
    can_handle.Init.ABOM = ENABLE;
    can_handle.Init.AWUM = DISABLE;
    can_handle.Init.NART = DISABLE;
    can_handle.Init.RFLM = DISABLE;
    can_handle.Init.TXFP = DISABLE;

    HAL_CAN_Init(&can_handle);
    HAL_CAN_ConfigFilter(&can_handle, &can_filter);


Инициализация GPIO
Спойлер

Код: Выделить всё

    __HAL_RCC_CAN1_CLK_ENABLE();

    __HAL_RCC_AFIO_CLK_ENABLE();

   // ремап на PB8 и PB9
    __HAL_AFIO_REMAP_CAN1_2();

    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


    GPIO_InitStruct.Pin = GPIO_PIN_8;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32F105 и CAN

Сообщение Myp3ik »

Сколько устройств на шине ? Что говорят флаги ошибок ?
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
safronov-63
Открыл глаза
Сообщения: 61
Зарегистрирован: Пн ноя 15, 2010 15:49:37
Откуда: Россия
Контактная информация:

Re: STM32F105 и CAN

Сообщение safronov-63 »

устройств на шине всего 2. длина провода около 30-40см, резистор 120 Ом есть. регистр CAN1->ESR говорит что BUS_OFF.

upd: bit domitant error нашел в CAN1->ESR
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32F105 и CAN

Сообщение Myp3ik »

Это два одинаковых устройства, идентично настроенные ?
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
safronov-63
Открыл глаза
Сообщения: 61
Зарегистрирован: Пн ноя 15, 2010 15:49:37
Откуда: Россия
Контактная информация:

Re: STM32F105 и CAN

Сообщение safronov-63 »

не. разные.

вобщем первая проблема была из-за неподготовленности и из-за незнания много чего. ISO1050 не работает на скорости меньше чем 37kbps. ну и чтение мануалов натолкнуло на всякие мысли.

Myp3ik, спс за помощь. стоит у кого-нибудь спросить, как сам начинаешь лучше думать %(.
Ответить

Вернуться в «ARM»