TN1348 SPC58x Konfigirasyon filtè CAN ak CAN-FD
Entwodiksyon
Nòt teknik sa a dekri kijan pou konfigirasyon filtè akseptasyon pou kontwolè CAN entegre nan mikrokontwolè otomobil SPC58x. Dokiman an dekri konfigirasyon enskri yo epi li bay kèk ansyenample pou pi vit konfigirasyon filtè an. Konfigirasyon sa yo ka adopte pou tout mikrokontwolè nan fanmi sa a ak divèjans minè. Ansyen anamples nan dokiman sa a baze sou SPC584Cx/SPC58ECx 32-bit MCU.
KAPAB souview
SPC584Cx/SPC58ECx gen uit egzanp CAN entegre nan de sous-sistèm diferan jan yo dokimante nan manyèl referans aparèy la Seksyon Anèks A Dokiman referans.
Tout kontwolè CAN yo nan menm subsistèm nan pral pataje resous tankou memwa RAM, revèy, elatriye. Chak subsistèm CAN konstitye pa gwo blòk sa yo:
- Modilè CAN nwayo: Ou ka jwenn aksè nan rejis modil CAN yo lè l sèvi avèk Jeneric Slave Interface (GSI). Modil GSI periferik la aji kòm yon demann nan men chak mèt.
- CAN-RAM abit: li se yon lojik adisyonèl pou abitraj nan mitan demann yo pou aksè RAM pa kontwolè yo divès kalite CAN.
- SRAM: sous-sistèm CAN an pral koòdone ak yon RAM ekstèn lè l sèvi avèk koòdone sa a, li se SRAM la.
- Kontwolè ECC: li gen lojik pou kalkile ak valide kòd koreksyon an sou memwa SRAM la.
Pou koòdone SRAM ak òganizasyon memwa, al gade nan manyèl referans aparèy la Seksyon Anèks A Dokiman referans.
Filtrage entwodiksyon
CAN filtre lojik pèmèt ou konfigirasyon filtè yo nan divès fason. Pou egzanpample, mesaj yo ki pase filtraj akseptasyon an ka estoke nan Rx FIFO (0 oswa 1) oswa nan tanpon rx dedye. Chak filtè ka configuré kòm yon filtè akseptasyon oswa rejè epi yo ka tou aktive oswa enfim. Pou filtre akseptasyon, chak lis filtre fèt soti nan atik #0 rive nan premye atik ki matche ak nan lis filtre a. Anvan ou sèvi ak filtè li obligatwa pou konfigirasyon adrès la kòmanse ak nimewo yo nan filtè a rezève yon pati nan RAM mesaj. Figi ki anba a montre a view nan kat memwa pataje ak rejis yo (kidonk adrès yo kòmanse pou chak seksyon).
Figi 1. Mesaj RAM konfigirasyon egzanpample
Inisyalizasyon RAM mesaj
Anvan w itilize nenpòt filtè, li obligatwa pou konfigirasyon zòn RAM ki enpòtan nan mesaj kote yo pral estoke yo. Pou fè sa, aplikasyon lojisyèl an dwe ekri konpanse a (nan mo) soti nan adrès la baz mesaj RAM nan chak zòn filtre. Yo dwe konfigirasyon kantite filtè pou chak zòn, pou kontwolè a ka konprann ki kote chak zòn memwa filtè ki gen rapò fini. Nan dokiman sa a, tankou ansyen.ample kat filtè, yo pral configuré pou idantifyan estanda (11 Bits) ak kat filtè pou idantifyan pwolonje (29 Bits), kidonk, rezève yon pòsyon nan RAM mesaj nan magazen filtè 11-bit ak yon lòt pou filtè 29-bit. Pou konfigirasyon adrès la kòmanse nan zòn nan filtre id estanda, lojisyèl an dwe ekri jaden FLSSA nan rejis SIDFC (Standard ID filter configuration register). Pou filtè ID pwolonje li nesesè pou ekri jaden FLESA nan rejis XIDFC (Enskripsyon konfigirasyon filtè ID pwolonje). Jaden FLSSA ak FLESA yo ta dwe genyen konpanse memwa "an mo" ki soti nan adrès baz RAM mesaj la. Aplikasyon sa a configure kat filtè estanda nan konpanse zewo ak kat filtè pwolonje
Pou konfigirasyon filtre estanda:
- FLSSA = 0x0: konpanse nan adrès baz RAM mesaj la se zewo, kidonk zòn nan kòmanse nan kòmansman RAM Mesaj la.
- LSS = 4: sa a se kantite filtè yo konfigirasyon. Chak filtè konpoze pa yon mo 32 bits.
Nan konfigirasyon sa a yon pòsyon nan memwa kòmanse nan konpanse zewo epi ki gen yon gwosè kat mo.
Nòt: Kontwolè CAN la pa gen okenn mekanis kontwòl pou konfigirasyon RAM mesaj la, sa vle di ke Developer a dwe fè atansyon pa sipèpoze zòn yo RAM configuré. Figi sa a montre kijan pou konfigirasyon yon pati nan memwa pou estoke filtè idantifikasyon pwolonje.
Pou konfigirasyon zòn RAM pou estoke filtè pwolonje li nesesè pou pwograme valè sa yo nan jaden FLESA ak LSE.
- FLESA = 0x04: konpanse a nan mo ki gen rapò ak adrès baz RAM mesaj. Sa a paske nan zòn filtè konfigirasyon anvan li te rezève mo 0x04 pou filtè idantite estanda ak Lè sa a, konpanse minimòm ki ka itilize se 0x04.
- LSE = 4: sa a se kantite filtè yo konfigirasyon. Pou ID pwolonje yon filtè konpoze de "de" mo 32 bit.
Nan konfigirasyon sa a yon pòsyon nan memwa kòmanse nan konpanse 0x04 (mo) ki gen yon gwosè uit mo (kat filtè de mo). Se poutèt sa, konpanse minimòm pou pwochen zòn memwa configurable a se mo 0x0C. Tout seksyon nan RAM mesaj la dwe configuré konsidere kantite ak gwosè eleman yo ki pral estoke nan seksyon an san yo pa sipèpoze nenpòt seksyon.
Nòt: pou konvèti yon konpanse mo nan yon konpanse byte, li nesesè miltipliye valè mo a pa kat.
Exampfiltè idantite estanda
Apre konfigirasyon RAM mesaj la, ou ka configured filtè aparèy yo.
Chak eleman filtre ka konfigirasyon kòm:
- Ranje filtre
- Double ID filtre
- Filtre klasik
- Filtre pou tanpon rx dedye (filtre ID sèl)
Figi sa a montre kijan pou konfigirasyon kat diferan kalite filtè pou idantifyan estanda (idantifyan 11-bit). Sèvi ak rejis eleman filtre sa a pou ID STANDARD.
Ranje filtè pou RX FIFO0
Anba yon ansyenample nan filtraj pou estoke mesaj yo ak idantifyan nan seri [0x16, 0xF6] nan Resevwa FIFO 0.
Enskri valè (HEX): 0x081600F6
Valè anrejistre (BIN): 00 001 00000010110 (00000) 00011110110
Nòt: nan tout ansyenamples yo bay nan dokiman sa a, bit yo bracketed yo kenbe nan valè default la. Valè jaden yo:
- SFT -> `00` -> Range filtre soti nan SFID1 rive nan SFID2
- SFEC -> `001` -> Sere nan Rx FIFO 0 si filtre matche
- SFID1 -> `00000010110` -> Premye ID seri eleman filtre ID estanda (0x16)
- SFID2 -> `00011110110` -> Dezyèm ID seri eleman filtre ID estanda (0xF6)
Double filtre pou RX FIFO1
Anba a se yon ansyenampyon filtè doub ID pou estoke idantifyan mesaj 0 x 0A oswa 0 x FF nan FIFO 1.
Enskri valè (HEX): 0x500A00FF
Valè anrejistre (BIN): 01 010 00000001010 (00000) 00011111111
Valè jaden yo:
- SFT -> `01` -> Doub filtè ID pou SFID1 oswa SFID2
- SFEC -> `010` -> Sere nan Rx FIFO 1 si filtre matche
- SFID1 -> `00000001010` -> Premye ID eleman filtre estanda doub ID
- SFID2 -> `00011111111` -> Dezyèm ID nan eleman filtre estanda doub ID
Rx dedye tanpon filtraj
Anba a se yon ansyenample pou estoke mesaj ak idantifikasyon 0 x 7F0 nan tanpon rx dedye #0.
Sèvi ak yon tanpon devwe, li posib pou filtre yon sèl ID mesaj e se sa ki ekri nan jaden SFID1 la.
Enskri valè (HEX): 0x3FF00000
Valè anrejistre (BIN): 00 111 11111110000 (00000) 00 (000) 000000
- SFT -> `00` -> valè sa a pa enpòtan paske filtre nan magazen an dedye RX BUFFER epi nan ka sa a valè SFT yo inyore (gade deskripsyon jaden SFEC ka `111`)
- SFEC -> `111` -> Sere nan tanpon rx dedye si filtre matche
- SFID1 -> `11111110000` -> estanda ID ke filtre pral aksepte (0x7F0)
- SFID2[10, 9] -> `00` -> jaden sa a deside si mesaj resevwa a estoke nan yon tanpon rx oswa trete kòm mesaj A, B, oswa C nan sekans mesaj debug la. Nan ka sa a, aplikasyon lojisyèl an vle sere mesaj la nan yon tanpon rx.
- SFID2[0,5] -> `000000` → endèks tanpon rx dedye a kote mesaj korespondan an pral estoke (si N tanpon rx dedye a te konfigirasyon, endèks sa a ka nan seri [0, N -1]) .Nan ka sa a mesaj la estoke nan tanpon dedye #0.
Filtre klasik pou RX FIFO0
Ansyen sa aample montre kijan pou estoke mesaj yo ak idantifyan nan seri [0x688, 0x68F] nan RX FIFO 0. Pou yon filtè klasik, yo dwe defini yon pè Idantifyan / Mask. Idantifyan an dwe ekri nan SFID1 ak mask la nan jaden SFID2 nan eleman filtre. Nan yon filtè klasik, mesaj idantifikasyon ki pase filtè yo jwenn lè w aplike mask la nan idantifyan an jan sa a:
- sa a se siyifikasyon an nan Bits yo filtre -> 1 = dwe matche ak (0 = pa pran swen);
- gen yon filtè ak yon mask ki fòme ak tout "1s", sèlman yon sèl idantifyan pral pase nan filtè a (sa ki ekri nan jaden SFID1) pandan y ap yon filtè ki gen yon mask ki fòme ak tout "0" tout idantifyan pral pase. filtè a.
Li evidan, sa yo se filtè ki pi senp yo. Anba la a se yon eksplikasyon sou kòman yo òganize yon filtè ranje pou ID estanda a nan ranje [0x688, 0x68F] ki estoke mesaj resevwa nan RX FIFO 0. Sa a se yon filtre mesaj estanda, kidonk nou pral bay valè SFID1 = Idantifyan ak SFID2 = Mask.
Enskri valè (HEX): 0x8E8B07F8
Valè anrejistre (BIN): 10 001 11010001011 00000 11111111000
- SFT -> `10` -> Filtre klasik: SFID1 = filtre, SFID2 = mask
- SFEC -> `001` -> Sere nan Rx FIFO 0 si filtre matche
- SFID1 = 110 1000 1011 (Idantifikatè0x68B)
- SFID2 = 111 1111 1000 (Mask0x7F8)
Aplike mask la nan idantifyan an (yon ti kras) ak siyifikasyon an nan ti mask la (1 = dwe matche ak 0 = pa pran swen) nou jwenn filtè ranje sa a kote senbòl `X` la vle di zewo oswa youn.
Filtre = 110 1000 1XXX
Lè sa a, tout mesaj estanda nan seri a [0x688, 0x68F] pral pase filtè a.
Konfigirasyon filtè ID pwolonje
Menm kalite filtè yo ka aplike tou pou idantifyan pwolonje (idantifyan 29-bit).
Ranje filtè pwolonje pou RX FIFO0
Nan ansyen sa aample, filtè sa a pral estoke mesaj ak idantifyan nan seri [0xFFFFF, 0x1FFFFFFF] nan FIFO 0.
Anba valè enskri yo:
- F0 valè enskri (HEX): 0x200FFFFF
- F1 valè enskri (HEX): 0xDFFFFFFF
- FO valè anrejistre (BIN): 001 00000000011111111111111111111
- Valè enskri F1 (BIN): 11 (0) 11111111111111111111111111111
Valè jaden yo:
- EFEC -> `001` -> Sere nan Rx FIFO 0 si filtre matche
- EFID1 ->`00000000011111111111111111111` -> Premye ID eleman filtre ID pwolonje
ranje (0xFFFFF) - EFT -> `11` -> Range filtre soti nan SFID1 rive nan SFID2
- SFID2 ->`11111111111111111111111111111` -> Dezyèm ID seri eleman filtre ID estanda (0x1FFFFFFF)
Double ID filtè pou FIFO 1
Nan ansyen sa aampfiltè idantite doub la pral estoke mesaj ki gen idantifyan 0xAAAAA oswa 0xBBBBB nan FIFO 1.
- F0 valè enskri (HEX): 0x400AAAAA
- Valè enskri F1 (HEX): 0x400BBBBB
- FO valè anrejistre (BIN): 010 000000000 10101010101010101010
- Valè enskri F1 (BIN): 01 (0) 00000000010111011101110111011
Valè jaden yo:
- EFEC -> `010` -> Sere nan Rx FIFO 1 si filtre matche
- EFID1 -> `00000000010101010101010101010` -> Premye ID pwolonje (0xAAAAA)
- EFT -> `01` -> Doub filtè ID pou EFID1 oswa EFID2
- EFID2 -> `00000000010111011101110111011` -> Dezyèm ID pwolonje (0x000BBBBB)
Tanpon rx dedye
Nan ansyen sa aampFiltraj la pral estoke mesaj ki gen idantifyan 0x000AAAAA nan tanpon rx dedye #1. Epitou nan senaryo sa a, lè l sèvi avèk tanpon devwe a se sèlman yon sèl id mesaj ka filtre epi li se youn nan ekri nan jaden EFID1.
- Filtre ID pou tanpon rx dedye (ID = 0x000AAAAA)
- F0 valè enskri (HEX): 0xE00AAAAA
- F1 valè enskri (HEX): 0x00000001
- FO valè anrejistre (BIN): 111 00000000010101010101010101010
- Valè enskri F1 (BIN): 00 (0) 000000000000000000 00 (000) 000001
Valè jaden yo:
- EFEC -> `111` -> Sere nan tanpon rx dedye si filtre matche
- EFID1 -> `00000000010101010101010101010` -> ID pwolonje ke filtre pral aksepte
(0x000AAAAA) - EFT -> `00` -> valè sa a pa enpòtan paske filtre nan magazen nan RX dedye
TAMPON ak nan ka sa a valè EFT yo inyore (gade deskripsyon jaden EFEC ka `111`) - EFID2[10, 9] -> `00` -> jaden sa a deside si mesaj resevwa a estoke nan yon tanpon Rx oswa trete kòm mesaj A, B, oswa C nan sekans mesaj debug la. Nan ka sa a aplikasyon lojisyèl vle sere mesaj nan yon tanpon Rx
- EFID2[0,5] -> `000001` -> endèks tanpon rx dedye a kote mesaj matche a pral estoke (si ou konfigirasyon N tanpon rx dedye endèks sa a ka nan seri [0, N -1]). Nan ka sa a mesaj la estoke nan tanpon dedye #1
Filtre klasik pou rx FIFO1
Nan ansyen sa aample, pwogramasyon filtè a pral magazen mesaj magazen ak idantifyan nan seri a [0 x FFFFF, 0 x1FFFFFF] nan rx FIFO 1. Li se underatood ke metòd la maskin se menm jan ak filtè yo ID estanda. Anba la a se yon eksplikasyon sou kòman yo pwograme yon filtè ID pwolonje ranje nan raj [0 x FFFFF, 0 x 1FFFFFF] ki estoke mesaj resevwa nan rx FIFO 1. Sa a se yon filtè pou mesaj pwolonje, kidonk nou pral bay valè EFID1 = Idantifyan. ak EFID2 = Mask
- F0 valè enskri (HEX): 0x400FFFFF
- F1 valè enskri (HEX): 0x9E0FFFFF
- Valè enskri F0 (BIN): 010 00000000011111111111111111111
- Valè enskri F1 (BIN): 10 (0) 11110000011111111111111111111
- EFT > `10` -> Filtre klasik: EFID1 = filtre, EFID2 = mask
- EFEC -> `010` -> Sere nan Rx FIFO 1 si filtre matche
- EFID1 = 0 0000 0000 1111 1111 1111 1111 1111 (Idantifye 0xFFFFF)
- EFID2 = 1 1110 0000 1111 1111 1111 1111 1111 (Mask 0x1E0FFFFF)
Aplike mask la nan idantifyan an (yon ti jan) ak siyifikasyon an nan ti mask la (1 = dwe koresponn ak 0 = pa pran swen) nou jwenn filtè sa a ranje kote senbòl `X` vle di zewo oswa youn.
Filtre = 0 000X XXXX 1111 1111 1111 1111 1111
Se konsa, tout mesaj pwolonje nan seri a [0xFFFFF, 0x1FFFFFF] pral pase filtè a.
Anèks A Dokiman referans
- SPC584Cx/SPC58ECx Referans manyèl
- Fèy done SPC584Cx/SPC58ECx
Apendis B Akwonim ak abrevyasyon
Abreviyasyon | Non konplè |
KAPAB | Rezo zòn kontwòl |
FD | Pousantaj done fleksib |
Istwa revizyon dokiman yo
Dat | Version | Chanjman |
01-Mar-2021 | 1 | Premye lage. |
AVI ENPANTTAN - TANPRI LI AK ATANSYON
STMicroelectronics NV ak filiales li yo ("ST") rezève dwa pou fè chanjman, koreksyon, amelyorasyon, modifikasyon, ak amelyorasyon nan pwodwi ST ak / oswa nan dokiman sa a nenpòt ki lè san avètisman. Achtè yo ta dwe jwenn dènye enfòmasyon ki enpòtan sou pwodwi ST anvan yo mete lòd. Pwodwi ST yo vann dapre tèm ST a ak kondisyon vant nan plas nan moman rekonesans lòd.
Achtè yo se sèl responsab pou chwa, seleksyon, ak itilizasyon pwodwi ST yo epi ST pa asime responsablite pou asistans aplikasyon oswa konsepsyon pwodwi Achtè yo.
Pa gen okenn lisans, eksprime oswa implicite, sou okenn dwa pwopriyete entelektyèl akòde pa ST nan la a.
Revann pwodwi ST ak dispozisyon ki diferan de enfòmasyon ki endike nan la a pral anile nenpòt garanti ST akòde pou pwodui sa a.
ST ak logo ST a se mak komèsyal ST. Pou plis enfòmasyon sou mak ST, tanpri al gade www.st.com/trademarks. Tout lòt non pwodwi oswa sèvis yo se pwopriyete pwopriyetè respektif yo.
Enfòmasyon ki nan dokiman sa a ranplase epi ranplase enfòmasyon yo te bay anvan nan nenpòt vèsyon anvan dokiman sa a.
© 2021 STMicroelectronics – Tout dwa rezève
Dokiman / Resous
![]() |
ST TN1348 SPC58x Konfigirasyon CAN ak CAN-FD Filtè [pdfEnstriksyon yo TN1348, SPC58x Konfigirasyon CAN ak CAN-FD Filtè |