Instrukcja obsługi – EG Can FW v1.1 PL

1. Przeznaczenie urządzenia

Urządzenie jest interfejsem CAN/CAN FD opartym o:

  • Nucleo-G474RE
  • CAN-FD HAT od Embedded Garage

Firmware udostępnia dwa aktywne protokoły pracy przez USART2:

  • CLI, czyli tekstowa konsola serwisowa
  • SLCAN, czyli interfejs zgodny z aplikacjami klasy Lawicel/SLCAN

Firmware obsługuje trzy kontrolery FDCAN:

  • CAN1
  • CAN2
  • CAN3

2. Zachowanie po uruchomieniu

  • Po poprawnym starcie aplikacja inicjalizuje Flash, licencje, LED systemowe, wejścia, UART, CAN, router oraz moduły triggerów.
  • Domyślnym aktywnym protokołem po starcie jest CLI.
  • Wszystkie trzy magistrale CAN są inicjalizowane przy starcie.
  • Domyślne prędkości to 100000 bps dla fazy nominalnej i 1000000 bps dla fazy danych CAN FD.

Uwaga:

  • Konfiguracja komend CAN, triggerów i routingu nie jest zapisywana trwale do Flash w tej wersji firmware.
  • Trwale zapisywane są jedynie dane licencyjne wgrywane komendą lic.

3. Interfejs z hostem

  • 115200 bps
  • 8 bitow danych
  • brak parzystosci
  • 1 bit stopu
  • brak kontroli przeplywu Komunikacja z hostem odbywa się przez USART2:
  • 115200 bps
  • 8 bitów danych
  • brak parzystości
  • 1 bit stopu
  • brak kontroli przepływu
  • 115200 bps
  • 8 bitow danych
  • brak parzystosci
  • 1 bit stopu
  • brak kontroli przeplywu

Warstwa UART pracuje z DMA i buforowaniem:

  • DMA RX: 256 bajtów
  • bufor RX: 2048 bajtów
  • bufor TX: 2048 bajtów
  • bufor komend CLI: 256 znaków
  • bufor komend SLCAN: 64 znaki

4. Elementy sprzetowe

4.1 Wejścia 12V

Dostępne są cztery wejścia cyfrowe 12V:

  • I1
  • I2
  • I3
  • I4

Wejścia są aktywne stanem wysokim i mają programowy debounce 50 ms.

4.2 Przyciski

Dostępnych jest sześć przycisków:

  • SW1
  • SW2
  • SW3
  • SW4
  • SW5
  • SW6

Przyciski są aktywne stanem niskim i mają debounce 50 ms.

W obecnej wersji aplikacji bezpośrednio wykorzystywany jest tylko:

  • SW1: przełączenie aktywnego protokołu

SW3–SW6 mogą być wykorzystane przez funkcję inp_trig jako źródła triggerów przyciskowych.

4.3 Wyjścia przekaźnikowe

Dostępne są cztery wyjścia przekaźnikowe:

  • Q1
  • Q2
  • Q3
  • Q4

W obecnej wersji firmware przełączniki Q1–Q4 nie sygnalizują trybu CLI/SLCAN. Są one przeznaczone do funkcji relay trigger, jeżeli zostaną skonfigurowane komendą CLI i aktywowana jest odpowiednia licencja.

4.4 LED systemowe

Na płytce dostępne są diody systemowe:

  • RDY
  • BUSY

Znaczenie diody RDY:

  • start: wzorzec 1000 ms ON / 200 ms OFF
  • praca normalna: stale ON
  • warning: 500 ms ON / 500 ms OFF
  • blad krytyczny: 100 ms ON / 100 ms OFF

Znaczenie diody BUSY:

  • jest sterowana wzorcem odpowiadającym aktualnemu protokołowi. Odpowiednio do ilości impulsów:
    • 1: sterowanie przez CLI (konsolę)
    • 2: protokół SLCAN/LAWICEL

