Rozdział 1. Założenia projektu

OpenDiag - STM32 CAN Tool | Rozdział 2. Architektura sprzętu


OpenDiag – Specyfikacja Projektu

Rozdział 1. Założenia projektu

1.1 Cel projektu

Celem projektu OpenDiag jest opracowanie uniwersalnego interfejsu diagnostycznego opartego o mikrokontroler STM32, przeznaczonego do komunikacji z magistralami CAN pojazdów samochodowych.

Pierwszym praktycznym zastosowaniem będzie pełna współpraca z programem FORScan dla pojazdów marki Ford, natomiast architektura projektu ma umożliwiać jego dalszy rozwój jako uniwersalnej platformy diagnostycznej.


1.2 Cele funkcjonalne

Pierwsza wersja projektu powinna umożliwiać:

  • komunikację z komputerem poprzez USB (CDC),
  • współpracę z programem FORScan,
  • emulację interfejsu zgodnego z ELM327,
  • obsługę magistrali HS-CAN,
  • obsługę magistrali MS-CAN,
  • odczyt oraz zapis ramek CAN,
  • monitorowanie ruchu CAN.

1.3 Cele długoterminowe

Projekt będzie rozwijany o kolejne funkcjonalności:

  • zgodność z rozszerzeniami STN,
  • obsługa trzeciej magistrali CAN (I-CAN lub innej),
  • własny binarny protokół komunikacyjny,
  • własna aplikacja diagnostyczna dla Linux i Windows,
  • analizator magistrali CAN,
  • logger ramek CAN,
  • zapis logów na kartę SD,
  • możliwość aktualizacji firmware przez USB,
  • obsługa kolejnych marek samochodów.

1.4 Zakres projektu

Projekt obejmuje:

Sprzęt

  • projekt firmware dla STM32,
  • projekt elektroniki interfejsu,
  • projekt własnej płytki PCB (w dalszym etapie).

Oprogramowanie

  • firmware mikrokontrolera,
  • biblioteki komunikacyjne,
  • aplikację komputerową.

Projekt nie obejmuje modyfikacji sterowników samochodu ani ingerencji w oprogramowanie modułów pojazdu.


1.5 Platformy sprzętowe

Platforma developerska

Na etapie rozwoju wykorzystywana będzie:

STM32 Nucleo-F767ZI

Powody wyboru:

  • zintegrowany ST-Link,
  • USB Device,
  • Virtual COM,
  • trzy kontrolery CAN,
  • duża liczba wyprowadzeń.

Platformy docelowe

Po zakończeniu prac planowane jest przeniesienie projektu na:

  • STM32H723ZG,
  • STM32H562RG,
  • własną płytkę PCB.

1.6 Systemy operacyjne

Interfejs powinien współpracować z:

  • Linux,
  • Windows.

System Linux będzie główną platformą rozwojową.


1.7 Obsługiwane programy

Etap pierwszy

  • FORScan

Etapy późniejsze

  • własna aplikacja OpenDiag,
  • terminal szeregowy,
  • narzędzia diagnostyczne wykorzystujące ELM327.

1.8 Obsługiwane protokoły

Pierwsza wersja:

  • USB CDC,
  • ELM327 (podstawowy zestaw komend),
  • CAN 2.0.

Rozwój:

  • STN,
  • ISO-TP (ISO 15765-2),
  • OBD-II,
  • UDS (ISO 14229).

1.9 Wymagania jakościowe

Projekt powinien być:

  • modułowy,
  • łatwy do rozbudowy,
  • łatwy do testowania,
  • przenośny pomiędzy rodzinami STM32,
  • dobrze udokumentowany,
  • rozwijany z wykorzystaniem systemu kontroli wersji Git.

1.10 Założenia projektowe

Przyjmujemy następujące założenia:

  • Nie tworzymy klona ELM327. Implementujemy własny firmware zgodny z protokołem ELM327 w zakresie wymaganym przez FORScan i inne aplikacje.
  • Warstwa ELM327 jest jedną z funkcji projektu. W przyszłości interfejs będzie mógł pracować również z własnym protokołem binarnym, bez ograniczeń wynikających z ELM327.
  • Kod ma być niezależny od konkretnego mikrokontrolera. Logika aplikacji nie powinna odwoływać się bezpośrednio do funkcji HAL.
  • Projekt rozwijany jest iteracyjnie. Każdy etap implementacji kończy się działającą i możliwą do przetestowania wersją firmware.

Uwagi do rozdziału 1

Mam jedną propozycję, która może wpłynąć na cały projekt.

Obecnie używamy nazwy OpenDiag. Warto sprawdzić później, czy nie jest już używana przez inny projekt open source. Jeśli okaże się zajęta, wybierzemy inną nazwę (np. STMDiag, OpenCANDiag, OpenVehicleDiag), ale na etapie specyfikacji możemy spokojnie pozostać przy nazwie roboczej OpenDiag.


Moim zdaniem Rozdział 1 jest miejscem na decyzje projektowe, a nie na szczegóły techniczne. Dzięki temu kolejne rozdziały (sprzęt, architektura i implementacja) będą mogły się do niego odwoływać jako do "kontraktu" określającego, co projekt ma osiągnąć.