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 komendycan_tx <bus> <id_hex> <S|E> <D|R> <C|F|B> <len> [data_hex]– wysłanie ramki CAN lub CAN FDcan_status– status wszystkich magistral, forwarding, bitrate i listen-onlycan_en <bus> <E|D>– włączenie lub wyłączenie magistralican_silent <bus> <E|D>– włączenie lub wyłączenie listen-onlycan_fwd_set <source_bus> <target_bus> <0|1>– routing z CAN do CAN lub z CAN do aktywnego protokołu, gdzietarget_bus = 0oznacza protokółcan_speed <bus> <bitrate>– ustawienie bitrate nominalnejcan_fd_speed <bus> <bitrate>– ustawienie bitrate fazy danych CAN FDcan_filter <bus> <idx> <M|R|D> <id1_hex> <id2_hex> <S|E> <R|N|A>– konfiguracja filtra CANcan_filters_get <bus>– odczyt listy filtrówrly_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 CANrly_trig_get <relay>– odczyt konfiguracji relay triggerinp_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ściuinp_trig_dis <input> [R|F|H]– wyłączenie triggera wejściainp_trig_get– odczyt konfiguracji input triggerlic <idx> <hash64>– zapis hasha licencyjnego do Flashlic_get– UID urządzenia, zawartość slotów licencji i status aktywnych funkcji
Znaczenie skrótów w CLI:
SiEoznaczają identyfikator standard albo extendedDiRoznaczają DATA albo RTRC,F,Boznaczają odpowiednio Classic CAN, CAN FD oraz CAN FD z BRS- w
can_filter:M= mask,R= range,D= dual, a akcje toR= reject,N= none,A= accept - w
rly_trig:S= set,C= clear,T= toggle,P= pulse - w
inp_trig:R= rising,F= falling,H= hold
Przykłady komend CLI:
helphelp can_txcan_tx 1 1F0 S D C 8 1122334455667788can_tx 3 123 S D B 12 00112233445566778899AABBcan_speed 1 500000can_fd_speed 1 2000000can_en 2 Dcan_silent 2 Ecan_fwd_set 1 2 1can_fwd_set 2 0 1can_filter 1 0 M 123 7FF S Alic_get
Ograniczenia CLI wynikające z aktualnego kodu:
- komenda
can_filterwymaga 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 CAN1C– close CAN1Sx– ustawienie bitrate nominalnej dla CAN1Yx– ustawienie bitrate fazy danych CAN FD dla CAN1t,T– transmisja klasycznych ramek DATAr,R– transmisja klasycznych ramek RTRd,D– transmisja CAN FD bez BRSb,B– transmisja CAN FD z BRS
Mapowanie bitrate SLCAN:
S0= 10000S1= 20000S2= 50000S3= 100000S4= 125000S5= 250000S6= 500000S8= 1000000
Mapowanie bitrate CAN FD data w SLCAN:
Y1= 1000000Y2= 2000000Y4= 4000000Y5= 5000000Y8= 8000000
Przykładowe ramki i komendy SLCAN:
O– otwarcie CAN1 do pracy w trybie SLCANC– zamknięcie CAN1S6– ustawienie nominalnej prędkości CAN1 na 500000 bpsY2– ustawienie prędkości fazy danych CAN FD na 2000000 bpst12381122334455667788– standardowa ramka Classic CAN DATA o ID0x123, długości 8 bajtów i danych11 22 33 44 55 66 77 88T1ABCDEFF411223344– rozszerzona ramka Classic CAN DATA o ID0x1ABCDEFF, długości 4 bajtów i danych11 22 33 44r3210– standardowa ramka RTR o ID0x321i długości 0R1ABCDEFF8– rozszerzona ramka RTR o ID0x1ABCDEFFi długości 8d123CAA55AA55AA55AA55AA55– standardowa ramka CAN FD bez BRS o ID0x123, DLCC, czyli 24 bajty danych; po znaku DLC musi wystąpić 48 znaków hexD1ABCDEFF9AABBCCDDEEFF001122334455– rozszerzona ramka CAN FD bez BRS o ID0x1ABCDEFF, DLC9, czyli 12 bajtów danychb1239AABBCCDDEEFF001122334455– standardowa ramka CAN FD z BRS o ID0x123, DLC9, czyli 12 bajtów danychB1ABCDEFFA00112233445566778899AABBCCDDEEFF– rozszerzona ramka CAN FD z BRS o ID0x1ABCDEFF, DLCA, czyli 16 bajtów danych
Opis formatu ramek nadawczych:
tiroznaczaja standardowe ID 11-bitTiRoznaczaja rozszerzone ID 29-bitdiDoznaczają CAN FD bez BRSbiBoznaczają CAN FD z BRS- po ID występuje pojedynczy znak DLC w zapisie hex
- dla ramek Classic CAN DLC
0-8odpowiada liczbie bajtów danych - dla ramek FD parser mapuje DLC zgodnie ze standardem CAN FD:
9=12,A=16,B=20,C=24,D=32,E=48,F=64bajty - 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
F,M,m,V,N,ssą 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:
I1doI4B3doB6dla przycisków SW3–SW6
Mapowanie wejść w komendzie inp_trig_dis:
I1doI4B3doB6dla przycisków SW3–SW6
9. Szybki start
- Podlacz Nucleo-G474RE oraz CAN-FD HAT.
- Przeciągnij plik
.hexna wirtualny pendrive. - Otwórz terminal 115200 8N1.
- Po starcie wydaj komendę
help. - Sprawdź stan interfejsów komendą
can_status. - W razie potrzeby ustaw prędkości komendami
can_speedican_fd_speed. - Wyślij testową ramkę przez
can_tx. - 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ą
- sprawdź
- Brak pelnej obslugi SLCAN:
- oczekiwane w tej wersji są ograniczenia do CAN1 oraz brak pełnej implementacji komend
F,M,m,V,N,s
- oczekiwane w tej wersji są ograniczenia do CAN1 oraz brak pełnej implementacji komend

