TN1348 SPC58x Mengkonfigurasi Penapis CAN dan CAN-FD
pengenalan
Nota teknikal ini menerangkan cara mengkonfigurasi penapis penerimaan untuk pengawal CAN yang dibenamkan dalam mikropengawal automotif SPC58x. Dokumen ini menerangkan konfigurasi daftar dan menyediakan beberapa contohample untuk mempercepatkan konfigurasi penapis. Konfigurasi ini boleh diterima pakai untuk semua mikropengawal dalam keluarga ini dengan variasi kecil. bekas ituamples dalam dokumen ini adalah berdasarkan SPC584Cx/SPC58ECx 32-bit MCU.
BOLEH habisview
SPC584Cx/SPC58ECx mempunyai lapan kejadian CAN yang dibenamkan dalam dua subsistem berbeza seperti yang didokumenkan dalam manual rujukan peranti Bahagian Lampiran A dokumen Rujukan.
Semua pengawal CAN dalam subsistem yang sama akan berkongsi sumber seperti memori RAM, jam, dll. Setiap subsistem CAN terdiri daripada blok utama berikut:
- Teras CAN modular: daftar modul CAN boleh diakses menggunakan Antara Muka Hamba Generik (GSI). Modul GSI persisian bertindak sebagai permintaan daripada setiap induk.
- Arbiter CAN-RAM: ia adalah logik tambahan untuk timbang tara antara permintaan untuk akses RAM oleh pelbagai pengawal CAN.
- SRAM: subsistem CAN akan antara muka dengan RAM luaran menggunakan antara muka ini, ia adalah SRAM.
- Pengawal ECC: ia mengandungi logik untuk mengira dan mengesahkan kod pembetulan pada memori SRAM.
Untuk antara muka SRAM dan organisasi memori rujuk kepada manual rujukan peranti Bahagian Lampiran A dokumen Rujukan.
Pengenalan penapisan
Logik penapis CAN membolehkan anda mengkonfigurasi penapis dalam pelbagai cara. Untuk exampOleh itu, mesej yang melepasi penapisan penerimaan boleh disimpan dalam Rx FIFO (0 atau 1) atau dalam penimbal rx khusus. Setiap penapis boleh dikonfigurasikan sebagai penapis penerimaan atau penolakan dan juga boleh didayakan atau dilumpuhkan. Untuk penapis penerimaan, setiap senarai penapis dilakukan daripada item #0 hingga item padanan pertama dalam senarai penapis. Sebelum menggunakan penapis adalah wajib untuk mengkonfigurasi alamat permulaan dan nombor penapis untuk menempah sebahagian daripada RAM mesej. Rajah di bawah menunjukkan a view peta memori yang dikongsi dan daftar (oleh itu alamat permulaan untuk setiap bahagian).
Rajah 1. Konfigurasi RAM mesej cthample
Permulaan RAM mesej
Sebelum menggunakan mana-mana penapis, adalah wajib untuk mengkonfigurasi kawasan RAM yang berkaitan bagi mesej di mana ia akan disimpan. Untuk melakukan ini, aplikasi perisian mesti menulis offset (dalam perkataan) daripada alamat pangkalan RAM mesej bagi setiap kawasan penapis. Bilangan penapis untuk setiap kawasan mesti dikonfigurasikan, supaya pengawal boleh memahami di mana setiap kawasan memori penapis yang berkaitan berakhir Dalam dokumen ini, seperti contohampempat penapis, akan dikonfigurasikan untuk pengecam standard (11 bit) dan empat penapis untuk pengecam lanjutan (29 bit), jadi, simpan sebahagian RAM mesej untuk menyimpan penapis 11-bit dan satu lagi untuk penapis 29-bit. Untuk mengkonfigurasi alamat permulaan kawasan penapis id standard, perisian mesti menulis medan FLSSA bagi daftar SIDFC (daftar konfigurasi penapis ID Standard). Untuk penapis ID lanjutan adalah perlu untuk menulis medan FLESA bagi daftar XIDFC (daftar konfigurasi penapis ID Lanjutan). Medan FLSSA dan FLESA harus mengandungi memori mengimbangi "dalam perkataan" daripada alamat pangkalan RAM mesej. Aplikasi ini mengkonfigurasi empat penapis standard pada sifar offset dan empat penapis lanjutan
Untuk konfigurasi penapis standard:
- FLSSA = 0x0: pengimbangan berkenaan dengan alamat pangkalan RAM mesej adalah sifar, jadi kawasan itu bermula pada permulaan RAM Mesej.
- LSS = 4: ini ialah bilangan penapis untuk dikonfigurasikan. Setiap penapis digubah oleh `satu` perkataan 32 bit.
Dalam konfigurasi ini sebahagian memori bermula dari sifar mengimbangi dan mempunyai saiz empat perkataan.
Nota: pengawal CAN tidak mempunyai mekanisme kawalan untuk mengkonfigurasi RAM mesej, ini bermakna bahawa Pembangun mesti berhati-hati untuk tidak bertindih dengan kawasan RAM yang dikonfigurasikan. Rajah berikut menunjukkan cara mengkonfigurasi sebahagian memori untuk menyimpan penapis pengenalan lanjutan.
Untuk mengkonfigurasi kawasan RAM untuk menyimpan penapis lanjutan adalah perlu untuk memprogramkan nilai berikut dalam medan FLESA dan LSE.
- FLESA = 0x04: offset dalam perkataan berkenaan dengan mesej alamat pangkalan RAM. Ini kerana dalam kawasan penapis yang dikonfigurasikan sebelumnya, ia telah ditempah 0x04 perkataan untuk penapis ID standard dan kemudian mengimbangi minimum yang boleh digunakan ialah 0x04.
- LSE = 4: ini ialah bilangan penapis untuk dikonfigurasikan. Untuk ID lanjutan penapis digubah oleh perkataan 32 bit `dua`.
Dalam konfigurasi ini sebahagian memori bermula dari offset 0x04 (perkataan) mempunyai saiz lapan perkataan (empat penapis dua perkataan). Oleh itu, ofset minimum untuk kawasan memori boleh dikonfigurasikan seterusnya ialah perkataan 0x0C. Semua bahagian RAM mesej mesti dikonfigurasikan dengan mengambil kira bilangan dan saiz elemen yang akan disimpan dalam bahagian tanpa bertindih mana-mana bahagian.
Nota: untuk menukar perkataan offset ke byte offset, ia diperlukan untuk mendarab nilai perkataan dengan empat.
Example daripada penapis ID standard
Selepas mengkonfigurasi RAM mesej, anda boleh mengkonfigurasi penapis peranti.
Setiap elemen penapis boleh dikonfigurasikan sebagai:
- Penapis julat
- Penapis ID berganda
- Penapis klasik
- Penapis untuk penimbal rx khusus (penapis ID tunggal)
Rajah berikut menunjukkan cara untuk mengkonfigurasi empat jenis penapis yang berbeza untuk pengecam standard (pengecam 11-bit). Gunakan daftar elemen penapis berikut untuk ID STANDARD.
Penapis julat untuk RX FIFO0
Di bawah bekasampPenapisan untuk menyimpan mesej dengan pengecam dalam julat [0x16 , 0xF6] ke dalam Terima FIFO 0.
Nilai daftar (HEX): 0x081600F6
Nilai daftar (BIN): 00 001 00000010110 (00000) 00011110110
Nota: dalam semua bekasamples yang disediakan dalam dokumen ini, bit kurungan disimpan pada nilai lalai. Nilai medan:
- SFT -> `00` -> Penapis julat dari SFID1 hingga SFID2
- SFEC -> `001` -> Simpan dalam Rx FIFO 0 jika penapis sepadan
- SFID1 -> `00000010110` -> ID pertama julat elemen penapis ID standard (0x16)
- SFID2 -> `00011110110` -> ID Kedua julat elemen penapis ID standard (0xF6)
Penapis berganda untuk RX FIFO1
Di bawah adalah bekasampPenapis ID berganda untuk menyimpan pengecam mesej 0 x 0A atau 0 x FF ke dalam FIFO 1.
Nilai daftar (HEX): 0x500A00FF
Nilai daftar (BIN): 01 010 00000001010 (00000) 00011111111
Nilai medan:
- SFT -> `01` -> Penapis Dwi ID untuk SFID1 atau SFID2
- SFEC -> `010` -> Simpan dalam Rx FIFO 1 jika penapis sepadan
- SFID1 -> `00000001010` -> ID pertama unsur penapis dwi ID standard
- SFID2 -> `00011111111` -> ID kedua unsur penapis dwi ID standard
Penapisan penimbal khusus Rx
Di bawah adalah bekasample untuk menyimpan mesej dengan pengenalan 0 x 7F0 ke dalam penimbal rx khusus #0.
Menggunakan penimbal khusus, adalah mungkin untuk menapis hanya satu ID mesej dan itu adalah yang ditulis dalam medan SFID1.
Nilai daftar (HEX): 0x3FF00000
Nilai daftar (BIN): 00 111 11111110000 (00000) 00 (000) 000000
- SFT -> `00` -> nilai ini tidak penting kerana penapisan untuk disimpan ke dalam RX BUFFER khusus dan dalam kes ini nilai SFT diabaikan (lihat kes perihalan medan SFEC `111`)
- SFEC -> `111` -> Simpan ke dalam penimbal rx khusus jika penapis sepadan
- SFID1 -> `11111110000` -> ID standard yang akan diterima oleh penapis (0x7F0)
- SFID2[10, 9] -> `00` -> medan ini menentukan sama ada mesej yang diterima disimpan dalam penimbal rx atau dianggap sebagai mesej A, B atau C bagi urutan mesej nyahpepijat. Dalam kes ini, aplikasi perisian ingin menyimpan mesej dalam penimbal rx.
- SFID2[0,5] -> `000000` → indeks penimbal khusus rx tempat mesej yang sepadan akan disimpan (jika N penimbal khusus rx telah dikonfigurasikan, indeks ini boleh berada dalam julat [0, N -1]) .Dalam kes ini mesej disimpan ke dalam penimbal khusus #0.
Penapis klasik untuk RX FIFO0
bekas iniample menunjukkan cara menyimpan mesej dengan pengecam dalam julat [0x688, 0x68F] dalam RX FIFO 0. Untuk penapis klasik, pasangan Pengecam / Topeng mesti ditentukan. Pengecam mesti ditulis dalam SFID1 dan topeng dalam medan SFID2 elemen penapis. Dalam penapis klasik, mesej ID yang melepasi penapis diperoleh dengan menggunakan topeng pada pengecam seperti berikut:
- ini adalah maksud bit penapis -> 1 = mesti sepadan (0 = tidak peduli);
- mempunyai penapis dengan topeng yang terdiri daripada semua "1s", hanya satu pengecam akan dihantar ke penapis (yang ditulis dalam medan SFID1) manakala penapis yang mempunyai topeng terdiri daripada semua "0" semua pengecam akan lulus penapis.
Jelas sekali, ini adalah penapis yang paling mudah. Di bawah ialah penjelasan tentang cara mengatur penapis julat untuk ID standard dalam julat [0x688, 0x68F] yang menyimpan mesej yang diterima dalam RX FIFO 0. Ini ialah penapis mesej standard, jadi kami akan memberikan nilai kepada SFID1 = Pengecam dan SFID2 = Topeng.
Nilai daftar (HEX): 0x8E8B07F8
Nilai daftar (BIN): 10 001 11010001011 00000 11111111000
- SFT -> `10` -> Penapis klasik: SFID1 = penapis, SFID2 = topeng
- SFEC -> `001` -> Simpan dalam Rx FIFO 0 jika penapis sepadan
- SFID1 = 110 1000 1011 (Pengecam0x68B)
- SFID2 = 111 1111 1000 (Mask0x7F8)
Menggunakan topeng pada pengecam (sedikit) dengan maksud bit topeng (1 = mesti sepadan dengan 0 = tidak peduli) kita dapati penapis julat berikut di mana simbol `X` bermaksud sifar atau satu.
Penapis = 110 1000 1XXX
Kemudian, semua mesej standard dalam julat [0x688, 0x68F] akan melepasi penapis.
Konfigurasi penapis ID lanjutan
Jenis penapis yang sama boleh dilaksanakan juga untuk pengecam lanjutan (pengecam 29-bit).
Penapis lanjutan julat untuk RX FIFO0
Dalam bekas iniampOleh itu, penapis ini akan menyimpan mesej dengan pengecam dalam julat [0xFFFFF, 0x1FFFFFF] dalam FIFO 0.
Di bawah nilai daftar:
- Nilai daftar F0 (HEX): 0x200FFFFF
- Nilai daftar F1 (HEX): 0xDFFFFFFF
- Nilai daftar FO (BIN): 001 00000000011111111111111111111
- Nilai daftar F1 (BIN): 11 (0) 11111111111111111111111111111
Nilai medan:
- EFEC -> `001` -> Simpan dalam Rx FIFO 0 jika penapis sepadan
- EFID1 ->`00000000011111111111111111111` -> ID pertama elemen penapis ID lanjutan
julat(0xFFFFF) - EFT -> `11` -> Penapis julat dari SFID1 hingga SFID2
- SFID2 ->`11111111111111111111111111111` -> ID Kedua julat elemen penapis ID standard(0x1FFFFFFF)
Penapis ID berganda untuk FIFO 1
Dalam bekas iniampPenapis dwi ID akan menyimpan mesej yang mempunyai pengecam 0xAAAA atau 0xBBBBB ke dalam FIFO 1.
- Nilai daftar F0 (HEX): 0x400AAAA
- Nilai daftar F1 (HEX): 0x400BBBBB
- Nilai daftar FO (BIN): 010 000000000 10101010101010101010
- Nilai daftar F1 (BIN): 01 (0) 00000000010111011101110111011
Nilai medan:
- EFEC -> `010` -> Simpan dalam Rx FIFO 1 jika penapis sepadan
- EFID1 -> `00000000010101010101010101010` -> ID lanjutan pertama (0xAAAA)
- EFT -> `01` -> Penapis Dwi ID untuk EFID1 atau EFID2
- EFID2 -> `00000000010111011101110111011` -> ID lanjutan kedua (0x000BBBBB)
Penampan rx khusus
Dalam bekas iniamptetapi penapisan akan menyimpan mesej yang mempunyai pengecam 0x000AAAA ke dalam penimbal rx khusus #1. Juga dalam senario ini, menggunakan penimbal khusus hanya satu id mesej boleh ditapis dan ia adalah yang ditulis ke dalam medan EFID1.
- Penapis ID untuk penimbal rx khusus (ID = 0x000AAAA)
- Nilai daftar F0 (HEX): 0xE00AAAA
- Nilai daftar F1 (HEX): 0x00000001
- Nilai daftar FO (BIN): 111 00000000010101010101010101010
- Nilai daftar F1 (BIN): 00 (0) 000000000000000000 00 (000) 000001
Nilai medan:
- EFEC -> `111` -> Simpan ke dalam penimbal rx khusus jika penapis sepadan
- EFID1 -> `00000000010101010101010101010` -> ID lanjutan yang akan diterima oleh penapis
(0x000AAAA) - EFT -> `00` -> nilai ini tidak penting kerana menapis untuk menyimpan ke dalam RX khusus
PENAPI dan dalam kes ini nilai EFT diabaikan (lihat kes perihalan medan EFEC `111`) - EFID2[10, 9] -> `00` -> medan ini memutuskan sama ada mesej yang diterima disimpan ke dalam Penampan Rx atau dianggap sebagai mesej A, B atau C bagi urutan mesej nyahpepijat. Dalam kes ini, aplikasi perisian ingin menyimpan mesej ke dalam Rx Buffer
- EFID2[0,5] -> `000001` -> indeks penimbal rx khusus tempat mesej sepadan akan disimpan (jika anda mengkonfigurasi N penimbal rx khusus, indeks ini boleh berada dalam julat [0, N -1]). Dalam kes ini, mesej disimpan ke dalam penimbal khusus #1
Penapis klasik untuk rx FIFO1
Dalam bekas iniampOleh itu, pengaturcaraan penapis akan menyimpan stor mesej dengan pengecam dalam julat [0 x FFFFF, 0 x1FFFFFF] ke dalam rx FIFO 1. Adalah difahami bahawa kaedah penyamaran adalah sama dengan penapis ID standard. Di bawah ialah penjelasan tentang cara memprogramkan penapis julat ID lanjutan dalam kemarahan [0 x FFFFF, 0 x 1FFFFFF] yang menyimpan mesej yang diterima dalam rx FIFO 1. Ini ialah penapis untuk mesej lanjutan, jadi kami akan memberikan nilai kepada EFID1 = Pengecam dan EFID2 = Topeng
- Nilai daftar F0 (HEX): 0x400FFFFF
- Nilai daftar F1 (HEX): 0x9E0FFFFF
- Nilai daftar F0 (BIN): 010 00000000011111111111111111111
- Nilai daftar F1 (BIN): 10 (0) 11110000011111111111111111111
- EFT > `10` -> Penapis klasik: EFID1 = penapis, EFID2 = topeng
- EFEC -> `010` -> Simpan dalam Rx FIFO 1 jika penapis sepadan
- EFID1 = 0 0000 0000 1111 1111 1111 1111 1111 (Pengecam 0xFFFFF)
- EFID2 = 1 1110 0000 1111 1111 1111 1111 1111 (Topeng 0x1E0FFFFF)
Menggunakan topeng pada pengecam (sedikit) dengan maksud bit topeng (1 = mesti sepadan dengan 0 = tidak peduli) kita dapati penapis julat berikut di mana simbol `X` bermaksud sifar atau satu.
Penapis = 0 000X XXXX 1111 1111 1111 1111 1111
Jadi, semua mesej lanjutan dalam julat [0xFFFFF, 0x1FFFFFF] akan melepasi penapis.
Lampiran A Dokumen rujukan
- Manual Rujukan SPC584Cx/SPC58ECx
- Lembaran data SPC584Cx/SPC58ECx
Lampiran B Akronim dan singkatan
Singkatan | Nama lengkap |
BOLEH | Rangkaian kawasan pengawal |
FD | Kadar data yang fleksibel |
Sejarah semakan dokumen
tarikh | Versi | Perubahan |
01-Mac-2021 | 1 | Keluaran awal. |
NOTIS PENTING – SILA BACA DENGAN TELITI
STMicroelectronics NV dan anak syarikatnya (“ST”) berhak untuk membuat perubahan, pembetulan, penambahbaikan, pengubahsuaian dan penambahbaikan pada produk ST dan/atau pada dokumen ini pada bila-bila masa tanpa notis. Pembeli hendaklah mendapatkan maklumat terkini berkaitan produk ST sebelum membuat pesanan. Produk ST dijual menurut terma dan syarat jualan ST yang ada pada masa penerimaan pesanan.
Pembeli bertanggungjawab sepenuhnya untuk pilihan, pemilihan dan penggunaan produk ST dan ST tidak bertanggungjawab untuk bantuan permohonan atau reka bentuk produk Pembeli.
Tiada lesen, nyata atau tersirat, kepada mana-mana hak harta intelek diberikan oleh ST di sini.
Jualan semula produk ST dengan peruntukan yang berbeza daripada maklumat yang dinyatakan di sini akan membatalkan sebarang waranti yang diberikan oleh ST untuk produk tersebut.
ST dan logo ST adalah tanda dagangan ST. Untuk maklumat tambahan tentang tanda dagangan ST, sila rujuk www.st.com/trademarks. Semua nama produk atau perkhidmatan lain adalah hak milik pemilik masing-masing.
Maklumat dalam dokumen ini menggantikan dan menggantikan maklumat yang dibekalkan sebelum ini dalam mana-mana versi terdahulu dokumen ini.
© 2021 STMicroelectronics – Hak cipta terpelihara
Dokumen / Sumber
![]() |
ST TN1348 SPC58x Mengkonfigurasi Penapis CAN dan CAN-FD [pdf] Arahan TN1348, SPC58x Mengkonfigurasi Penapis CAN dan CAN-FD |