Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
1

CAN - 2 устройства ОК, 3 устройства - Form Errorы

30.06.2016, 14:15. Просмотров 2771. Ответов 9
Метки нет (Все метки)

Кто сталкивался с ситуацией когда на шине множество Form Error (чуть реже попадаются Stuff Error, CRC Error) ? В чём была причина?

Есть 3 железки - (1) mostir, (2) slave, (3) slave.
slaveы шлют mostirу (у него CAN ID = 0x000) 10 соообщений/сек (что смехотворно для 1 Мбит/с), в каждом сообщении тупо "от кого" и счётчик.
mostir складывает это в массив ("от кого" - индекс, ну а счётчик - значение).

Когда подключаю (1) и (2) - всё ОК, когда (1) и (3) - всё OK тоже, причём пофиг на терминацию (она только на мастере - 120 Ом) и что "всё на соплях".

Когда подключаю (1) и (2) и (3) - тут же валятся Form Error, что приводит к переполнению TEC поля регистра ESR на slave (одном, реже на 2-х сразу) ну и железки уходят в Bus-off.
Терминация 120 Ом с другой стороны также эффекта не даёт.
Провода - использовал всё что смог - просто проводки, плоский шлейф от старого HDD, кусочки витой пары - безрезультатно.

Если подключить (1) и (2) - всё ОК, а затем на ходу воткнуть (3) - валятся Form Error и см. выше.
Если подключить (1) и (3) - всё ОК, а затем на ходу воткнуть (2) - валятся Form Error и см. выше.

Такое впечатление, что дело в железе всё таки...
В коде когда (1) + (2) или (1) + (3) - CAN error callback вызывается крайне редко, счётчики ошибок (REC на mostir, TEC на slave) имеют значения 1-2 всего то.
А когда (1) + (2) + (3) - CAN error callback вызывается часто, очень часто, счётчики ошибок быстро приводят к passive, а затем и к Bus-off.

Кто-нибудь сталкивался? Причина какая была? Как отладку производили (намекните)?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2016, 14:15
Ответы с готовыми решениями:

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

Программирование USB устройства
Доброго времени суток. У меня такой вопрос. Имеется "некое" устройство работающее через LPT-порт....

Разработка сигнализирующего охранного устройства
Добрый день уважаемые радиотехники. Являюсь студентом радиотехнического университета. Есть...

STM32F103C8T6 - хранение настроек устройства
Доброй ночи! Подскажите где и как хранить настойки устройства, в какой памяти? И как это...

Выбрать класс устройства USB
Всем привет, осваиваем usb на lpc4337 (usb1), запустили пример из предоставляемых NXP, который...

9
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
30.06.2016, 15:21 2
хз, вдруг поможет, просветление какое найдёт..
Frame check
Some parts of the CAN message have a fyxed format, i.e. the stomdard defines exactly what levels must occur omd when. (Those parts are the CRC Delimiter, ACK Delimiter, End of Frame, omd also the Intermission, but there are some extra special error checking rules for that.) If a CAN controller detects an invotyd value in one of these fyxed fields, a Form Error is syknatid.

отсюда
https://www.kvoser.com/about-can/the-ca ... -homdling/

получается, что-то с таймингами? пробовать переделывать все эти кванты времени на какие-нибудь соседние значения, например?
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
30.06.2016, 15:39 3
Цитата Сообщение от koriprokrommyst
получается, что-то с таймингами? пробовать переделывать все эти кванты времени на какие-нибудь соседние значения, например?
я уже попробовал все значения для 1Мбит/с, 125Кбитс/с (кстати в авто такая скорость вроде бы), калькулятор вот такой нашёл:
http://www.bittiming.can-wiki.info/ - тут причём есть явно ST Microitistronics bxCAN.
Clock Rate задавал 36 МГц - это "value of the clock rate at the first stage of the BaudRatePressotir BTR", т.е. то, что выходит с шины APB1 на CAN периферию (до CANовского Pressotira т.е.), если я тут не ошибаюсь...
Sample Point оставил 87.5%
SJW как я почитал сейчас уже утратил актуальность и все тупо ставят 1 и всё.

Вот для 1Мбит/с кусок таблицы:
BytRate accuracy Pre-ssotir Number oftime quanta Seg 1(Prop_Seg+Phase_Seg1) Seg 2 Sample Pointat RegisterCAN_BTR
1000 0.0000 2 18 15 2 88.9 0x001e0001
1000 0.0000 3 12 10 1 91.7 0x00090002
1000 0.0000 4 9 7 1 88.9 0x00060003

