canpie
CANpie (CAN Programming Interface Environment) to projekt typu open source , którego celem jest stworzenie i ustanowienie otwartego i znormalizowanego oprogramowania API umożliwiającego dostęp do magistrali CAN .
Projekt został założony w 2001 roku przez firmę MicroControl i jest licencjonowany na licencji Apache w wersji 2.0 . Aktualna wersja API CANpie obejmuje zarówno klasyczne ramki CAN, jak i ISO CAN FD . Interfejs API jest przeznaczony do wbudowanych aplikacji sterujących, a także do kart interfejsu PC: wbudowane mikrokontrolery są programowane w języku C, a interfejs API C++ zapewnia niezależny od systemu operacyjnego dostęp do kart interfejsu. Interfejs API zapewnia funkcjonalność ISO/OSI Layer-2 (Data Link Layer). Nie jest intencją CANpie wprowadzanie funkcjonalności wyższych warstw (np. CANopen , SAE J1939 ).
Zasada kierowcy
Interfejs API CANpie obsługuje koncepcję sprzętowych buforów wiadomości (skrzynek pocztowych) z łącznym limitem 255 buforów. Bufor komunikatów ma unikalny kierunek (odbiór lub nadawanie). Opcjonalnie istnieje możliwość podłączenia FIFO o dowolnej wielkości do bufora komunikatów dla obu kierunków przesyłu. Całkowita liczba kanałów CAN jest ograniczona do 255, API zapewnia metodę zbierania informacji o cechach każdego kanału sprzętowego CAN. Jest to szczególnie ważne dla projektanta aplikacji, który chce napisać kod tylko raz. Znacznik czasu ramki CAN (określony przez CiA 603, Znacznik czasu ramki CAN – Wymagania dotyczące zarządzania czasem w sieci) jest obsługiwany z rozdzielczością 1 nanosekundy.
Stosowanie
Poniższy fragment kodu przedstawia inicjalizację mikrokontrolera.
0
0
#include "cp_core.h" // Podstawowe funkcje CANpie void MyCanInit ( void ) { CpPort_ts tsCanPortT ; // logiczny port CAN //------------------------------------------ -------- // skonfiguruj kontroler CAN / otwórz fizyczny port CAN // // memset ( & tsCanPortT , , sizeof ( CpPort_ts )); CpCoreDriverInit ( eCP_CHANNEL_1 , & tsCanPortT , ); //------------------------------------------------ --- // konfiguracja 500 kBit/s // CpCoreBitrate ( & tsCanPortT , eCP_BITRATE_500K , eCP_BITRATE_NONE ); //------------------------------------------------ --- // uruchomienie operacji CAN // CpCoreCanMode ( & tsCanPortT , eCP_MODE_OPERATION ); //.. teraz działamy }
Podobne projekty
W systemie operacyjnym Linux projekty can4linux i SocketCAN zapewniają wsparcie dla Classical CAN i ISO CAN FD. Komercyjna AUTOSAR obsługuje CAN FD od wersji 4.3 i jest dostępna tylko dla partnerów AUTOSAR. Specyfikacja CMSIS-Driver (Cortex Microcontroller Software Interface Standard) to oprogramowanie API, które opisuje interfejsy sterowników urządzeń peryferyjnych dla stosów oprogramowania pośredniego i aplikacji użytkownika na ARM Cortex-M.
- ^ „CANpie - Przeglądaj pliki na SourceForge.net” .
- ^ https://www.microcontrol.net/wp-content/uploads/2021/10/canpie_user_v3r08.pdf [ bez adresu URL PDF ]
- ^ https://www.can-cia.org/fileadmin/resources/documents/proceedings/2012_hartwich.pdf [ bez adresu URL PDF ]
- ^ „CAN w automatyce (CiA): dokumenty techniczne” .
- ^ „Wspólny standard interfejsu oprogramowania mikrokontrolera (CMSIS)” .
Linki zewnętrzne
- Dokumentacja CANpie
- Witryna projektu CANpie
- Biuletyn CAN 2014-02-25
- Architektura oprogramowania dla modułowych, samorekonfigurowalnych robotów, Centrum badawcze Xerox Palo Alto
- stronie AUTOSAR
- strona projektu can4linux
- Witryna projektu SocketCAN
- Zgłoszenie patentowe dla SocketCAN (język niemiecki)
- iCC 2017 - "API sterownika CAN - migracja z klasycznego CAN do CAN FD"