Dodatkowo kazda magistrala CAN ma osobne LED RX i TX sterowane aktywnoscia ramek.

5. Magistrale CAN

Firmware obsługuje:

  • Classic CAN
  • CAN FD
  • CAN FD z BRS
  • identyfikatory standard 11-bit i extended 29-bit
  • ramki DATA i RTR

Domyślne prędkości po starcie dla CAN1, CAN2 i CAN3:

  • nominal bitrate: 100000 bps
  • data bitrate CAN FD: 1000000 bps

Dostępne prędkości nominalne:

  • 1000
  • 2000
  • 5000
  • 10000
  • 20000
  • 50000
  • 100000
  • 125000
  • 250000
  • 500000
  • 1000000

Dostepne predkosci CAN FD data:

  • 1000000
  • 2000000
  • 4000000
  • 5000000
  • 8000000

Bufory i kolejki CAN:

  • kolejka RX: 16 ramek na interfejs
  • kolejka TX: 16 ramek na interfejs
  • filtry standard: 28 wpisów
  • filtry extended: 8 wpisów

Domyślnie forwarding (przekazywanie) ramek do konsoli jest włączony dla wszystkich trzech magistral. Forwarding CAN do CAN jest domyślnie wyłączony.

6. Tryby pracy

6.1 CLI

CLI jest aktywne po starcie. Użytkownik komunikuje się przez terminal szeregowy i wpisuje komendy tekstowe zakończone Enter.

Komendy dostępne w CLI:

  • help [komenda] – lista komend albo szczegóły wybranej komendy
  • can_tx <bus> <id_hex> <S|E> <D|R> <C|F|B> <len> [data_hex] – wysłanie ramki CAN lub CAN FD
  • can_status – status wszystkich magistral, forwarding, bitrate i listen-only
  • can_en <bus> <E|D> – włączenie lub wyłączenie magistrali
  • can_silent <bus> <E|D> – włączenie lub wyłączenie listen-only
  • can_fwd_set <source_bus> <target_bus> <0|1> – routing z CAN do CAN lub z CAN do aktywnego protokołu, gdzie target_bus = 0 oznacza protokół
  • can_speed <bus> <bitrate> – ustawienie bitrate nominalnej
  • can_fd_speed <bus> <bitrate> – ustawienie bitrate fazy danych CAN FD
  • can_filter <bus> <idx> <M|R|D> <id1_hex> <id2_hex> <S|E> <R|N|A> – konfiguracja filtra CAN
  • can_filters_get <bus> – odczyt listy filtrów
  • rly_trig <relay> <bus> <S|C|T|P> <id_hex> <S|E> <len> <D|R> <C|F|B> <mask_hex> <value_hex> [duration_ms] – konfiguracja sterowania przekaźnikiem na podstawie ramki CAN
  • rly_trig_get <relay> – odczyt konfiguracji relay trigger
  • inp_trig <input> <R|F|H> <interval_ms> <bus> <id_hex> <S|E> <D|R> <C|F|B> <len> [data_hex] – wysyłanie ramki CAN po zdarzeniu na wejściu
  • inp_trig_dis <input> [R|F|H] – wyłączenie triggera wejścia
  • inp_trig_get – odczyt konfiguracji input trigger
  • lic <idx> <hash64> – zapis hasha licencyjnego do Flash
  • lic_get – UID urządzenia, zawartość slotów licencji i status aktywnych funkcji

Znaczenie skrótów w CLI:

  • S i E oznaczają identyfikator standard albo extended
  • D i R oznaczają DATA albo RTR
  • CFB oznaczają odpowiednio Classic CAN, CAN FD oraz CAN FD z BRS
  • can_filterM = mask, R = range, D = dual, a akcje to R = reject, N = none, A = accept
  • rly_trigS = set, C = clear, T = toggle, P = pulse
  • inp_trigR = rising, F = falling, H = hold