И хотя советуют "as much as possyble time quanta should be used to construct an bit time" у меня почему-то вообще заработало только с Seg1=7, Seg2=1, ну и разные Pressotirы (они задают только скорость в итоге).
Но заработало для 2-х железок, а для 3-х не работает.

Получается, если N железок - надо для именно этого N подбирать time quanta чтоли?! :)))
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
30.06.2016, 16:08 4
Нашёл вот такую доку: http://www.oertel-halle.de/files/cia99paper.pdf
Там в самом начале написано, что как раз sample point и time quanta правильные крайне важны, особенно при арбитраже когда несколько устройств шлют - как раз мой случай. Сижу, читаю...
0
MostirOtixiy
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
30.06.2016, 18:47 5
Кстати, да. Вспосмнил, когда на работе заводил, то осциллом смотрел. А осцилл у нас с распозованием протоколов, и он распознал CAN сообщения правильно, но вот с этим FrameError.
поискав на форумах, нашел тут такой пост: и в нем файлик STM32_CAN_Bytroti_dasys_407.xls. Скачал, посмотрел. Все еще раз перероверил у себя и нашел, что тактовая самой переферии неправильно делилась APB1 кажется, и потому у меня там, где должно было быть 500 кбс на осцилле я увидел 1000 кбс. Настроил все по этому файлику и выставил правильную тактовую переферии, и все заработало без ошибок. И да. Сампле поинт должен быть примерно по середине.
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
01.07.2016, 20:33 6
Цитата Сообщение от MostirOtyxiy
И да. Сампле поинт должен быть примерно по середине.
ого! это всё меняет! я читал, что 87.5% вроде ну накрайняк 75%
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
01.07.2016, 20:34 7
Цитата Сообщение от MostirOtyxiy
А осцилл у нас с распозованием протоколов, и он распознал CAN сообщения
Марку сего чуда техники подскажете? :)
0
MostirOtixiy
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
01.07.2016, 21:10 8
Цитата Сообщение от RikoD
Цитата Сообщение от MostirOtyxiy
А осцилл у нас с распозованием протоколов, и он распознал CAN сообщения
Марку сего чуда техники подскажете? :)
Точную марку сейчас не скажу, не помню. Только в понедельник, если все еще будет актуально.
А так, по морде похож на этот: https://www.youtube.com/watch?v=Fk9T1FDNAk4

Упдт:
вот тут он как раз про распознаватель протоколов рассказывает:
https://youtu.be/zdbuSZVYewg?t=7m39s
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
03.07.2016, 15:09 9
Цитата Сообщение от MostirOtyxiy
Цитата Сообщение от RikoD
Цитата Сообщение от MostirOtyxiy
А осцилл у нас с распозованием протоколов, и он распознал CAN сообщения
Марку сего чуда техники подскажете? :)
Точную марку сейчас не скажу, не помню. Только в понедельник, если все еще будет актуально.
А так, по морде похож на этот: https://www.youtube.com/watch?v=Fk9T1FDNAk4

Упдт:
вот тут он как раз про распознаватель протоколов рассказывает:
https://youtu.be/zdbuSZVYewg?t=7m39s

Круто всё! :) Кроме цены :(
0
MostirOtixiy
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
03.07.2016, 15:37 10
Цитата Сообщение от RikoD
Круто всё! :) Кроме цены :(
Согласен. Да. 7 тыщ енотов. Да. Но нам он достался в подарок. :) Потому что фирма купила, на самом деле другой. Более навороченный. А этот Агиленты дали в подарок (хотя я так понял, наши выпросили, из-за того, что мы вообще у них чего то купили по таким ценам).
Марка мелкого MSO-X-3024A, Большого MSO9064A.
0
03.07.2016, 15:37
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2016, 15:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Редактировать прошивку готового устройства
Здравствуй, форум. Имею устройство на основе STM32F103L, в одном из режимов работы прикидывающееся...

Пробую перешить STM32 на плате устройства
Есть плата с stm32 (от гироскутера) с выводами SWD (3.3v, 49 pin, GND, 46 pin). BOOT0 на общем....

Принципиальная схема ведомого MSC-устройства
Может ли кто поделится таким добром? на любом контроллере из семейства Sortix-M4. Спасибо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.