STlogo

TN1348 SPC58x Konfiguriranje CAN i CAN-FD filtera

proizvod

Uvod

Ova tehnička napomena opisuje kako konfigurirati prihvatljive filtere za CAN kontrolere ugrađene u SPC58x automobilske mikrokontrolere. Dokument opisuje konfiguracije registra i pruža neke nprample da ubrzate konfiguraciju filtera. Ove konfiguracije se mogu usvojiti za sve mikrokontrolere u ovoj porodici sa manjim odstupanjima. Bivšiampdatoteke u ovom dokumentu su zasnovane na SPC584Cx/SPC58ECx 32-bitnom MCU.

CAN overview

SPC584Cx/SPC58ECx ima osam CAN instanci ugrađenih u dva različita podsistema kao što je dokumentirano u referentnom priručniku uređaja Odjeljak Dodatak A Referentni dokumenti.
Svi CAN kontroleri u istom podsistemu će dijeliti resurse kao što su RAM memorija, sat, itd. Svaki CAN podsistem se sastoji od sljedećih glavnih blokova:

  • Modularna CAN jezgra: registrima CAN modula se može pristupiti pomoću Generic Slave Interface (GSI). Periferni GSI modul djeluje kao zahtjev od svakog mastera.
  • CAN-RAM arbiter: to je dodatna logika za arbitražu među zahtjevima za pristup RAM-u od strane različitih CAN kontrolera.
  • SRAM: CAN podsistem će se povezati sa eksternom RAM memorijom koristeći ovaj interfejs, to je SRAM.
  • ECC kontroler: sadrži logiku za izračunavanje i validaciju koda korekcije na SRAM memoriji.

Za SRAM interfejs i organizaciju memorije pogledajte referentni priručnik uređaja Odeljak Dodatak A Referentni dokumenti.

Uvod u filtriranje

Logika CAN filtera vam omogućava da konfigurišete filtere na različite načine. Za nprampOsim toga, poruke koje prolaze filtriranje prihvatanja mogu se pohraniti u Rx FIFO (0 ili 1) ili u namjenske rx bafere. Svaki filter se može konfigurisati kao filter prihvatanja ili odbijanja, a takođe se može omogućiti ili onemogućiti. Za filter prihvatanja, svaka lista filtera se izvodi od stavke #0 do prve odgovarajuće stavke u listi filtera. Prije korištenja filtera obavezno je konfigurirati početnu adresu i brojeve filtera za rezervisanje dijela RAM-a za poruke. Slika ispod pokazuje a view mape zajedničke memorije i registara (dakle početne adrese za svaku sekciju).

Slika 1. Konfiguracija RAM-a za poruke nprample

Poruka inicijalizacije RAM-a

Prije korištenja bilo kakvog filtera, obavezno je konfigurirati relevantno RAM područje poruka u koje će biti pohranjene. Da bi to uradila, softverska aplikacija mora da upiše pomak (slovima) od osnovne adrese RAM-a poruke svake oblasti filtera. Broj filtera za svako područje mora biti konfiguriran, tako da kontroler može razumjeti gdje se završava svako povezano memorijsko područje filtera. U ovom dokumentu, kao npr.ampčetiri filtera, biće konfigurisana za standardne identifikatore (11 bita) i četiri filtera za proširene identifikatore (29 bita), tako da rezervišite deo RAM-a za poruke za skladištenje 11-bitnih filtera, a drugi za 29-bitne filtere. Za konfiguriranje početne adrese područja standardnog ID filtera, softver mora upisati FLSSA polje SIDFC registra (Standard ID filter konfiguracijski registar). Za proširene ID filtere potrebno je upisati FLESA polje registra XIDFC (Registar konfiguracije filtera proširenog ID-a). Polja FLSSA i FLESA treba da sadrže memorijski pomak “u riječima” od RAM osnovne adrese poruke. Ova aplikacija konfigurira četiri standardna filtera na nultom pomaku i četiri proširena filtera

