STlogo

TN1348 SPC58x Konfigurasi CAN lan CAN-FD Filter

produk

Pambuka

Cathetan teknis iki nerangake carane ngatur saringan acceptance kanggo pengontrol CAN sing dipasang ing mikrokontroler otomotif SPC58x. Dokumen kasebut nggambarake konfigurasi ndhaptar lan menehi sawetara contoample kanggo nyepetake konfigurasi Filter. Konfigurasi iki bisa diadopsi kanggo kabeh mikrokontroler ing kulawarga iki kanthi variasi cilik. mantanamples ing dokumen iki adhedhasar SPC584Cx / SPC58ECx 32-dicokot MCU.

BISA liwatview

SPC584Cx / SPC58ECx wis wolung kedadean CAN ditempelake ing rong subsistem beda minangka nyathet ing manual referensi piranti Bagean Lampiran A dokumen Reference.
Kabeh pengontrol CAN ing subsistem sing padha bakal nuduhake sumber daya kaya memori RAM, jam, lsp. Saben subsistem CAN dumadi saka blok utama ing ngisor iki:

  • Inti CAN Modular: register saka modul CAN bisa diakses nggunakake Antarmuka Budak Generik (GSI). Modul GSI periferal tumindak minangka panjalukan saka saben master.
  • Arbiter CAN-RAM: minangka logika tambahan kanggo arbitrase ing antarane panjaluk akses RAM dening macem-macem pengontrol CAN.
  • SRAM: subsistem CAN bakal antarmuka karo RAM external nggunakake antarmuka iki, iku SRAM.
  • ECC controller: ngandhut logika kanggo ngetung lan validasi kode koreksi ing memori SRAM.

Kanggo antarmuka SRAM lan organisasi memori deleng manual referensi piranti Bagean Lampiran A dokumen Referensi.

Pambuka nyaring

CAN filter logika ngijini sampeyan kanggo ngatur saringan ing macem-macem cara. Kanggo example, pesen sing pass nyaring acceptance bisa disimpen ing Rx FIFO (0 utawa 1) utawa ing darmabakti rx buffer. Saben panyaring bisa dikonfigurasi minangka panyaring panrima utawa penolakan lan uga bisa diaktifake utawa dipateni. Kanggo saringan acceptance, saben dhaftar panyaring dileksanakake saka item #0 kanggo item cocog pisanan ing dhaftar panyaring. Sadurunge nggunakake saringan iku prentah kanggo ngatur alamat wiwitan lan nomer saringan kanggo cadangan bagean RAM pesen. Gambar ing ngisor iki nuduhake a view saka map memori sambungan lan ndhaftar (mula alamat wiwitan kanggo saben bagean).

Gambar 1. Pesen konfigurasi RAM example

Pesen RAM initialization

Sadurunge nggunakake saringan apa wae, sampeyan kudu ngatur area RAM sing cocog kanggo pesen sing bakal disimpen. Kanggo nindakake iki, aplikasi piranti lunak kudu nulis offset (ing tembung) saka pesen alamat basis RAM saben area filter. Jumlah saringan kanggo saben wilayah kudu diatur, supaya controller bisa ngerti ngendi saben area memori Filter related ends Ing dokumen iki, minangka Example papat saringan, bakal diatur kanggo pengenal standar (11 bit) lan papat saringan kanggo pengenal lengkap (29 bit), dadi, cadangan bagean RAM pesen kanggo nyimpen saringan 11-dicokot lan liyane kanggo saringan 29-dicokot. Kanggo ngatur alamat wiwitan area filter id standar, piranti lunak kudu nulis lapangan FLSSA saka SIDFC register (Standard ID filter konfigurasi register). Kanggo saringan ID lengkap perlu kanggo nulis lapangan FLESA saka XIDFC register (Dhaptar konfigurasi filter ID Extended). Kolom FLSSA lan FLESA kudu ngemot offset memori "ing tembung" saka alamat basis RAM pesen. Aplikasi iki ngatur papat saringan standar ing offset nul lan papat saringan lengkap

