Автономный модуль шины CAN или встроенный CAN STM32?

Я провел дни, изучая и пытаясь добиться простой связи с шиной CAN с нуля, используя stm32f1, но я до сих пор не добился желаемых результатов, и это сложно понять и запрограммировать.

С другой стороны, есть модули шины CAN, которые взаимодействуют с микроконтроллером по SPI следующим образом: https://www.ebay.com/itm/283953770322?hash=item421cf6af52:g:JHAAAOSwIeVfQ7HI

и есть много библиотек для работы с этими модулями, но официальная страница микрочипа не рекомендует продолжать использовать MCP2515.

Мое сомнение: какая разница в использовании шины CAN с нуля (STM32) по сравнению с использованием отдельного модуля? использование автономного модуля влияет на безопасность шины CAN? Следует ли использовать автономный модуль в промышленности?

Вероятно, так же, как внутренний и внешний АЦП. Прерывания и регистры быстрее для внутреннего. Нет сообщения SPI, чтобы что-то сделать. Вы просто делаете это.
Под «с нуля» вы подразумеваете программный контроллер CAN, а не аппаратное периферийное устройство CAN (будь то встроенное в MCU или внешнее через SPI)?

Ответы (3)

Чем отличается использование CAN-шины с нуля (STM32) от использования отдельного модуля?

Внешние контроллеры CAN в основном остались в прошлом. В 1990-х годах это был практически единственный способ использования CAN, до того, как микроконтроллеры начали поддерживать встроенные контроллеры CAN.

С тех пор единственная причина для использования внешнего контроллера CAN заключается в том, что у вас есть особые требования к проекту, ведущие к очень специализированному MCU, который не поставляется с версией CAN.

использование автономного модуля влияет на безопасность шины CAN?

Не безопасность, а защита от злонамеренного использования. Но это делает всю конструкцию немного более чувствительной к электромагнитным помехам, поскольку SPI не так надежен, как CAN. Внешний контроллер также приводит к большим задержкам, затратам на BoM и общей дополнительной бессмысленной сложности.

но официальная страница микросхемы не рекомендует продолжать использовать MCP2515

В основном это связано с тем, что Microchip выпустила новое поколение всех своих приемопередатчиков и контроллеров с поддержкой CAN FD. Новые современные детали обратно совместимы, а также имеют лучшую устойчивость, защиту от электростатических разрядов и т. д.

Если ваш MCU имеет встроенное периферийное устройство CAN, его использование предпочтительнее внешнего модуля. В дополнение к задержке, упомянутой Ральфом, учитывайте стоимость, доступность и надежность использования модуля.

Подумайте об этом таким образом. На рынке доступно множество микросхем расширения ввода-вывода. Вы бы использовали его, если бы у вас было много запасных контактов на MCU? Возможно нет. С другой стороны, если все ваши контакты израсходованы, то расширитель портов I2C может быть более жизнеспособным вариантом, чем получение MCU в более крупном корпусе.

Как правило, устройства на шине CAN требуют, чтобы сообщения доставлялись с одного устройства на другое с очень малой задержкой. Например, передача положения вращающегося вала двигателя от приводного устройства к контроллеру по шине. Данные бесполезны, если они не доставлены с небольшой задержкой. Если между вашим процессором и CAN-шиной есть устройство, с которым вы должны обмениваться данными через SPI, эта связь «устройство посередине» будет задерживать каждое сообщение, увеличивая задержку его прибытия на другие устройства на CAN-шине.

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

Если приложение не имеет требований к связи с малой задержкой, то я полагаю, что внешнее периферийное устройство, подключенное к SPI, может удовлетворить эти требования.

Таким образом, основной причиной отказа от использования внешнего модуля будет связь по шине CAN с малой задержкой.