Za standardnu ​​konfiguraciju filtera:

  • FLSSA = 0x0: pomak u odnosu na osnovnu adresu RAM-a za poruke je nula, tako da područje počinje na početku RAM-a za poruke.
  • LSS = 4: ovo je broj filtera za konfiguraciju. Svaki filter je sastavljen od `jedne` 32-bitne riječi.
    U ovoj konfiguraciji dio memorije počinje od pomaka nule i ima veličinu od četiri riječi.

Napomena: CAN kontroler nema kontrolni mehanizam za konfigurisanje RAM-a za poruke, to znači da programer mora paziti da se ne preklapaju konfigurisana RAM područja. Sljedeća slika pokazuje kako konfigurirati dio memorije za pohranjivanje proširenih filtera za identifikaciju.

Da biste konfigurirali RAM područje za pohranjivanje proširenih filtera, potrebno je programirati sljedeće vrijednosti u FLESA i LSE poljima.

  • FLESA = 0x04: pomak u riječima u odnosu na osnovnu adresu RAM-a poruke. To je zato što je u prethodno konfiguriranom području filtera bilo rezervirano 0x04 riječi za standardne ID filtere i tada je minimalni upotrebljivi pomak 0x04.
  • LSE = 4: ovo je broj filtera za konfiguraciju. Za prošireni ID filter je sastavljen od `dvije` 32-bitne riječi.

U ovoj konfiguraciji dio memorije koji počinje od ofseta 0x04 (riječi) ima veličinu od osam riječi (četiri filtera po dvije riječi). Stoga je minimalni pomak za sljedeću konfigurabilnu memorijsku oblast 0x0C riječi. Svi delovi RAM-a za poruke moraju biti konfigurisani uzimajući u obzir broj i veličinu elemenata koji će biti pohranjeni u sekciji bez preklapanja bilo kojih sekcija.
Napomena: da biste pretvorili pomak riječi u pomak u bajtovima, potrebno je pomnožiti vrijednost riječi sa četiri.

Exampbroj standardnih ID filtera

Nakon konfigurisanja RAM-a za poruke, možete konfigurisati filtere uređaja.
Svaki filterski element se može konfigurirati kao:

  • Filter opsega
  • Dvostruki ID filter
  • Klasični filter
  • Filter za namjenski rx bafer (filter sa jednim ID-om)

Sljedeća slika pokazuje kako konfigurirati četiri različite vrste filtera za standardne identifikatore (11-bitne identifikatore). Koristite sljedeći registar filterskih elemenata za STANDARD ID.

Filter opsega za RX FIFO0

Ispod bivšegamppolje filtriranja za pohranjivanje poruka s identifikatorima u rasponu [0x16, 0xF6] u prijemni FIFO 0.
Vrijednost registra (HEX): 0x081600F6
Vrijednost registra (BIN): 00 001 00000010110 (00000) 00011110110

Napomena: u svim bivšimampako su dati u ovom dokumentu, bitovi u zagradama se zadržavaju na zadanoj vrijednosti. Vrijednosti polja:

  • SFT -> `00` -> Filter raspona od SFID1 do SFID2
  • SFEC -> `001` -> Pohraniti u Rx FIFO 0 ako se filter podudara
  • SFID1 -> `00000010110` -> Prvi ID raspona filterskih elemenata standardnog ID-a (0x16)
  • SFID2 -> `00011110110` -> Drugi ID raspona filterskih elemenata standardnog ID (0xF6)
Dvostruki filter za RX FIFO1

Ispod je bivšiampfilter dvostrukog ID-a za pohranjivanje identifikatora poruka 0 x 0A ili 0 x FF u FIFO 1.
Vrijednost registra (HEX): 0x500A00FF
Vrijednost registra (BIN): 01 010 00000001010 (00000) 00011111111
Vrijednosti polja:

  • SFT -> `01` -> Dual ID filter za SFID1 ili SFID2
  • SFEC -> `010` -> Pohraniti u Rx FIFO 1 ako se filter podudara
  • SFID1 -> `00000001010` -> Prvi ID standardnog dual ID filter elementa
  • SFID2 -> `00011111111` -> Drugi ID standardnog dual ID filter elementa
