Перейти к содержанию
    

. . . две stm32f1 нормально общаются. Стоит подключить f4 с такими же настройками, как она вылетает в ошибки. . . .
Зря игнорируете рекомендацию посмотреть что на линиях осцилографом. Какие трансиверы используются, схема-номиналы выходных цепей.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если есть возможность, хорошо бы посмотреть осциллографом линию. может что-то не так с драйвером/уровнями? заодно и грубые ошибки времянки видны будут.

 

или соединить два CAN-а в F4 между собой...

 

не уверен на 100% но Form Error может быть из-за того, что старт бит не передается - то есть на входе CAN_RX всегда 1

 

Все время получаю такой сигнал. Настройки stm32f4 изменены. Сейчас все stm-мы настроены на 250 kbit/s

post-91250-1528535742_thumb.jpg

post-91250-1528543586_thumb.jpg

Изменено пользователем Ekka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сигнал на ногц RX у stm32f4 приходит такой, как на рисунке. Но в прерывание я теперь не попадаю ни в какое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и что толку с этих картиночек? Вы их самостоятельно-то рассматривать пытались?

На F105 частота APB1 36 МГц, на F407 - 20 МГц. Настройки модуля CAN по-прежнему одинаковые? Ну тогда скорость у них отличается в 1.8 раза.

 

И под "посмотреть осциллографом" подразумевалось не "запостить картинку", а "измерить скорость шины". Методом измерения длительности одного бита и вычисления количества бит в одной секунде.

 

Ничего, что я здесь азбучные истины излагаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все запустилось, проблема была в том, что вывод RS на плате болтался... После его настройки все заработало.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мда... в кейле-то оно на хале шпарит без проблем, но вот хэта жуткая libopencm3...

 

В ней у меня так (для STM32f4)

APB1_FREQ = 42 mHz
Prescaler (for TQ) = 24
42/24 = 1.75
1/1.75 * 1000 = 571.4 ns (Time Quantum)

Для скорости 250 kbit/s:
1/250*1000 = 4000 ns (time for One Bit)

571.4 * (1 + BS1 + BS2) = 4000
BS1+BS2 = 6 (пусть BS1 = 1, BS2 = 5)

Итого настройки CAN1 для скорости 250 Кбит/сек:
PRESC = 24
SJW = 1
BS1 = 1
BS2 = 5

 

Для STM32f1 (их трое, все нормально общаются)

 

APB1_FREQ = 36 mHz
Prescaler (for TQ) = 12
36/12 = 3
1/3 * 1000 = 333.3 ns (Time Quantum)

Для скорости 250 kbit/s:
1/250*1000 = 4000 ns (time for One Bit)

333.3 * (1 + BS1 + BS2) = 4000
BS1+BS2 = 11 (пусть BS1 = 6, BS2 = 5)

Итого настройки CAN1 для скорости 250 Кбит/сек:

PRESC = 12
SJW = 1
BS1 = 6
BS2 = 5

Но на libopencm3 у меня просто виснет кан и ложит все остальные устройства (кроме передающего)...(((

Изменено пользователем Ekka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ложит и ложит, хад такой...

 

 

Очередной бесценный советик. Постарайтесь понять, что это железка. Тупая и абсолютно бесчувственная. И всё эти эпитеты ей совершенно безразличны.

Что виснет? Как виснет? Что в шину передаётся? (осциллографом пора-таки воспользоваться). Что как где настроено?

Пишем подробное письмо, трижды перечитываем, пытаясь понять, что же именно написано (не простое ctrl-c ctrl-v "хотят - ну нате вам"). Можно даже не отправлять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все запустилось, проблема была в том, что вывод RS на плате болтался... После его настройки все заработало.
А что сделали что "не болтается" ? какой номинал R и куда ? Повторяю вопрос, терминаторы, 120 Ом, два, не шине имеются ?

----

если работать по Вашей методе, сделайте "фото" настраиваемых регистров в работающем (HAL) и неработающем проектах (после инициализации), найдите разницу.

В IAR можно вывести несколько окон регистров и сделать скриншот. В другом проекте это можно не делать а сравнить с экрана.

---

Если собираетесь работать с CAN, попробуйте раздобыть адапетер CAN_HACKER. Удобно мониторить-снифф шины, легко перенастраивается, отображает ошибки.

Девайс и софт во многом удобнее даже фирменных утилит (по крайней мере от Kvaser).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже, была ошибка в том, что скорость у приемника и передатчика не совпадала.

 

APB1_FREQ = 42 mHz
Prescaler (for TQ) = 24
42/24 = 1.75
1/1.75 * 1000 = 571.4 ns (Time Quantum)

Для скорости 250 kbit/s:
1/250*1000 = 4000 ns (time for One Bit)

571.4 * (1 + BS1 + BS2) = 4000
BS1+BS2 = 6 (пусть BS1 = 2, BS2 = 4)

Итого настройки CAN1 для скорости 250 Кбит/сек:
PRESC = 24
SJW = 1
BS1 = 2
BS2 = 4

 

Как ни странно, вот с этими настройками все запустилось на libopencm3.

 

СПАСИБО ОГРОМНОЕ ВСЕМ, кто ОТЗЫВАЛСЯ!!))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не полагайтесь на всякие "железобетонные" расчеты. Если есть возможность проверить - всегда проверяйте соответствие заданного и полученного в реале.

ps

К Rs трансивера для скорости 250 Кбит подключайте резистор не более 1.5 - 5 кОм. (на GND)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/13/2018 at 10:33 PM, k155la3 said:

Rs трансивера для скорости 250 Кбит подключайте резистор не более 1.5 - 5 кОм. (на GND)

Подтягиваю его к питанию, а если стендбай то к земле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...