Przykłady komend CLI:

  • help
  • help can_tx
  • can_tx 1 1F0 S D C 8 1122334455667788
  • can_tx 3 123 S D B 12 00112233445566778899AABB
  • can_speed 1 500000
  • can_fd_speed 1 2000000
  • can_en 2 D
  • can_silent 2 E
  • can_fwd_set 1 2 1
  • can_fwd_set 2 0 1
  • can_filter 1 0 M 123 7FF S A
  • lic_get

Ograniczenia CLI wynikające z aktualnego kodu:

  • komenda can_filter wymaga aktywnej licencji Extended CAN filters
  • funkcje rly_trig* wymagają aktywnej licencji CAN relay trigger
  • funkcje inp_trig* wymagają aktywnej licencji CAN button trigger
  • nie ma oddzielnej komendy zapisu bieżącej konfiguracji do Flash

6.2 SLCAN

SLCAN jest drugim aktywnym protokołem routera. Zmiana protokołu odbywa się przyciskiem SW1.

SLCAN jest podłączony tylko do:

  • CAN1

Obsługiwane komendy parsera SLCAN:

  • O – open CAN1
  • C – close CAN1
  • Sx – ustawienie bitrate nominalnej dla CAN1
  • Yx – ustawienie bitrate fazy danych CAN FD dla CAN1
  • tT – transmisja klasycznych ramek DATA
  • rR – transmisja klasycznych ramek RTR
  • dD – transmisja CAN FD bez BRS
  • bB – transmisja CAN FD z BRS

Mapowanie bitrate SLCAN:

  • S0 = 10000
  • S1 = 20000
  • S2 = 50000
  • S3 = 100000
  • S4 = 125000
  • S5 = 250000
  • S6 = 500000
  • S8 = 1000000

Mapowanie bitrate CAN FD data w SLCAN:

  • Y1 = 1000000
  • Y2 = 2000000
  • Y4 = 4000000
  • Y5 = 5000000
  • Y8 = 8000000

Przykładowe ramki i komendy SLCAN:

  • O – otwarcie CAN1 do pracy w trybie SLCAN
  • C – zamknięcie CAN1
  • S6 – ustawienie nominalnej prędkości CAN1 na 500000 bps
  • Y2 – ustawienie prędkości fazy danych CAN FD na 2000000 bps
  • t12381122334455667788 – standardowa ramka Classic CAN DATA o ID 0x123, długości 8 bajtów i danych 11 22 33 44 55 66 77 88
  • T1ABCDEFF411223344 – rozszerzona ramka Classic CAN DATA o ID 0x1ABCDEFF, długości 4 bajtów i danych 11 22 33 44
  • r3210 – standardowa ramka RTR o ID 0x321 i długości 0
  • R1ABCDEFF8 – rozszerzona ramka RTR o ID 0x1ABCDEFF i długości 8
  • d123CAA55AA55AA55AA55AA55 – standardowa ramka CAN FD bez BRS o ID 0x123, DLC C, czyli 24 bajty danych; po znaku DLC musi wystąpić 48 znaków hex
  • D1ABCDEFF9AABBCCDDEEFF001122334455 – rozszerzona ramka CAN FD bez BRS o ID 0x1ABCDEFF, DLC 9, czyli 12 bajtów danych
  • b1239AABBCCDDEEFF001122334455 – standardowa ramka CAN FD z BRS o ID 0x123, DLC 9, czyli 12 bajtów danych
  • B1ABCDEFFA00112233445566778899AABBCCDDEEFF – rozszerzona ramka CAN FD z BRS o ID 0x1ABCDEFF, DLC A, czyli 16 bajtów danych

Opis formatu ramek nadawczych:

  • t i r oznaczaja standardowe ID 11-bit
  • T i R oznaczaja rozszerzone ID 29-bit
  • d i D oznaczają CAN FD bez BRS
  • b i B oznaczają CAN FD z BRS
  • po ID występuje pojedynczy znak DLC w zapisie hex
  • dla ramek Classic CAN DLC 0-8 odpowiada liczbie bajtów danych
  • dla ramek FD parser mapuje DLC zgodnie ze standardem CAN FD: 9=12A=16B=20C=24D=32E=48F=64 bajty
  • dla ramek RTR nie podaje się pola danych po znaku DLC
  • wszystkie komendy należy zakończyć znakiem CR albo LF

