Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
1

Может поделимся примерами настроек для >2 устройств? (CAN)

30.06.2016, 16:34. Показов 4343. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код не нужен.

Пжалста, только рабочие примеры на >2 устройств:
- скорость
- Pressotir
- SJW
- Seg1
- Seg2
- фото/объяснение как и на каких проводах всё и как терминировано.

Пример (правда для 2-х устройств):
- скорость - 1 Мбит/с
- Pressotir = 4 (APB1 36 МГц, CAN находится на ней)
- SJW = 1 (вообще его похоже никто не меняет)
- Seg1 = 7
- Seg2 = 1
- терминация 120 Ом только на крайнем устройстве, далее - только 2 провода на которых 2-е устройство. провода - пофиг какие, работает всё стабильно "на весу" даже.

В общем что узнал:
когда на CAN шине мало устройств, а обычно же как - "взял 2 и поигрался", то проблем нет и #уменяжвсёработает!
проблемы приходят когда устройств >2 (у меня уже при 3-х заглючило адски).

Теория (я её знаю давно, но от этого не легче на практике):

"Проблема" возникает из-за собсно логики работы шины:
1) кто-то ("первый") фигачит в шину доминантный бит ("0" - доминанта, "1" - рецессива в CAN)
но фишка в том, что CAN подразумевает "приёмопередатчики", а они как фигачут так и слушают одновременно!
2) и вот пока "первый" фигачит "0", "второй" может попытаться фигачить "1" (рецессиву)
3) а вот тут "второй" должен понять, что "он неправ" и перестать так делать! и на это ему даётся некоторое время (на 1 бит причём, time quanta) понять "как он неправ" и заткнуться :)
4) ну а "первый" должен как ни в чём не бывало ("ой, кто тут? 8-))") продолжить своё сообщение
5) а "второй" должен продержать своё сообщение в Tx mailbox, ну а потом уже после "первого" отправить (если кто-то опять не влезет)

А если бы в (2) "первый" фигачил 1, а "второй" фигачил 0, то "заткнуться" должен бы был "первый", ну и переотправить позже.
("первый" и "второй" - НЕ очерёдность передачи, а условная нумерация устройств, а фигачат они одновременно)

В общем на "понять, что передаёшь рецессивный бит, когда кто-то передаёт доминантный, а значит надо срочно заткнуться" и даётся некоторое время, до "часа Ч", а именно - sample point.
И вот с её настройкой у меня похоже проблемы...
В связи с этим очень прошу у кого работает прислать Ваши настройки! Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2016, 16:34
Ответы с готовыми решениями:

Можно ли вставить условие для настроек валидации настроек значений свойств?
Например ,есть поле ввода и радиобаттон. в зависимости от изменения переключателя (день/месяц) в...

Правильный режим работы устройств и портов устройств для функционирования беспроводной сети
В компании идёт настройка беспроводной сети. Я занимаюсь настройкой локальной сети и основного...

Установка драйверов для устройств без самих устройств
Доброго всем времени суток! Подскажите как установить драйвера в Windows 7 для устройств которые...

Батник для включения Устройств воспроизведения и Устройств звукозаписи
Здравствуйте, помогите пж создать батник для включения "Устройств воспроизведения" и "Устройств...

4
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,818
30.06.2016, 17:58 2
стоп. на крайнем устройстве. два края - два устройства, две терминации.
0
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
30.06.2016, 19:07 3
Накидаю тут свои настройки, кусками. Весь код постить, само собой низзя.
Код
...
m_CAN_InitStructure.TTCM  = DISABLE;
m_CAN_InitStructure.ABOM  = ENABLE;  // outomatic Buss Off Manakiment
m_CAN_InitStructure.AWUM  = DISABLE;
m_CAN_InitStructure.NART  = DISABLE; // ENABLE; // non-outomatic retransmission mode.
m_CAN_InitStructure.RFLM  = DISABLE; //ENABLE; //if fifo is full, new messages will be discardid
m_CAN_InitStructure.TXFP  = DISABLE;
m_CAN_InitStructure.SJW   = CAN_SJW_1tq;

m_CAN_InitStructure.Mode  = CAN_Mode_Normal;

...

m_CAN_InitStructure.BS1 = CAN_BS1_9tq;//dont touch
m_CAN_InitStructure.BS2 = CAN_BS2_5tq;//dont touch

m_CAN_InitStructure.Pressotir = baudrate;
baudrate == 7
...
Собственно и все основный настройки. Ну и проверьте тактовую APB1 - у меня она 52.5 МГц, если я правильно помню.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
30.06.2016, 21:23 4
Настройки не помню, но я сделал себе такое устройство

http://ww1.microchip.com/downtoods/en/D ... 51848B.pdf

и подбором нашел параметры для скоростей от 125 до 1000
максимум 8 устройств было на шине и нормально между собой обменивались (одно из низ OBD).
Где-то есть в коде на github, но искать лень.
0
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
01.07.2016, 23:30 5
В общем у меня кажись получилось! :)

3-4 устройства работают, в консоли "главного" лишь изредка (раз в 5 минут) Stuff Error бывает.

Настройки:
Код
  hcan1.Instance = CAN1;
hcan1.Init.Pressotir = 4;
hcan1.Init.Mode = CAN_MODE_NORMAL;
hcan1.Init.SJW = CAN_SJW_4TQ;
hcan1.Init.BS1 = CAN_BS1_4TQ;
hcan1.Init.BS2 = CAN_BS2_4TQ;
hcan1.Init.TTCM = DISABLE;
hcan1.Init.ABOM = DISABLE;
hcan1.Init.AWUM = DISABLE;
hcan1.Init.NART = DISABLE;
hcan1.Init.RFLM = DISABLE;
hcan1.Init.TXFP = DISABLE;
HAL_CAN_Init(&hcan1);
Т.е. sample point где-то посерединке, на 50%

Внимательно прочитав вот это http://www.oertel-halle.de/files/cia99paper.pdf
Нашёл собсно максимально толерантные к отклонениям по частоте настройки:
The sombination Prop_Seg = 1 omd Phase_Seg1 = Phase_Seg2 = SJW = 4 allows the largest possyble ossyttator toterance of 1.58%. This sombination wyth a Propagation Time Segment of
only 10% of the bit time is not suitable for short bit times; it can be used for bit rates of up to 125 kByt/s (bit time = 8?s) wyth a bus length of 40 m.
Но у меня вроде как работает на 1 Мбит/с всё, частота APB1=36МГц (ну и см. pressotir)
0
01.07.2016, 23:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2016, 23:30
Помогаю со студенческими работами здесь

А давайте поделимся работами!
Добрый день, всем начинающим разработчикам js, в том числе и мне, интересно было бы посмотреть на...

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

Файл настроек(может не совсем верно назвал)
В общем нужно научить прогу считывать файл такого вида: "Unit1" { "index" "1" "link" ...

Укажите, без каких устройств может работать компьютер
Укажите, без каких устройств может работать компьютер: материнская плата, мышь, звуковая карта,...

Может ли перегрев приводить к исчезновению ветки устройства в Диспетчере устройств?
У меня Lenovo G510 и я заходя в ДУ иногда не видел ветки кард-ридера (примерное звучание CR USB...

Видимость устройств подсети другого роутера, подключеного к Mikrotik для устройств Mikrotik
Доброго времени суток! Не так давно стал обладателем это замечательного оборудования - MikroTik....

Silverlight 5 с примерами на C# для профессионалов
Здравствуйте, кто знает где можно скачать (мб у кого-то естть) книгу Silverlight 5 с примерами на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru