CANpie
CANpie (CAN Programming Interface Environment) — это проект с открытым исходным кодом , целью которого является создание и внедрение открытого и стандартизированного программного API для доступа к шине CAN .
Проект создан в 2001 году. [1] от MicroControl и распространяется по лицензии Apache License версии 2.0 . Текущая версия CANpie API [2] охватывает как классические фреймы CAN, так и ISO CAN FD [3] рамки. API предназначен для встроенных приложений управления, а также для интерфейсных плат ПК: встроенные микроконтроллеры программируются на языке C, предусмотрен API C++ для независимого от ОС доступа к интерфейсным платам. API обеспечивает функциональность ISO/OSI Layer-2 (уровень канала передачи данных). CANpie не намерен включать функциональные возможности более высокого уровня (например, CANopen , SAE J1939 ).
Принцип драйвера
[ редактировать ]API CANpie поддерживает концепцию аппаратных буферов сообщений (почтовых ящиков) с общим ограничением в 255 буферов. Буфер сообщений имеет уникальное направление (прием или передача). можно подключить FIFO В качестве опции к буферу сообщений произвольного размера для обоих направлений передачи. Общее количество каналов CAN ограничено 255. API предоставляет метод сбора информации о функциях каждого аппаратного канала CAN. Это особенно важно для разработчика приложений, который хочет написать код только один раз. Отметка времени кадра CAN (определена CiA 603, Отметка времени кадра CAN. Требования к управлению временем в сети). [4] ) поддерживается с разрешением 1 наносекунда.
Использование
[ редактировать ]Следующий фрагмент кода показывает инициализацию микроконтроллера.
#include "cp_core.h" // CANpie core functions
void MyCanInit(void)
{
CpPort_ts tsCanPortT; // logical CAN port
//---------------------------------------------------
// setup the CAN controller / open a physical CAN
// port
//
memset(&tsCanPortT, 0, sizeof(CpPort_ts));
CpCoreDriverInit(eCP_CHANNEL_1, &tsCanPortT, 0);
//---------------------------------------------------
// setup 500 kBit/s
//
CpCoreBitrate(&tsCanPortT,
eCP_BITRATE_500K,
eCP_BITRATE_NONE);
//---------------------------------------------------
// start CAN operation
//
CpCoreCanMode(&tsCanPortT, eCP_MODE_OPERATION);
//.. now we are operational
}
Похожие проекты
[ редактировать ]Для операционной системы Linux проекты can4linux и SocketCAN обеспечивают поддержку Classical CAN и ISO CAN FD. Коммерческая спецификация AUTOSAR поддерживает CAN FD начиная с версии 4.3 и доступна только партнерам AUTOSAR. Спецификация CMSIS-Driver (стандарт программного интерфейса микроконтроллера Cortex) — это программный API, который описывает интерфейсы драйверов периферийных устройств для стеков промежуточного программного обеспечения и пользовательских приложений на процессорах ARM Cortex-M. [5]
Ссылки
[ редактировать ]- ^ «CANpie — просмотр файлов на SourceForge.net» .
- ^ «Руководство пользователя CANpie» (PDF) . microcontrol.net . Проверено 10 апреля 2024 г.
- ^ «CAN с гибкой скоростью передачи данных» (PDF) . can-cia.org . Проверено 10 апреля 2024 г.
- ^ «CAN в автоматизации (CiA): Техническая документация» .
- ^ «Общий стандарт программного интерфейса микроконтроллера (CMSIS)» .
Внешние ссылки
[ редактировать ]- Документация CANpie
- Сайт проекта CANpie
- Информационный бюллетень CAN 25 февраля 2014 г.
- Архитектура программного обеспечения для модульных самореконфигурируемых роботов, Исследовательский центр Xerox в Пало-Альто
- Сайт АВТОСАР
- сайт проекта can4linux
- Сайт проекта SocketCAN
- Патент подан на SocketCAN (немецкий язык)
- iCC 2017 – «API драйвера CAN – переход от классической CAN к CAN FD»