Rx namjensko filtriranje bafera

Ispod je bivšiample za pohranjivanje poruka s identifikacijom 0 x 7F0 u namjenski rx bafer #0.
Koristeći namjenski bafer, moguće je filtrirati samo jedan ID poruke i to onaj koji je napisan u polju SFID1.
Vrijednost registra (HEX): 0x3FF00000
Vrijednost registra (BIN): 00 111 11111110000 (00000) 00 (000) 000000

  • SFT -> `00` -> ova vrijednost nije važna jer filtriranje za pohranu u namjenski RX BUFFER iu ovom slučaju SFT vrijednost se zanemaruje (pogledajte slučaj opisa SFEC polja `111`)
  • SFEC -> `111` -> Pohraniti u namjenski rx bafer ako se filter podudara
  • SFID1 -> `11111110000` -> standardni ID koji će filter prihvatiti (0x7F0)
  • SFID2[10, 9] -> `00` -> ovo polje odlučuje da li je primljena poruka pohranjena u rx bafer ili se tretira kao poruka A, B ili C sekvence poruke za otklanjanje grešaka. U ovom slučaju, softverska aplikacija želi pohraniti poruku u rx bafer.
  • SFID2[0,5] -> `000000` → indeks namjenskog bafera rx gdje će se pohraniti odgovarajuća poruka (ako je konfiguriran N namjenski bafer rx, ovaj indeks može biti u rasponu [0, N -1]) .U ovom slučaju poruka se pohranjuje u namjenski bafer #0.
Klasični filter za RX FIFO0

Ovaj example pokazuje kako pohraniti poruke sa identifikatorom u rasponu [0x688, 0x68F] u RX FIFO 0. Za klasični filter, par identifikator/maska ​​mora biti definiran. Identifikator mora biti upisan u SFID1, a maska ​​u SFID2 polja filterskog elementa. U klasičnom filteru, ID poruke koje prolaze filter dobijaju se primenom maske na identifikator na sledeći način:

  • ovo je značenje bitova filtera -> 1 = mora se podudarati (0 = nije briga);
  • ima filter sa maskom sastavljenom od svih "1", samo će jedan identifikator proći na filter (onaj koji je napisan u polju SFID1) dok će filter koji ima masku sastavljenu od svih "0" proći svi identifikatori filter.

Očigledno, ovo su najjednostavniji filteri. Ispod je objašnjenje kako organizirati filter raspona za standardni ID u rasponu [0x688, 0x68F] koji pohranjuje primljene poruke u RX FIFO 0. Ovo je standardni filter poruka, tako da ćemo dati vrijednosti SFID1 = identifikator i SFID2 = Maska.
Vrijednost registra (HEX): 0x8E8B07F8
Vrijednost registra (BIN): 10 001 11010001011 00000 11111111000

  • SFT -> `10` -> Klasični filter: SFID1 = filter, SFID2 = maska
  • SFEC -> `001` -> Pohraniti u Rx FIFO 0 ako se filter podudara
  • SFID1 = 110 1000 1011 (identifikator 0x68B)
  • SFID2 = 111 1111 1000 (Maska0x7F8)

Primjenom maske na identifikator (malo) sa značenjem bita maske (1 = mora odgovarati 0 = nije briga) nalazimo sljedeći filter raspona gdje simbol `X` predstavlja nulu ili jedan.

Filter = 110 1000 1XXX

Tada će sve standardne poruke u rasponu [0x688, 0x68F] proći filter.

Konfiguracija proširenih ID filtera

Isti tipovi filtera mogu se implementirati i za proširene identifikatore (29-bitne identifikatore).

