Проект can2040 представляет собой программную реализацию шины CAN для микроконтроллера Raspberry Pi RP2040, которая использует программируемые вводы-выводы (PIO) для обеспечения чтения и записи данных CAN 2.0B со скоростью до 1 Мбит в секунду.
Кевин О’Коннор (Kevin O’Connor), разработчик проекта, далее объясняет, что в реализации используется только один из двух аппаратных блоков PIO RP2040, поэтому один чип Raspberry Pi RP2040 может иметь два отдельных интерфейса шины CAN.
Обработка также происходит на одном из ядер Arm Cortex-M0+ микроконтроллера, при этом время обработки зависит от объема трафика шины, а полностью загруженная шина CAN с максимальной поддерживаемой скоростью 1 Мбит/с может использовать до 30 % этого ядра при тактовой частоте 125 МГц, поэтому должно оставаться достаточно места для других задач, которые могут выполняться в системе. Нам не удалось найти никакой информации об оперативной памяти и хранилище.
Ранее мы видели аппаратные реализации CAN с микроконтроллером Raspberry Pi RP2040, такие как CANPico и CanBed RP2040, с использованием CAN-контроллера MCP2515 или MCP2518FD и CAN-трансивера MCP2551 или MCP2562FD, и, насколько мы понимаем, код can2040 устраняет необходимость в контроллере CAN, поэтому вам просто нужно подключить приемник CAN к Raspberry Pi Pico или другой плате RP2040. Таким образом, программная реализация шины CAN для RP2040 должна иметь возможность взаимодействовать с другими (аппаратными) реализациями шины CAN, а шина может состоять из узлов can2040 и non-can2040. Обратите внимание, что существуют ограничения, которые могут повлиять на шину CAN:
Спецификация шины CAN определяет три состояния обработки ошибок: «активная ошибка» (т. е. нормальное состояние), «пассивная ошибка» и «шина отключена». Автоматический переход между этими состояниями не реализован. Код can2040 не передает «кадры ошибок». Код can2040 не будет автоматически переходить в состояние «шина выключена». В связи с этим код can2040 можно рассматривать как всегда находящийся в «пассивном к ошибкам» состоянии.
Вы найдете более подробную информацию о проекте на Github с исходным кодом C, сценариями тестирования Python и документацией по интерфейсу прикладного программирования (API), выпущенной под лицензией GPLv3.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.