CANpie - CANpie

CANpie (Среда интерфейса программирования CAN) является Открытый исходный код проект и преследует цель создания и создания открытого и стандартизированного программного API для доступа к CAN-шина.

Логотип CANpie FD

Проект основан в 2001 году.[1] компанией MicroControl и под лицензией Лицензия Apache версии 2.0. Текущая версия CANpie API[2] охватывает как классические CAN-фреймы, так и ISO CAN FD[3] кадры. API разработан для встроенных приложений управления, а также для интерфейсных плат ПК: встроенных микроконтроллеры запрограммированы на C, для независимого от ОС доступа к интерфейсным платам предоставляется C ++ API. API обеспечивает функциональность ISO / OSI Layer-2 (уровень канала передачи данных). CANpie не намерен включать функции более высокого уровня (например, CANopen, SAE J1939 ).

Принцип драйвера

CANpie API поддерживает концепцию аппаратных буферов сообщений (почтовых ящиков) с общим лимитом 255 буферов. Буфер сообщений имеет уникальное направление (получение или передача). В качестве опции можно подключить ФИФО с произвольным размером в буфер сообщений для обоих направлений передачи. Общее количество каналов CAN ограничено 255, API предоставляет метод для сбора информации о функциях каждого аппаратного канала CAN. Это особенно важно для разработчика приложения, который хочет написать код только один раз. Отметка времени кадра CAN (указывается CiA 603, отметка времени кадра CAN - Требования для управления временем в сети[4]) поддерживается с разрешением 1 наносекунда.

использование

Структура CANpie

В следующем фрагменте кода показана инициализация микроконтроллера.

#включают "cp_core.h" // основные функции CANpieпустота MyCanInit(пустота){   CpPort_ts  tsCanPortT;   // логический порт CAN   //---------------------------------------------------   // настраиваем CAN контроллер / открываем физический CAN   // порт   //   memset(&tsCanPortT, 0, размер(CpPort_ts));   CpCoreDriverInit(eCP_CHANNEL_1, &tsCanPortT, 0);   //---------------------------------------------------   // устанавливаем 500 кбит / с   //   CpCoreBitrate(&tsCanPortT,                 eCP_BITRATE_500K,                 eCP_BITRATE_NONE);   //---------------------------------------------------   // запускаем работу CAN   //   CpCoreCanMode(&tsCanPortT, eCP_MODE_OPERATION);   // .. теперь мы работаем}

Похожие проекты

Для Linux операционная система проекты can4linux и SocketCAN обеспечить поддержку классической CAN и ISO CAN FD. Коммерческий АВТОСАР Спецификация поддерживает CAN FD с версии 4.3 и доступна только для партнеров AUTOSAR. Спецификация CMSIS-Driver (стандарт программного интерфейса микроконтроллера Cortex) представляет собой программный API, который описывает интерфейсы периферийных драйверов для стеков промежуточного программного обеспечения и пользовательских приложений на РУКА Процессоры Cortex-M.[5]

Рекомендации

внешняя ссылка