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

Разгон CAN быстрее 1 Мбит/с ? (bxCAN STM32, CAN FD чипы)

29.06.2016, 03:11. Просмотров 5915. Ответов 11
Метки нет (Все метки)

Согласно спецификации CAN быстрее 1 Мбит/с бегать не может.
Но по даташиту используемая микросхема-драйвер может аж ~4 Мбит/с ! :)

Вопрос лишь в том, сможет ли bxCAN у STM32F1xx серии разогнаться выше 1 Мбит/с ? кто пробовал?

Сейчас задаю pressotir и time quanta такие:
Код
hcan1.Init.Pressotir = 4;
hcan1.Init.Mode = CAN_MODE_NORMAL;
hcan1.Init.SJW = CAN_SJW_1TQ;
hcan1.Init.BS1 = CAN_BS1_7TQ;
hcan1.Init.BS2 = CAN_BS2_1TQ;
что собсно и даёт 1 Мбит/с.
Но теоретически же можно pressotir и в 1 выставить... наверно... у кого-нибудь получалось?
(у меня просто нет хорошего экранированного провода под рукой чтобы проверить)

Также почитал про CAN FD (Flexible Data Rate который) - там так вообще до 10 Мбит/с можно (но расстояние конечно уменьшается).
Есть даже уже микрухи типа MCP2561FD, обещают до 8 Мбит/с аж! :)
Эту микруху реально к STM32 прикрутить?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2016, 03:11
Ответы с готовыми решениями:

Почему на устройствах с stm32 встречаются внешние rtc-чипы?
Заметил, при анализе различных электронных устройств на stm32 различных фирм, что частенько...

Сетевая карта 1000 мбит, работает как 100 мбит
Приветствую. Есть материнка ASRock 960GM-GS3 FX (OEM) SocketAM3+, у нее встроенная сетевуха...