Kanggo konfigurasi filter standar:

  • FLSSA = 0x0: bab offset kanggo pesen alamat basa RAM iku nul, supaya wilayah wiwit ing awal Pesen RAM.
  • LSS = 4: iki nomer saringan kanggo ngatur. Saben panyaring disusun kanthi tembung `siji` 32 bit.
    Ing konfigurasi iki bagean saka memori miwiti saka ngimbangi nul lan duwe ukuran papat tembung.

Cathetan: CAN controller ora mekanisme kontrol kanggo konfigurasi RAM pesen, iki tegese Developer kudu ati-ati supaya ora tumpang tindih wilayah RAM diatur. Tokoh ing ngisor iki nuduhake carane ngatur bagean saka memori kanggo nyimpen saringan identifikasi lengkap.

Kanggo ngatur area RAM kanggo nyimpen saringan lengkap perlu kanggo program nilai ing ngisor iki ing lapangan FLESA lan LSE.

  • FLESA = 0x04: offset ing tembung bab pesen alamat basis RAM. Iki amarga ing area saringan sing wis dikonfigurasi sadurunge wis dicawisake tembung 0x04 kanggo saringan ID standar banjur offset minimal sing bisa digunakake yaiku 0x04.
  • LSE = 4: iki nomer saringan kanggo ngatur. Kanggo ID lengkap, saringan disusun kanthi tembung `loro` 32 bit.

Ing konfigurasi iki bagean saka memori miwiti saka offset 0x04 (tembung) gadhah ukuran wolung tembung (papat saringan rong tembung). Mulane, offset minimal kanggo area memori sing bisa dikonfigurasi sabanjure yaiku tembung 0x0C. Kabeh bagean saka pesen RAM kudu diatur considering nomer lan ukuran unsur sing bakal disimpen ing bagean tanpa tumpang tindih bagean sembarang.
Cathetan: Ngonversi tembung offset menyang bait offset, iku perlu kanggo Multiply tembung karo papat.

Example saka saringan ID standar

Sawise konfigurasi RAM pesen, sampeyan bisa ngatur saringan piranti.
Saben unsur filter bisa dikonfigurasi minangka:

  • Filter Range
  • Filter ID pindho
  • Filter klasik
  • Filter kanggo buffer rx khusus (filter ID tunggal)

Tokoh ing ngisor iki nuduhake carane ngatur papat macem-macem saringan kanggo pengenal standar (11-dicokot pengenal). Gunakake dhaptar unsur filter ing ngisor iki kanggo ID STANDARD.

Filter Range kanggo RX FIFO0

Ngisor mantanampnyaring kanggo nyimpen pesen kanthi pengenal ing kisaran [0x16 , 0xF6] menyang Nampa FIFO 0.
Register nilai (HEX): 0x081600F6
Registrasi nilai (BIN): 00 001 00000010110 (00000) 00011110110

Cathetan: ing kabeh mantanamples kasedhiya ing document iki, bit bracketed katahan ing Nilai standar. Nilai lapangan:

  • SFT -> `00` -> Filter rentang saka SFID1 nganti SFID2
  • SFEC -> `001` -> Simpen ing Rx FIFO 0 yen saringan cocog
  • SFID1 -> `00000010110` -> ID pisanan saka kisaran elemen filter ID standar (0x16)
  • SFID2 -> `00011110110` -> ID kapindho saka kisaran elemen filter ID standar (0xF6)
Filter pindho kanggo RX FIFO1