Filter proširenog opsega za RX FIFO0

U ovom exampOvaj filter će pohraniti poruke sa identifikatorima u rasponu [0xFFFFFF, 0x1FFFFFFF] u FIFO 0.
Ispod vrijednosti registra:

  • Vrijednost registra F0 (HEX): 0x200FFFFF
  • Vrijednost registra F1 (HEX): 0xDFFFFFFF
  • Vrijednost FO registra (BIN): 001 00000000011111111111111111111
  • Vrijednost registra F1 (BIN): 11 (0) 11111111111111111111111111111

Vrijednosti polja:

  • EFEC -> `001` -> Pohraniti u Rx FIFO 0 ako se filter podudara
  • EFID1 ->`00000000011111111111111111111` -> Prvi ID filter elementa proširenog ID-a
    raspon (0xFFFFF)
  • EFT -> `11` -> Filter raspona od SFID1 do SFID2
  • SFID2 ->`11111111111111111111111111111` -> Drugi ID opsega filterskih elemenata standardnog ID-a (0x1FFFFFFF)
Dvostruki ID filter za FIFO 1

U ovom exampdualni ID filter će pohraniti poruke koje imaju identifikatore 0xAAAA ili 0xBBBBB u FIFO 1.

  • Vrijednost registra F0 (HEX): 0x400AAAA
  • Vrijednost registra F1 (HEX): 0x400BBBBB
  • Vrijednost FO registra (BIN): 010 000000000 10101010101010101010
  • Vrijednost registra F1 (BIN): 01 (0) 00000000010111011101110111011

Vrijednosti polja:

  • EFEC -> `010` -> Pohraniti u Rx FIFO 1 ako se filter podudara
  • EFID1 -> `00000000010101010101010101010` -> Prvi prošireni ID (0xAAAAA)
  • EFT -> `01` -> Dual ID filter za EFID1 ili EFID2
  • EFID2 -> `00000000010111011101110111011` -> Drugi prošireni ID (0x000BBBBB)
Namjenski rx bafer

U ovom exampda će filtriranje pohraniti poruke koje imaju identifikator 0x000AAAAA u namjenski rx bafer #1. Također u ovom scenariju, korištenjem namjenskog bafera može se filtrirati samo jedan ID poruke i to onaj koji je upisan u polje EFID1.

  • ID filter za namjenski rx bafer (ID = 0x000AAAAA)
  • Vrijednost registra F0 (HEX): 0xE00AAAA
  • Vrijednost registra F1 (HEX): 0x00000001
  • Vrijednost FO registra (BIN): 111 00000000010101010101010101010
  • Vrijednost registra F1 (BIN): 00 (0) 000000000000000000 00 (000) 000001

Vrijednosti polja:

  • EFEC -> `111` -> Pohraniti u namjenski rx bafer ako se filter podudara
  • EFID1 -> `00000000010101010101010101010` -> prošireni ID koji će filter prihvatiti
    (0x000AAAA)
  • EFT -> `00` -> ova vrijednost nije važna jer filtriranje radi pohranjivanja u namjenski RX
    BUFFER i u ovom slučaju EFT vrijednost se zanemaruje (pogledajte slučaj opisa EFEC polja `111`)
  • EFID2[10, 9] -> `00` -> ovo polje odlučuje da li će primljena poruka biti pohranjena u Rx bafer ili se tretira kao poruka A, B ili C sekvence poruke za otklanjanje grešaka. U ovom slučaju softverska aplikacija želi pohraniti poruku u Rx bafer
  • EFID2[0,5] -> `000001` -> indeks namjenskog rx bafera gdje će se pohranjivati ​​odgovarajuća poruka (ako ste konfigurirali N namjenskog rx bafera ovaj indeks može biti u rasponu [0, N -1]). U ovom slučaju poruka se pohranjuje u namjenski bafer #1
Klasični filter za rx FIFO1