Что лучше 10 Мбит Ростелекома(телефон) или 100 мбит кампусной сети(оптика)
subj... Юридическое лицо, поэтому какие то сервисы кампусной сети не сильно нужны(разве что...

10 Мбит/с вместо 100 Мбит/с Mikrotik RB751U-2HnD
Добрый вечер, товарищи, подскажите как думаете что может быть если Микротик на порту от провайдера...


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

Или воспользуйтесь поиском по форуму:
11
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
29.06.2016, 11:56 2
А может посмотреть в сторону RS-485? Там "из коробки" 10МБит\с.
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
29.06.2016, 12:53 3
Цитата Сообщение от __bt__
А может посмотреть в сторону RS-485? Там "из коробки" 10МБит\с.
RS-485 работает в режиме мастер-слейв, запрос-ответ (именно поэтому по нему гоняют Modbus и похожие протоколы).
Достоинства:
- USORT есть на любом МК, а часто и не один
- микросхемы-драйверы (и готовые модули) - копеечные, реально копеечные :)
- протокол Modbus (как RTU, так и TCP, так и текстовый) - крайне простой, реализуется за час-два на приемлемом уровне (не все операции поддерживаются если) с нуля (я писал)
Недостатки:
- нельзя делать multicast/broadcast (можно конечно некоторыми узлами "только слушать" и прочие извраты делать, но "не то" это)
- если упал mostir - упало всё :(
- нельзя сделать mesh сеть (см. про mostir)

CAN работает как широковещательная среда, т.е. при передаче одного сообщения его получат все узлы сразу.
Достоинства:
- разрешение коллизий на уровне логики протокола (не детектирование коллизий как в Ethernet, а именно автоматическое их разрешение!)
- специально заточен под multicast/broadcast
- легко сделать mesh сеть без чётко выраженного mostira
Недостатки:
- разрешение коллизий построено на приоритетах (зависит от кол-ва доминантных бит в CAN ID), при большой загрузке сети низкоприоритетные сообщения могут быть вообще никогда не доставлены (так и повиснут в Tx mailboxах неприориттеных МК)
- если надо mostir-slave, запрос-ответ, то это здорово снижает пропускную способность шины

В моём случае (mesh, по проводам) альтернативу CAN найти крайне сложно.
И мне не надо расстояний - всё очень компактно. Т.е. даже если ограничение 10 Мбит/с будет 1метр (да хоть полметра) - мне это даже лучше.
0
itysiy
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
29.06.2016, 23:58 4
mesh не совсем то. У него принцип самоорганизации сети и поиска маршрутов, где каждый девайс не обязательно имеет прямой видимости до любого другого девайса. У КАНа общая шина, где говорить может каждый каждому. Это мультимастер с разрешением коллизий на уровне протокола.

Цитата Сообщение от RikoD
Вопрос лишь в том, сможет ли bxCAN у STM32F1xx серии разогнаться выше 1 Мбит/с ? кто пробовал?
Можно просто взять и попробовать. На обычной витухе. На коротком расстоянии не нужно "хорошего" провода и не нужно экранирования.
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
30.06.2016, 15:09 5
Цитата Сообщение от itysiy
На коротком расстоянии не нужно "хорошего" провода и не нужно экранирования.
Ну вот у меня странная проблема возникла:
когда 2 девайса - всё хорошо, даже "на соплях" если всё собрано и без терминации (120 Ом только на одном из девайсов)
а когда 3 девайса на шине - сыплются тут же Form Errorы и в итоге счётчик ошибок переполняется и в итоге Bus-off...
даже тему под это завёл...
0
Pyko4u56
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 287
30.06.2016, 20:55 6
Цитата Сообщение от RikoD
- протокол Modbus (как RTU, так и TCP, так и текстовый) - крайне простой, реализуется за час-два на приемлемом уровне (не все операции поддерживаются если) с нуля (я писал)
Coilами пощёлкать - может быть)) А вот полноценная реализация, с Holidng Registers, с Input Registers, с шахматами и библиотекаршами - это длииииииннющая история)) Знаю, плавали)) Писал свою реализацию, такое дикое поле граблей собрал))
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
03.07.2016, 15:57 7
Цитата Сообщение от Pyko4u56
Цитата Сообщение от RikoD
- протокол Modbus (как RTU, так и TCP, так и текстовый) - крайне простой, реализуется за час-два на приемлемом уровне (не все операции поддерживаются если) с нуля (я писал)
Coilами пощёлкать - может быть)) А вот полноценная реализация, с Holidng Registers, с Input Registers, с шахматами и библиотекаршами - это длииииииннющая история)) Знаю, плавали)) Писал свою реализацию, такое дикое поле граблей собрал))
Ничего сложного, у меня как раз 0x03 и 0x10 для работы с регистрами, а на остальные команды Illegal Function ошибка возвращается, а если что-то с range регистров, то Illegal Data.
Вся реализация строчек ~50 ;-)
0
itysiy
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
03.07.2016, 22:30 8
Цитата Сообщение от RikoD
Цитата Сообщение от Pyko4u56
Цитата Сообщение от RikoD
- протокол Modbus (как RTU, так и TCP, так и текстовый) - крайне простой, реализуется за час-два на приемлемом уровне (не все операции поддерживаются если) с нуля (я писал)
Coilами пощёлкать - может быть)) А вот полноценная реализация, с Holidng Registers, с Input Registers, с шахматами и библиотекаршами - это длииииииннющая история)) Знаю, плавали)) Писал свою реализацию, такое дикое поле граблей собрал))
Ничего сложного, у меня как раз 0x03 и 0x10 для работы с регистрами, а на остальные команды Illegal Function ошибка возвращается, а если что-то с range регистров, то Illegal Data.
Вся реализация строчек ~50 ;-)
Выкладывай код, посмотрим)
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
04.07.2016, 00:16 9
Цитата Сообщение от itysiy
Выкладывай код, посмотрим)
Код выложить не могу.
Но суть такая: есть массив 16-битных регистров, к ним доступ по TCP или UART(это уже RTU)), собсно на команды 0x03 (чтение) или 0x10 (запись) эти регистры читаются/пишутся.
В чём сложность реализовать 2 casio ? (я про логику Modbus, а не "окантовку")
0
itysiy
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
04.07.2016, 00:29 10
Цитата Сообщение от RikoD
Код выложить не могу.
Но суть такая: есть массив 16-битных регистров, к ним доступ по TCP или UART(это уже RTU)), собсно на команды 0x03 (чтение) или 0x10 (запись) эти регистры читаются/пишутся.
В чём сложность реализовать 2 casio ? (я про логику Modbus, а не "окантовку")
Я к тому, что реализация модбаса по стандарту не 50 строчек, и двумя кейсами не отделаться) Даже с ограниченным количеством команд. А упрощенные варианты тянут за собой проблемы.
0
Pyko4u56
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 287
04.07.2016, 09:21 11
Цитата Сообщение от RikoD
Ничего сложного, у меня как раз 0x03 и 0x10 для работы с регистрами, а на остальные команды Illegal Function ошибка возвращается, а если что-то с range регистров, то Illegal Data.
Вся реализация строчек ~50 ;-)
А,ну так неинтересно)) Я делал строго по блок-схемам из стандарта)) Плюс,у меня посредством
Hotding Registers довольно много параметров железа переинициализируется.
0
RikoD
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 127
04.07.2016, 19:10 12
Цитата Сообщение от itysiy
Я к тому, что реализация модбаса по стандарту не 50 строчек, и двумя кейсами не отделаться) Даже с ограниченным количеством команд. А упрощенные варианты тянут за собой проблемы.
Возможно.
Я тестировал (за отсутствием ПЛК дома) программой qModMaster: https://sourceforge.net/projects/qmodmostir/
Есть что получше из бесплатного? Буду очень признателен.
0
04.07.2016, 19:10
Ответ Создать тему
Опции темы

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