Ograniczenia SLCAN w tej wersji:

  • tylko CAN1 jest obsługiwany przez parser SLCAN (wynika to z protokołu)
  • do hosta są raportowane tylko ramki nie-FD i o długości do 8 bajtów
  • komendy FMmVNs są rozpoznane w parserze, ale nie realizują pełnej funkcji użytkowej
  • wyjście ramek do hosta zawiera znacznik czasu w ms przesyłany jako modulo 0xFFFF

7. Licencje

System licencji wykorzystuje UID mikrokontrolera oraz zapis 32-bajtowych hashy SHA-256 w obszarze Flash użytkownika.

Aktywowane funkcje licencyjne:

  • Extended CAN filters
  • CAN relay trigger
  • CAN button trigger

Funkcja Store config (zapis konfiguracji do pamięci nieulotnej) jest w trakcie przygotowywania.

8. Funkcje triggerow

8.1 Relay trigger

Każdy przekaźnik Q1–Q4 może reagować na dopasowaną ramkę CAN.

Dostępne tryby:

  • ON/OFF
  • TOGGLE
  • PULSE z czasem trwania w milisekundach

Dopasowanie obejmuje:

  • numer magistrali
  • identyfikator CAN
  • typ ID standard lub extended
  • RTR lub DATA
  • Classic CAN albo CAN FD
  • BRS
  • długość danych
  • maskę i wartość danych

8.2 Input trigger

Wejścia i przyciski mogą wysyłać skonfigurowaną ramkę CAN po zdarzeniu:

  • rising (naciśnięcie przycisku / podanie sygnału 12V)
  • falling (puszczenie przycisku / zwolnienie sygnału 12V)
  • hold z okresowym interwałem – wysyłany w czasie wciśnięcia / podawania sygnału 12V na jedno z wejść Ix

Mapowanie wejść w komendzie inp_trig:

  • I1 do I4
  • B3 do B6 dla przycisków SW3–SW6

Mapowanie wejść w komendzie inp_trig_dis:

  • I1 do I4
  • B3 do B6 dla przycisków SW3–SW6

9. Szybki start

  1. Podlacz Nucleo-G474RE oraz CAN-FD HAT.
  2. Przeciągnij plik .hex na wirtualny pendrive.
  3. Otwórz terminal 115200 8N1.
  4. Po starcie wydaj komendę help.
  5. Sprawdź stan interfejsów komendą can_status.
  6. W razie potrzeby ustaw prędkości komendami can_speed i can_fd_speed.
  7. Wyślij testową ramkę przez can_tx.
  8. Aby przejść do SLCAN, naciśnij SW1 i użyj komend zgodnych z Lawicel na CAN1. Możesz wówczas wykorzystać inne oprogramowanie np. Savvy CAN.

10. Diagnostyka

  • Brak komunikacji po UART:
    • sprawdź 115200 8N1
    • sprawdź połączenie USART2
    • sprawdź czy host wysyła zakończenia linii CR lub LF
  • Brak ramek CAN:
    • sprawdź terminację 120 Ohm
    • sprawdź zgodność bitrate po obu stronach magistrali
    • sprawdź can_status
    • sprawdź czy magistrala nie jest w trybie can_silent
    • sprawdź czy dany interfejs nie został zamknięty komendą can_en <bus> D
  • Brak reakcji relay trigger lub input trigger:
    • sprawdź lic_get
    • potwierdź aktywną licencję dla odpowiedniej funkcji
    • sprawdź zgodność ID, typu ramki, długości i danych z maską
  • Brak pelnej obslugi SLCAN:
    • oczekiwane w tej wersji są ograniczenia do CAN1 oraz brak pełnej implementacji komend FMmVNs