Ing ngisor iki ana mantanampFilter ID dobel kanggo nyimpen pengenal pesen 0 x 0A utawa 0 x FF menyang FIFO 1.
Nilai Register (HEX): 0x500A00FF
Registrasi nilai (BIN): 01 010 00000001010 (00000) 00011111111
Nilai lapangan:

  • SFT -> `01` -> Filter ID Ganda kanggo SFID1 utawa SFID2
  • SFEC -> `010` -> Simpen ing Rx FIFO 1 yen saringan cocog
  • SFID1 -> `00000001010` -> ID pisanan saka unsur filter ID ganda standar
  • SFID2 -> `00011111111` -> ID kapindho unsur filter ID ganda standar
Rx darmabakti nyaring buffer

Ing ngisor iki ana mantanample kanggo nyimpen pesen karo identifikasi 0 x 7F0 menyang darmabakti rx buffer # 0.
Nggunakake buffer khusus, sampeyan bisa nyaring mung siji ID pesen lan sing ditulis ing kolom SFID1.
Register nilai (HEX): 0x3FF00000
Registrasi nilai (BIN): 00 111 11111110000 (00000) 00 (000) 000000

  • SFT -> `00` -> nilai iki ora penting amarga nyaring kanggo nyimpen menyang RX BUFFER darmabakti lan ing kasus iki nilai SFT diabaikan (ndeleng kasus deskripsi lapangan SFEC `111`)
  • SFEC -> `111` -> Simpen menyang buffer rx khusus yen filter cocog
  • SFID1 -> `11111110000` -> ID standar sing bakal ditampa panyaring (0x7F0)
  • SFID2[10, 9] -> `00` -> kolom iki nemtokake manawa pesen sing ditampa disimpen ing buffer rx utawa dianggep minangka pesen A, B, utawa C saka urutan pesen debug. Ing kasus iki, aplikasi piranti lunak pengin nyimpen pesen ing buffer rx.
  • SFID2[0,5] -> `000000` → indeks saka buffer rx khusus ing ngendi pesen sing cocog bakal disimpen (yen N buffer rx khusus wis dikonfigurasi, indeks iki bisa ana ing kisaran [0, N -1]) .Ing kasus iki pesen disimpen menyang darmabakti buffer # 0.
Filter klasik kanggo RX FIFO0

Mantan ikiample nuduhake carane nyimpen pesen karo pengenal ing sawetara [0x688, 0x68F] ing RX FIFO 0. Kanggo Filter klasik, Identifier / Mask pasangan kudu ditetepake. Pengenal kudu ditulis ing SFID1 lan topeng ing kolom SFID2 unsur filter. Ing panyaring klasik, pesen ID sing ngliwati panyaring dipikolehi kanthi nggunakake topeng menyang pengenal kaya ing ngisor iki:

  • iki tegese bit panyaring -> 1 = kudu cocog (0 = ora peduli);
  • duwe saringan kanthi topeng sing digawe saka kabeh "1s", mung siji pengenal sing bakal mlebu menyang saringan (sing ditulis ing kolom SFID1) nalika saringan sing duwe topeng digawe saka kabeh "0" kabeh pengenal bakal dilewati. saringan.

Temenan, iki minangka saringan sing paling gampang. Ing ngisor iki panjelasan babagan carane ngatur filter sawetara kanggo ID standar ing jangkoan [0x688, 0x68F] sing nyimpen pesen sing ditampa ing RX FIFO 0. Iki minangka panyaring pesen standar, mula kita bakal menehi nilai SFID1 = Identifier lan SFID2 = Topeng.
Register nilai (HEX): 0x8E8B07F8
Registrasi nilai (BIN): 10 001 11010001011 00000 11111111000

  • SFT -> `10` -> Filter klasik: SFID1 = filter, SFID2 = topeng
  • SFEC -> `001` -> Simpen ing Rx FIFO 0 yen saringan cocog
  • SFID1 = 110 1000 1011 (Identifier0x68B)
  • SFID2 = 111 1111 1000 (Topeng0x7F8)

Nerapake topeng menyang pengenal (sethithik) kanthi makna topeng topeng (1 = kudu cocog karo 0 = ora peduli) kita nemokake filter kisaran ing ngisor iki ing ngendi simbol `X` tegese nol utawa siji.