U ovom exampNakon toga, programiranje filtera će pohraniti poruke pohranjene sa identifikatorom u rasponu [0 x FFFFF, 0 x1FFFFFF] u rx FIFO 1. Podrazumjeva se da je metoda maskiranja ista kao i standardni ID filteri. Ispod je objašnjenje kako programirati filter proširenog ID raspona u bijesu [0 x FFFFF, 0 x 1FFFFFF] koji pohranjuje primljene poruke u rx FIFO 1. Ovo je filter za proširene poruke, tako da ćemo dati vrijednosti EFID1 = identifikatoru i EFID2 = Maska

  • Vrijednost registra F0 (HEX): 0x400FFFFF
  • Vrijednost registra F1 (HEX): 0x9E0FFFFF
  • Vrijednost registra F0 (BIN): 010 00000000011111111111111111111
  • Vrijednost registra F1 (BIN): 10 (0) 11110000011111111111111111111
  • EFT > `10` -> Klasični filter: EFID1 = filter, EFID2 = maska
  • EFEC -> `010` -> Pohraniti u Rx FIFO 1 ako se filter podudara
  • EFID1 = 0 0000 0000 1111 1111 1111 1111 1111 (Identifikator 0xFFFFF)
  • EFID2 = 1 1110 0000 1111 1111 1111 1111 1111 (Maska 0x1E0FFFFF)

Primjenom maske na identifikator (bit) sa značenjem bita maske (1 = mora odgovarati 0 = nije briga) nalazimo sljedeći filter opsega gdje simbol `X` predstavlja nulu ili jedan.

Filter = 0 000X XXXX 1111 1111 1111 1111 1111

Dakle, sve proširene poruke u rasponu [0xFFFFF, 0x1FFFFF] će proći filter.

Dodatak A Referentni dokumenti

  • SPC584Cx/SPC58ECx Referentni priručnik
  • SPC584Cx/SPC58ECx list s podacima

Dodatak B Akronimi i kratice

Skraćenica Potpuno ime
CAN Mreža kontrolera
FD Fleksibilna brzina prenosa podataka
Istorija revizije dokumenta
Datum Verzija Promjene
01-Mar-2021 1 Prvo izdanje.

VAŽNA OBAVIJEST - MOLIMO PAŽLJIVO PROČITAJTE

STMicroelectronics NV i njegove podružnice („ST“) zadržavaju pravo da u bilo kojem trenutku bez najave izvrše izmene, ispravke, poboljšanja, modifikacije i poboljšanja ST proizvoda i / ili ovog dokumenta. Kupci bi trebali dobiti najnovije relevantne informacije o ST proizvodima prije naručivanja. ST proizvodi se prodaju prema odredbama i uslovima prodaje ST koji su na snazi ​​u trenutku potvrde narudžbe.

Kupci su isključivo odgovorni za izbor, odabir i upotrebu ST proizvoda, a ST ne preuzima odgovornost za pomoć u prijavi ili dizajn proizvoda kupca.

ST ovdje ne daje nikakvu licencu, izričitu ili impliciranu, za bilo koje pravo intelektualne svojine.

Preprodaja ST proizvoda sa odredbama koje se razlikuju od informacija navedenih ovde poništava svaku garanciju koju ST daje za takav proizvod.

ST i ST logo su zaštitni znakovi ST. Za dodatne informacije o ST zaštitnim znakovima, pogledajte www.st.com/trademarks. Svi ostali nazivi proizvoda ili usluga vlasništvo su njihovih vlasnika.

Informacije u ovom dokumentu zamjenjuju i zamjenjuju informacije koje su prethodno date u prethodnim verzijama ovog dokumenta.

© 2021 STMicroelectronics – Sva prava zadržana

Dokumenti / Resursi

ST TN1348 SPC58x Konfiguriranje CAN i CAN-FD filtera [pdfUpute
TN1348, SPC58x Konfiguriranje CAN i CAN-FD filtera

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *