13.5.15. Obsługa interfejsu pomiędzy łączem CAN a procesorem.
Przez cztery rejestry specjalne CANADR, CANDAT,CANCON i CANSTA mamy dostęp do kontrolera CAN-a oraz do logiki DMA. Rejestry CANCON i CANSTA mają różne znaczenie dla zapisu i odczytu.
Tab. 58 Rejestry SFR dla CAN-a.
Bity zarezerwowane (Reserved) są odczytywane jako stan wysoki. R=odczyt; W=zapis, R/W= odczyt/zapis.
ADRES |
DOST ĘP |
BIT |
|||||||
|
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CANADR |
|||||||||
DBH |
R/W |
DMA |
Reserved |
AutoInc |
CANA4 |
CANA3 |
CANA2 |
CANA1 |
CANA0 |
CANDAT |
|||||||||
DAH |
R/W |
CAND7 |
CAND6 |
CAND5 |
CAND4 |
CAND3 |
CAND2 |
CAND1 |
CAND0 |
CANCON |
|||||||||
D9H |
R |
Reserved |
Reserved |
Reserved |
WUI |
OI |
EI |
TI |
RI |
|
W |
RX0A |
RX1A |
WUM |
SLP |
COS |
RRB |
AT |
TR |
CANSTA |
|||||||||
D8H |
R |
BS |
ES |
TS |
RS |
TCS |
TBS |
DO |
RBS |
|
W |
RAMA7 |
RAMA6 |
RAMA5 |
RAMA4 |
RAMA3 |
RAMA2 |
RAMA1 |
RAMA0 |
Rejestr SFR CANADR
BIT |
SYMBOL |
Funkcja |
7 |
DMA |
kontrola logiki DMA |
6 |
- |
zarezerwowane |
5 |
AutoInc |
właczenie/wyłączenie autoinkremantacji adresu |
4 |
CANA4 |
pięć najmniej znaczących bitów adresu wewnętrznych rejestrów kontrolera CAN-a, do których dostęp odbywa się poprzez CANDAT. |
3 |
CANA3 |
|
2 |
CANA2 |
|
1 |
CANA1 |
|
0 |
CANA0 |
|
Rejestr SFR CANDAT
BIT |
SYMBOL |
Funkcja |
7 do 0 |
CAND7 do CAND0 |
Rejestr ten stanowi port dla obsługi(zapis, odczyt) wewnętrznych rejestrów kontrolera CAN-a, wybranych poprzez bity CANA4-CANA0 rejestru CANADR |
Rejestr SFR CANCON ( odczyt z rejestru)
Odczyt rejestru przerwań (IR) kontrolera CAN-a.
BIT |
SYMBOL |
Funkcja |
7 |
- |
zarezerwowane (stan wysoki) |
6 |
- |
|
5 |
- |
|
4 |
WUI |
przerwanie przebudzenia |
3 |
OI |
przerwanie przepełnienia |
2 |
EI |
przerwanie błędu |
1 |
TI |
przerwanie nadajnika |
0 |
RI |
przerwanie odbiornika |
Rejestr SFR CANCON ( zapis do rejestru)
Zapis do rejestru sterującego (CMR) kontrolera CAN-a.
BIT |
SYMBOL |
Funkcja |
7 |
RX0A |
Bity konfigurujące „budzenie” kontrolera CAN |
6 |
RX1A |
|
5 |
WUM |
ustawienie trybu uśpienia |
4 |
SLP |
uśpienie |
3 |
COS |
czyszczenie statusu błędu przepełnienia |
2 |
RRB |
zwolnienie bufor odbiorczy |
1 |
AT |
przerwanie bieżącej transmisji. |
0 |
TR |
żądanie przesłania komunikatu |
Rejestr SFR CANSTA ( odczyt z rejestru)
Odczyt rejestru statusu (SR) kontrolera CAN-a.
BIT |
SYMBOL |
Funkcja |
7 |
BS |
status magistali |
6 |
ES |
status błędu |
5 |
TS |
status transmisji |
4 |
RS |
status odbiornika |
3 |
TCS |
status zakonczenia transmisji |
2 |
TBS |
status dostępu do bufora nadajnika |
1 |
DO |
status przepełnienia |
0 |
RBS |
status bufora odbiornika. |
Rejestr SFR CANSTA ( zapis do rejestru)
Zapis do CANSTA ustawia adres w wewnętrznej pamięci danych procesora do transmisji poprzez DMA.
BIT |
SYMBOL |
Funkcja |
7 do 0 |
RAMA7 do RAMA0 |
ustawienie adresu w wewnętrznej pamięci danych procesora dla późniejszej transmisji poprzez mechanizm DMA. |
13.5.16 Automatyczna inkrementacja adresu.
Tryb automatycznej inkremantacji zapewnia szybki zapis i odczyt rejestrów kontrolera CAN-a. Jeśli bit CANADR.5 (AutoInc) jest ustawiony zawartość rejestru CANADR jest automatycznie zwiększana po każdej operacji zapisu lub odczytu poprzez CANDAT. Na przykład aby załadować komunikat do bufora nadajnika możemy zapisać 2AH do CANADR (AutoInc=1; Adres=0AH - początek bufora nadajnika) a następnie wpisywać dane komunikatu bajt po bajcie do CANDAT(nastąpi automatyczna inkrementacja adresu). Zwiększając CANADR poza XX111111B resetujemy bit CANADR.5 (AutoInc) uzyskując CANADR=XX000000B).
13.5.7 Transmisja poprzez DMA
Logika DMA pozwala na transmisje całych komunikatów (do 10 bajtów) pomiędzy wewnętrzna pamięcią RAM a kontrolerem CAN-a w czasie dwóch cykli maszynowych. Transmisja ta odbywa się w tle bez udziału procesora.
Transmisja DMA jest wykonywana po wcześniejszym wpisaniu adresu pamięci RAM (00H do FFH) do CANSTA i ustawieniu adresu bufora TX lub RX w rejestrze CANADR i równocześnie bitu CANADR.7 (DMA). Adres w pamięci RAM określa pierwszy bajt, który będzie transmitowany. Ustawienie bitu DMA powoduje automatyczne oszacowanie długości pola danych i dokonanie transmisji; dla transmisji TX-DMA długość pola danych jest wymagana pod adresem `RAM adres +1'
W przypadku transmisji TX-DMA wartość 8AH (adres 10) ma być zapisana w CANADR. Cały komunikat składający się z 2-bajtowego deskryptora i pola danych ( 0 do 8 bajtów) jest transmitowany do bufora TX począwszy od komórki pamięci `RAM adres'
Transmisja RX-DMA jest bardziej uniwersalna. Przez zapis zmiennej z przedziału 94H (adres 20) do 9DH (adres 29) do CANADR cały lub część komunikatu zaczynając od ustawionego adresu jest transmitowany do wewnętrznej pamięci danych. Pozwala to np. transfer tylko pola danych.
Po udanej transmisji poprzez DMA bit DMA jest resetowany.
Podczas transmisji poprzez DMA procesor może wykonywać następne instrukcje. Jednakże dostęp do rejestrów CANADR, CANDAT,CANCON czy CANSTA jest zabroniony. Po ustawieniu bitu DMA każde przerwanie jest zablokowane aż do końca transmisji.
Podczas stanu resetu (bit Reset Request jest ustawiony) transfer poprzez DMA jest niemożliwy.
13.5.18 Taktowanie magistrali i synchronizacja
Blok kontrolujący taktowanie magistrali (BTL - Bus Timing Logic) monitoruje linie magistrali poprzez wewnętrzny komparator i wykonuje następujące funkcje:
monitoruje stan magistrali
reguluje punkt próbkowania wewnątrz czasu trwania bitu
próbki poziomu magistrali używają logiki większościowej
synchronizacja strumienia bitów
twarda synchronizacja no początku komunikatu
resynchronizacja podczas transferu komunikatu
Konfigurację BTL wykonuje się podczas inicjalizacji kontrolera CAN-a poprzez trzy rejestry:
Control Register (Sync)
Bus Timing Register 0
Bus Timing Register 1
13.5.19 Taktowanie bitów
Czas trwania bitu jest liczbą cykli zegara systemowego. Czas trwania jednego bitu jest rezultatem dodania programowo ustawialnych odcinków czasu TSEG1 i TSEG2 i odcinka SYNCSEG.
13..5.19.1 Odcinek Synchronizacji (SYNCSEG)
Przychodzące zbocze bitu jest oczekiwane podczas tego stanu; ten stan odpowiada jednemu cyklowi zegara systemowego (1x tSCL)
13..5.19.2 Odcinek czasu 1 (TSEG1)
Ten odcinek czasu wyznacza umiejscowienie punktu próbkowania wewnątrz bitu. Ten punkt jest końcem TSEG1. TSEG1 jest ustawiany programowo ustawiana na 1 do 16 cykli zegara.
Właściwe ustawienie punktu próbkowania jest bardzo ważne dla poprawnego przebiegu transmisji. Musimy brać pod uwagę:
początek ramki powoduje wykonanie twardej synchronizacji wszystkich kontrolerów CAN-a pierwszym zboczem recessive-dominant.
Jednak podczas arbitrażu, kilka kontrolerów CAN-a może jednocześnie transmitować. Dlatego może to wymagać dwóch obliczeń s??
aby uniknąć próbkowania w niewłaściwym miejscu jest niezbędne objęcie dodatkowym buforem synchronizacji obu stron punktu próbkowania.
Głównymi przyczynami niewłaściwego próbkowania są:
niewłaściwa synchronizacja z powodu impulsu na linii magistrali
nieznaczna zmiana częstotliwości oscylatora kontrolera CAN-a powodująca błąd fazy
Odcinek czasu 1 składa się z odcinka dla kompensacji czasu propagacji i bufora synchronizacji bezpośrednio przed punktem próbkowania.
13..5.19.3 Odcinek czasu 2 (TSEG2)
Ten odcinek zapewnia:
dodatkowy czas na punkt próbkowania dla obliczeń późniejszego poziomu bitu ( np. dla arbitrażu)
odcinek bufora synchronizacji bezpośrednio po punkcie próbkowania
TSEG2 jest ustawiane programowo na od 1 do 8 cykli zegara systemowego
13..5.19.4 Szerokość skoku synchronizacji (SJW)
SJW definiuje maksymalną liczbę cykli zegarowych (tSCL) o które czas trwania bitu może być zwiększony lub zmniejszony podczas resynchronizacji.
SJW jest ustawiane programowo na od 1 do 4 cykli zegarowych.
13..5.19.5 Opóźnienie czasu propagacji (tprop)
Opóźnienie czasu propagacji wynosi:
tprop =2 x (fizyczne opóźnienie magistrali + opóźnienie komparatora wejściowego + opóźnienie sterownika wyjściowego)
tprop jest zaokrąglane do najbliższej wielokrotności tSCL.
13..5.19.5 Ograniczenia czasu bitu
Ograniczenia konfiguracji czasu bitu są podstawą wewnętrznych procesów. Są to:
tSEG2 ≥ 2tSCL
tSEG2 ≥ tSJW
tSEG1 ≥ tSEG2
tSEG1 ≥ tSJW + tprop.
Efektem trybu trzech próbkowań (SAM=HIGH) mamy wprowadzonie opóźnienia o jeden cykl zegara na magistrali. Mósimy zmodyfikować restrykcje:
tSEG2 ≥ 3tSCL
tSEG1 ≥ tSJW + tprop+2tSCL.
13..5.20 Synchronizacja
Synchronizacja jest wykonywana przez stan maszynowy w którym porównujemy przychodzące zbocze z aktualnym czasem bitu i dostosowujemy czas bitu przez twardą synchronizacje lub resynchronizację.
Ten typ synchronizacji zdarza się tylko na początku komunikatu.
Kontroler CAN-a synchronizuje się pierwszym zboczem recessive-to-dominant komunikatu (będącym czołowym zboczem bitu Start-Of-Frame komunikatu)
Resynchronizacja zdarza się podczas transmisji strumienia bitów komunikatu,aby zrekompesować :
zmiany częstotliwości oscylatora pojedynczych kontrolerów CAN-a.
zmiany wprowadzone przez przełączanie pomiędzy jednym nadajnikiem a drugim
Rezultatem resynchronizacji może być zwiększenie tSEG2 maksymalnie o tSJW lub zmniejszenie tSEG2 maksymalnie o tSJW :
tSEG1 ≤ tSCL[(TSEG1+1)+(SJW+1)]
tSEG1 ≥ tSCL[(TSEG1+1)+(SJW+1)].
Błąd fazy (e) zbocza jest określany poprzez pozycję zbocza w stosunku do SYNCSEG.
Wartość ta jest definiowana:
e = 0, jeśli zbocze pojawia się wewnątrz SYNCSEG
e > 0, jeśli zbocze pojawia się wewnątrz TSEG1
e < 0, jeśli zbocze pojawia się wewnątrz TSEG2.
Efektem resynchronizacji jest:
taki sam jak twardej synchronizacji jeśli wielkość błędu fazy jest mniejsza lub równa zmiennej tSJW.
zwiększenie czasu trwania bitu jeśli błąd fazy jest dodatni i większy od tSJW.
zmniejszenie czasu trwania bitu jeśli błąd fazy jest ujemny i mniejszy od tSJW.
13.5.20.1 Reguły synchronizacji
Reguły synchronizacji są następujące:
tylko jedna synchronizacja podczas trwania jednego bitu
zbocze jest używane do synchronizacji tylko jeśli wartość wykryta podczas wcześniejszego próbkowania różni się od wartości na magistrali bezpośrednio po zboczu.
twarda synchronizacja jest wykonywana gdy tylko pojawia się zbocze recessive-to-dominant na pustej magistrali.
pozostałe zbocza mogą być użyte do resynchronizacji.
????????