Filter = 110 1000 1XXX

Banjur, kabeh pesen standar ing kisaran [0x688, 0x68F] bakal ngliwati panyaring.

Konfigurasi saringan ID lengkap

Jinis saringan sing padha bisa dileksanakake uga kanggo pengenal lengkap (pengenal 29-bit).

Filter lengkap kanggo RX FIFO0

Ing mantan ikiampNanging, panyaring iki bakal nyimpen pesen kanthi pengenal ing kisaran [0xFFFFF, 0x1FFFFFF] ing FIFO 0.
Ing ngisor nilai register:

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

Nilai lapangan:

  • EFEC -> `001` -> Simpen ing Rx FIFO 0 yen saringan cocog
  • EFID1 ->`00000000011111111111111111111` -> ID pisanan unsur filter ID tambahan
    kisaran (0xFFFF)
  • EFT -> `11` -> Filter rentang saka SFID1 nganti SFID2
  • SFID2 ->`11111111111111111111111111111` -> ID kapindho kisaran elemen filter ID standar (0x1FFFFFFF)
Filter ID dobel kanggo FIFO 1

Ing mantan ikiampFilter ID dual bakal nyimpen pesen sing duwe pengenal 0xAAAA utawa 0xBBBBB menyang FIFO 1.

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

Nilai lapangan:

  • EFEC -> `010` -> Simpen ing Rx FIFO 1 yen saringan cocog
  • EFID1 -> `00000000010101010101010101010` -> ID tambahan pisanan (0xAAAA)
  • EFT -> `01` -> Filter ID Ganda kanggo EFID1 utawa EFID2
  • EFID2 -> `00000000010111011101110111011` -> ID tambahan kapindho (0x000BBBBB)
darmabakti rx buffer

Ing mantan ikiampNyaring bakal nyimpen pesen sing duwe pengenal 0x000AAAA menyang darmabakti rx buffer #1. Uga ing skenario iki, nggunakake buffer khusus mung siji id pesen sing bisa disaring lan sing ditulis ing kolom EFID1.

  • Filter ID kanggo buffer rx khusus (ID = 0x000AAAA)
  • Nilai register F0 (HEX): 0xE00AAAA
  • Nilai register F1 (HEX): 0x00000001
  • Nilai register FO (BIN): 111 00000000010101010101010101010
  • Nilai register F1 (BIN): 00 (0) 000000000000000000 00 (000) 000001

Nilai lapangan:

  • EFEC -> `111` -> Simpen menyang buffer rx khusus yen saringan cocog
  • EFID1 -> `00000000010101010101010101010` -> ID lengkap sing bakal ditampa filter
    (0x000AAAA)
  • EFT -> `00` -> nilai iki ora penting amarga nyaring kanggo nyimpen menyang RX khusus
    BUFFER lan ing kasus iki, nilai EFT ora digatekake (pirsani kasus deskripsi lapangan EFEC `111`)
  • EFID2[10, 9] -> `00` -> kolom iki nemtokake manawa pesen sing ditampa disimpen ing Rx Buffer utawa dianggep minangka pesen A, B, utawa C saka urutan pesen debug. Ing kasus iki, aplikasi piranti lunak pengin nyimpen pesen menyang Rx Buffer
  • EFID2 [0,5] -> `000001` -> indeks saka rx buffer darmabakti ngendi pesen cocog bakal disimpen (yen sampeyan ngatur N darmabakti rx buffer indeks iki bisa ing sawetara [0, N -1]). Ing kasus iki pesen disimpen menyang darmabakti buffer #1
Filter klasik kanggo rx FIFO1

Ing mantan ikiample, program Filter bakal nyimpen pesen nyimpen karo pengenal ing sawetara [0 x FFFFF, 0 x1FFFFFF] menyang rx FIFO 1. Punika underatood sing cara masking padha saringan ID standar. Ing ngisor iki panjelasan babagan carane program panyaring kisaran ID lengkap ing nesu [0 x FFFFF, 0 x 1FFFFFF] sing nyimpen pesen sing ditampa ing rx FIFO 1. Iki minangka filter kanggo pesen lengkap, mula kita bakal menehi nilai EFID1 = Identifier. lan EFID2 = Topeng

  • Nilai register F0 (HEX): 0x400FFFFF
  • Nilai register F1 (HEX): 0x9E0FFFFF
  • Nilai registrasi F0 (BIN): 010 00000000011111111111111111111
  • Nilai register F1 (BIN): 10 (0) 11110000011111111111111111111
  • EFT > `10` -> Filter klasik: EFID1 = filter, EFID2 = topeng
  • EFEC -> `010` -> Simpen ing Rx FIFO 1 yen saringan cocog
  • EFID1 = 0 0000 0000 1111 1111 1111 1111 1111 (Pengidentifikasi 0xFFFFF)
  • EFID2 = 1 1110 0000 1111 1111 1111 1111 1111 (Topeng 0x1E0FFFFF)

Nerapake topeng menyang pengenal (dicokot) kanthi arti bit topeng (1 = kudu cocog karo 0 = ora peduli) kita nemokake panyaring kisaran ing ngisor iki sing simbol `X` tegese nol utawa siji.

Filter = 0 000X XXXX 1111 1111 1111 1111 1111

Dadi, kabeh pesen lengkap ing kisaran [0xFFFFF, 0x1FFFFFF] bakal ngliwati panyaring.

Lampiran A. Dokumen Referensi

  • Manual Referensi SPC584Cx/SPC58ECx
  • Lembar data SPC584Cx/SPC58ECx

Lampiran B Akronim lan singkatan

Singkatan jeneng lengkap
BISA Jaringan area kontrol
FD Data rate fleksibel
Riwayat revisi dokumen
Tanggal Versi Owah-owahan
01-Mar-2021 1 Rilis wiwitan.

PEMBERITAHU PENTING - PUNCEN BACA KENE

STMicroelectronics NV lan anak perusahaan ("ST") duwe hak kanggo nggawe pangowahan, koreksi, paningkatan, modifikasi, lan perbaikan produk ST lan / utawa dokumen iki kapan wae tanpa ana kabar. Pembeli kudu entuk informasi sing paling relevan babagan produk ST sadurunge ngirim pesen. Produk ST didol miturut syarat-syarat lan syarat-syarat adol ST ing papan nalika diakoni.

Tuku mung tanggung jawab kanggo pilihan, pilihan, lan panggunaan produk ST lan ST ora duwe tanggung jawab kanggo pitulung aplikasi utawa desain produk Pembeli.

Ora ana lisensi, nyata utawa diwenehake, kanggo hak properti intelektual sing diwenehake dening ST ing kene.

Adol maneh produk ST kanthi pranata sing beda karo informasi sing kasebut ing kene bakal ngilangi garansi sing diwenehake dening ST kanggo produk kasebut.

ST lan logo ST minangka merek dagang ST. Kanggo informasi tambahan babagan merek dagang ST, waca www.st.com/trademarks. Kabeh jeneng produk utawa layanan liyane minangka properti sing nduweni.

Informasi ing dokumen iki ngganti lan ngganti informasi sing diwenehake sadurunge ing versi sadurunge dokumen iki.

© 2021 STMicroelectronics – Kabeh hak dilindhungi undhang-undhang

Dokumen / Sumber Daya

ST TN1348 SPC58x Konfigurasi CAN lan CAN-FD Filter [pdf] Pandhuan
TN1348, SPC58x Konfigurasi CAN lan CAN-FD Filter

Referensi

Ninggalake komentar

Alamat email sampeyan ora bakal diterbitake. Kolom sing dibutuhake ditandhani *