STlogo

TN1348 SPC58x Pag-configure sa CAN ug CAN-FD Filters

produkto

Pasiuna

Kini nga teknikal nga nota naghulagway kung giunsa ang pag-configure sa mga filter sa pagdawat alang sa CAN controllers nga na-embed sa SPC58x automotive microcontrollers. Gihubit sa dokumento ang mga configuration sa rehistro ug naghatag ug pipila ka example aron mapadali ang configuration sa filter. Kini nga mga pag-configure mahimong gamiton alang sa tanan nga mga microcontroller sa kini nga pamilya nga adunay gamay nga kalainan. Ang exampAng mga niini nga dokumento gibase sa SPC584Cx/SPC58ECx 32-bit MCU.

mahuman naview

Ang SPC584Cx/SPC58ECx adunay walo ka CAN nga mga instance nga nasulod sa duha ka lain-laing mga subsystem sama sa dokumentado sa device reference manual Seksyon Apendise A Reference nga mga dokumento.
Ang tanan nga CAN controllers sa parehas nga subsystem magpaambit sa mga kapanguhaan sama sa RAM memory, orasan, ug uban pa. Ang matag CAN subsystem gilangkuban sa mosunod nga dagkong mga bloke:

  • Modular CAN cores: ang mga rehistro sa CAN module mahimong ma-access gamit ang Generic Slave Interface (GSI). Ang peripheral GSI module naglihok isip usa ka hangyo gikan sa matag agalon.
  • CAN-RAM arbiter: kini usa ka dugang nga lohika alang sa arbitrasyon taliwala sa mga hangyo alang sa pag-access sa RAM sa lainlaing mga tigkontrol sa CAN.
  • SRAM: ang CAN subsystem mag-interface sa usa ka external RAM gamit kini nga interface, kini ang SRAM.
  • ECC controller: kini naglangkob sa logic sa pag-compute ug pag-validate sa correction code sa SRAM memory.

Alang sa interface sa SRAM ug organisasyon sa memorya, tan-awa ang manwal sa pakisayran sa aparato Seksyon Apendise A Mga dokumento sa pakisayran.

Pagsala nga pasiuna

Ang CAN filter logic nagtugot kanimo sa pag-configure sa mga filter sa lainlaing paagi. Kay exampUg, ang mga mensahe nga moagi sa pagsala sa pagdawat mahimong tipigan sa Rx FIFO (0 o 1) o sa gipahinungod nga rx buffers. Ang matag filter mahimong ma-configure ingon usa ka pagdawat o pagsalikway nga filter ug mahimo usab nga ma-enable o ma-disable. Alang sa pagsala sa pagdawat, ang matag lista sa pagsala gihimo gikan sa aytem #0 hangtod sa una nga pagpares nga aytem sa lista sa filter. Sa wala pa gamiton ang mga pagsala, gikinahanglan nga i-configure ang pagsugod nga adres ug ang mga numero sa filter aron mareserba ang bahin sa RAM nga mensahe. Ang hulagway sa ubos nagpakita sa a view sa gipaambit nga mapa sa memorya ug sa mga rehistro (busa ang pagsugod nga mga adres alang sa matag seksyon).

Figure 1. Mensahe RAM configuration example

Pagsugod sa mensahe sa RAM

Sa wala pa gamiton ang bisan unsang filter, gikinahanglan nga i-configure ang may kalabutan nga lugar sa RAM sa mga mensahe diin kini itago. Aron mahimo kini, ang software application kinahanglan nga isulat ang offset (sa mga pulong) gikan sa mensahe nga RAM base address sa matag filter nga lugar. Ang gidaghanon sa mga filter alang sa matag lugar kinahanglan nga ma-configure, aron ang controller makasabut kung asa matapos ang matag may kalabutan nga filter nga lugar sa memorya Niini nga dokumento, sama sa exampAng upat ka mga filter, i-configure para sa standard identifiers (11 bits) ug upat ka filters para sa extended identifiers (29 bits), busa, reserba ang usa ka bahin sa message RAM aron tipigan ang 11-bit filters ug ang lain alang sa 29-bit filters. Aron ma-configure ang pagsugod nga adres sa standard id filter area, ang software kinahanglan nga isulat ang FLSSA field sa SIDFC register (Standard ID filter configuration register). Alang sa gipalawig nga mga pagsala sa ID gikinahanglan nga isulat ang FLESA field sa XIDFC register (Extended ID filter configuration register). Ang mga field sa FLSSA ug FLESA kinahanglan adunay sulod sa memory offset "sa mga pulong" gikan sa RAM base address sa mensahe. Kini nga aplikasyon nag-configure sa upat ka standard nga mga pagsala sa offset zero ug upat ka gipalugway nga mga pagsala

Para sa standard nga configuration sa filter:

  • FLSSA = 0x0: ang offset nga pagtahod sa mensahe RAM base address kay zero, mao nga ang lugar magsugod sa sinugdanan sa Message RAM.
  • LSS = 4: kini ang gidaghanon sa mga filter nga i-configure. Ang matag filter gilangkuban sa `usa` 32 bits nga pulong.
    Niini nga configuration usa ka bahin sa memorya nga nagsugod gikan sa offset zero ug adunay gidak-on nga upat ka mga pulong.

Mubo nga sulat: ang CAN controller walay kontrol nga mekanismo alang sa pag-configure sa mensahe nga RAM, kini nagpasabot nga ang Developer kinahanglan nga mag-amping nga dili magsapaw sa gi-configure nga mga lugar sa RAM. Ang mosunud nga numero nagpakita kung giunsa ang pag-configure sa usa ka bahin sa memorya aron matipigan ang gipalawig nga mga pagsala sa pag-ila.

Aron ma-configure ang lugar sa RAM aron matipigan ang mga gipalawig nga mga pagsala kinahanglan nga iprograma ang mga musunod nga kantidad sa mga natad sa FLESA ug LSE.

  • FLESA = 0x04: ang offset sa mga pulong kalabot sa mensahe RAM base address. Kini tungod kay sa miaging na-configure nga mga filter nga lugar kini gireserba nga 0x04 nga mga pulong alang sa standard nga mga filter sa ID ug unya ang minimum nga magamit nga offset mao ang 0x04.
  • LSE = 4: kini ang gidaghanon sa mga filter nga i-configure. Alang sa gipalapdan nga ID ang usa ka filter gilangkuban sa `duha` 32 bits nga pulong.

Niini nga configuration usa ka bahin sa memorya nga nagsugod gikan sa offset 0x04 (mga pulong) nga adunay gidak-on nga walo ka mga pulong (upat ka duha ka pulong nga mga filter). Busa, ang minimum nga offset alang sa sunod nga ma-configure nga lugar sa panumduman mao ang 0x0C nga mga pulong. Ang tanan nga mga seksyon sa mensahe RAM kinahanglan nga ma-configure nga gikonsiderar ang gidaghanon ug gidak-on sa mga elemento nga tipigan sa seksyon nga wala mag-overlap sa bisan unsang mga seksyon.
Mubo nga sulat: aron ma-convert ang usa ka pulong nga offset ngadto sa usa ka byte offset, gikinahanglan ang pagpadaghan sa pulong nga bili sa upat.

Example sa standard nga mga filter sa ID

Human ma-configure ang mensahe nga RAM, mahimo nimong i-configure ang mga filter sa device.
Ang matag elemento sa pagsala mahimong ma-configure ingon:

  • Range filter
  • Doble nga ID filter
  • Classic nga filter
  • Pagsala alang sa gipahinungod nga rx buffer (single ID filter)

Ang mosunod nga numero nagpakita kon unsaon pag-configure ang upat ka lain-laing mga matang sa mga filter alang sa standard identifiers (11-bit identifiers). Gamita ang mosunod nga rehistro sa elemento sa filter para sa STANDARD ID.

Range filter para sa RX FIFO0

Ubos sa usa ka example sa pagsala aron tipigan ang mga mensahe nga adunay mga identifier sa range [0x16 , 0xF6] ngadto sa Receive FIFO 0.
Pagrehistro nga kantidad (HEX): 0x081600F6
Pagrehistro nga kantidad (BIN): 00 001 00000010110 (00000) 00011110110

Mubo nga sulat: sa tanang exampAng gihatag niini nga dokumento, ang gi-bracket nga mga piraso gitago sa default nga kantidad. Mga kantidad sa field:

  • SFT -> `00` -> Range filter gikan sa SFID1 ngadto sa SFID2
  • SFEC -> `001` -> Tipigi sa Rx FIFO 0 kung ang filter motakdo
  • SFID1 -> `00000010110` -> Unang ID sa standard ID filter element range (0x16)
  • SFID2 -> `00011110110` -> Ikaduhang ID sa standard ID filter element range (0xF6)
Doble nga filter alang sa RX FIFO1

Sa ubos kay example sa usa ka double ID filter aron tipigan ang mga mensahe identifier 0 x 0A o 0 x FF ngadto sa FIFO 1.
Pagrehistro nga kantidad (HEX): 0x500A00FF
Pagrehistro nga kantidad (BIN): 01 010 00000001010 (00000) 00011111111
Mga kantidad sa field:

  • SFT -> `01` -> Dual ID filter para sa SFID1 o SFID2
  • SFEC -> `010` -> Tipigi sa Rx FIFO 1 kung ang filter motakdo
  • SFID1 -> `00000001010` -> Unang ID sa standard dual ID filter nga elemento
  • SFID2 -> `00011111111` -> Ikaduhang ID sa standard dual ID filter nga elemento
Rx nga gipahinungod nga pagsala sa buffer

Sa ubos kay examparon tipigan ang mga mensahe nga adunay identipikasyon 0 x 7F0 ngadto sa gipahinungod nga rx buffer #0.
Gamit ang usa ka dedikado nga buffer, posible nga ma-filter ang usa lamang ka ID sa mensahe ug kana ang gisulat sa natad sa SFID1.
Pagrehistro nga kantidad (HEX): 0x3FF00000
Bili sa pagparehistro (BIN): 00 111 11111110000 (00000) 00 (000) 000000

  • SFT -> `00` -> kini nga bili dili importante tungod kay ang pagsala aron tipigan ngadto sa gipahinungod nga RX BUFFER ug niining kasoha ang SFT nga bili gibalewala (tan-awa ang SFEC field description case `111`)
  • SFEC -> `111` -> Tipigi sa gipahinungod nga rx buffer kung ang filter motakdo
  • SFID1 -> `11111110000` -> standard ID nga madawat sa filter (0x7F0)
  • SFID2[10, 9] -> `00` -> kini nga field magdesisyon kung ang nadawat nga mensahe gitipigan sa usa ka rx buffer o gitratar nga mensahe A, B, o C sa debug nga han-ay sa mensahe. Sa kini nga kaso, ang software application gusto nga tipigan ang mensahe sa usa ka rx buffer.
  • SFID2[0,5] -> `000000` → index sa gipahinungod nga buffer rx diin ang katugbang nga mensahe itago (kung ang N gipahinungod nga buffer rx na-configure, kini nga indeks mahimong naa sa range [0, N -1]) .Niini nga kaso ang mensahe gitipigan sa gipahinungod nga buffer #0.
Classic nga filter alang sa RX FIFO0

Kini nga exampGipakita sa le kung unsaon pagtipig sa mga mensahe nga adunay identifier sa range [0x688, 0x68F] sa RX FIFO 0. Alang sa usa ka klasiko nga filter, usa ka pares nga Identifier / Mask kinahanglan nga ipasabut. Ang identifier kinahanglan isulat sa SFID1 ug ang maskara sa SFID2 nga mga natad sa filter nga elemento. Sa usa ka klasiko nga filter, ang mga mensahe sa ID nga nagpasa sa filter makuha pinaagi sa pag-apply sa maskara sa identifier sama sa mosunod:

  • mao kini ang kahulogan sa mga filter bits -> 1 = kinahanglan nga motakdo (0 = don`t care);
  • nga adunay usa ka filter nga adunay maskara nga gilangkoban sa tanan nga "1s", usa ra ka identifier ang moagi sa filter (ang usa nga gisulat sa SFID1 field) samtang ang usa ka filter nga adunay maskara nga gilangkoban sa tanan nga "0" ang tanan nga mga identifier moagi. ang filter.

Dayag, kini ang pinakasimple nga mga pagsala. Sa ubos mao ang usa ka katin-awan kon unsaon pag-organisar ang usa ka range filter alang sa standard ID sa range [0x688, 0x68F] nga nagtipig sa nadawat nga mga mensahe sa RX FIFO 0. Kini usa ka standard nga filter sa mensahe, mao nga kita mohatag og mga bili sa SFID1 = Identifier ug SFID2 = maskara.
Pagrehistro nga kantidad (HEX): 0x8E8B07F8
Pagrehistro nga kantidad (BIN): 10 001 11010001011 00000 11111111000

  • SFT -> `10` -> Klasikong filter: SFID1 = filter, SFID2 = maskara
  • SFEC -> `001` -> Tipigi sa Rx FIFO 0 kung ang filter motakdo
  • SFID1 = 110 1000 1011 (Identifier0x68B)
  • SFID2 = 111 1111 1000 (Mask0x7F8)

Ang pag-aplay sa maskara sa identifier (gamay) nga adunay kahulugan sa mask bit (1 = kinahanglan nga motakdo sa 0 = ayaw pag-atiman) atong makita ang mosunod nga range filter diin ang `X` simbolo nagbarug alang sa zero o usa.

Pagsala = 110 1000 1XXX

Dayon, ang tanang standard nga mga mensahe sa range [0x688, 0x68F] mopasa sa filter.

Gipadako nga pagsala sa mga pagsala sa ID

Ang parehas nga mga tipo sa pagsala mahimo usab nga ipatuman alang sa gipalawig nga mga identifier (29-bit identifier).

Range extended filter para sa RX FIFO0

Niining exampUg, kini nga filter magtipig sa mga mensahe nga adunay mga identifier sa range [0xFFFFF, 0x1FFFFFF] sa FIFO 0.
Ubos sa mga kantidad sa rehistro:

  • F0 nga kantidad sa rehistro (HEX): 0x200FFFFF
  • F1 nga kantidad sa rehistro (HEX): 0xDFFFFFFF
  • FO register value (BIN): 001 00000000011111111111111111111
  • F1 nga kantidad sa rehistro (BIN): 11 (0) 11111111111111111111111111111

Mga kantidad sa field:

  • EFEC -> `001` -> Tipigi sa Rx FIFO 0 kung ang filter motakdo
  • EFID1 ->`00000000011111111111111111111` -> Unang ID sa gipalugdang ID nga elemento sa filter
    range(0xFFFFF)
  • EFT -> `11` -> Range filter gikan sa SFID1 ngadto sa SFID2
  • SFID2 ->`11111111111111111111111111111` -> Ikaduhang ID sa standard ID filter element range(0x1FFFFFFF)
Dobleng ID filter para sa FIFO 1

Niining exampAng dual ID filter magtipig sa mga mensahe nga adunay mga identifier 0xAAAA o 0xBBBBB sa FIFO 1.

  • F0 nga kantidad sa rehistro (HEX): 0x400AAAA
  • F1 nga kantidad sa rehistro (HEX): 0x400BBBBB
  • FO register value (BIN): 010 000000000 10101010101010101010
  • F1 nga kantidad sa rehistro (BIN): 01 (0) 00000000010111011101110111011

Mga kantidad sa field:

  • EFEC -> `010` -> Tipigi sa Rx FIFO 1 kung ang filter motakdo
  • EFID1 -> `00000000010101010101010101010` -> Unang gipalapdan nga ID (0xAAAA)
  • EFT -> `01` -> Dual ID filter para sa EFID1 o EFID2
  • EFID2 -> `00000000010111011101110111011` -> Ikaduhang gipadako nga ID (0x000BBBBB)
Gipahinungod nga rx buffer

Niining exampAng pagsala magtipig sa mga mensahe nga adunay identifier 0x000AAAA sa gipahinungod nga rx buffer #1. Usab niini nga senaryo, gamit ang gipahinungod nga buffer usa ra ka message id ang mahimong masala ug kini ang gisulat sa EFID1 field.

  • ID Filter para sa gipahinungod nga rx buffer (ID = 0x000AAAA)
  • F0 nga kantidad sa rehistro (HEX): 0xE00AAAA
  • F1 nga kantidad sa rehistro (HEX): 0x00000001
  • FO register value (BIN): 111 00000000010101010101010101010
  • F1 nga kantidad sa rehistro (BIN): 00 (0) 000000000000000000 00 (000) 000001

Mga kantidad sa field:

  • EFEC -> `111` -> Itago sa gipahinungod nga rx buffer kung ang filter motakdo
  • EFID1 -> `00000000010101010101010101010` -> gipadako nga ID nga dawaton sa filter
    (0x000AAAA)
  • EFT -> `00` -> kini nga kantidad dili hinungdanon tungod kay ang pagsala aron matipigan sa gipahinungod nga RX
    BUFFER ug sa niini nga kaso ang EFT nga bili gibalewala (tan-awa ang EFEC field description case `111`)
  • EFID2[10, 9] -> `00` -> kini nga field ang magdesisyon kung ang nadawat nga mensahe gitipigan sa usa ka Rx Buffer o gitratar nga mensahe A, B, o C sa han-ay sa mensahe sa debug. Sa kini nga kaso ang software application gusto nga magtipig sa mensahe sa usa ka Rx Buffer
  • EFID2[0,5] -> `000001` -> index sa gipahinungod nga rx buffer diin ang matching nga mensahe itago (kung imong gi-configure ang N nga gipahinungod nga rx buffer kini nga indeks mahimong naa sa range [0, N -1]). Sa kini nga kaso ang mensahe gitipigan sa gipahinungod nga buffer #1
Classic nga filter alang sa rx FIFO1

Niining example, ang filter programming magtipig sa mga mensahe nga tindahan nga adunay identifier sa range [0 x FFFFF, 0 x1FFFFFF] ngadto sa rx FIFO 1. Kini mao ang underatood nga ang masking pamaagi mao ang sama sa sa standard ID filters. Sa ubos mao ang usa ka katin-awan kon unsaon pagprograma ang usa ka gipalugdang ID range filter sa kasuko [0 x FFFFF, 0 x 1FFFFFF] nga nagtipig sa nadawat nga mga mensahe sa rx FIFO 1. Kini usa ka filter alang sa gipalapdan nga mga mensahe, mao nga kita mohatag og mga bili sa EFID1 = Identifier ug EFID2 = Maskara

  • F0 nga kantidad sa rehistro (HEX): 0x400FFFFF
  • F1 nga kantidad sa rehistro (HEX): 0x9E0FFFFF
  • F0 nga kantidad sa rehistro (BIN): 010 00000000011111111111111111111
  • F1 nga kantidad sa rehistro (BIN): 10 (0) 11110000011111111111111111111
  • EFT > `10` -> Klasikong filter: EFID1 = filter, EFID2 = maskara
  • EFEC -> `010` -> Tipigi sa Rx FIFO 1 kung ang filter motakdo
  • EFID1 = 0 0000 0000 1111 1111 1111 1111 1111 (Identifier 0xFFFFF)
  • EFID2 = 1 1110 0000 1111 1111 1111 1111 1111 (Maskara 0x1E0FFFFF)

Ang pag-apply sa maskara sa identifier (gamay) nga adunay kahulogan sa mask bit (1 = kinahanglan nga katumbas sa 0 = ayaw pag-atiman) atong makita ang mosunod nga range filter diin ang simbolo `X` nagpasabot sa zero o usa.

Pagsala = 0 000X XXXX 1111 1111 1111 1111 1111

Busa, ang tanan nga gipalapdan nga mga mensahe sa range [0xFFFFF, 0x1FFFFFF] mopasa sa filter.

Apendise A Reperensya nga mga dokumento

  • SPC584Cx/SPC58ECx Reference manual
  • SPC584Cx/SPC58ECx nga datasheet

Apendise B Mga acronym ug abbreviation

Minubo Kompleto nga ngalan
MAHIMO Network sa lugar sa controller
FD Flexible nga rate sa datos
Kasaysayan sa pagbag-o sa dokumento
Petsa Bersyon Mga kausaban
01-Mar-2021 1 Inisyal nga pagpagawas.

MAHINUNGDANONG Pahibalo - PALIHUG NGA BASAHA NGA MAAYONG PAGBASA

Ang STMicroelectronics NV ug ang mga subsidiary niini ("ST") adunay katungod nga maghimo mga pagbag-o, pagtul-id, pagpaayo, pagbag-o, ug pagpaayo sa mga produkto sa ST ug / o sa kini nga dokumento bisan unsang oras nga wala’y pahibalo. Kinahanglan nga makuha sa mga tagpamalit ang labing bag-ong may kalabutan nga kasayuran sa mga produkto sa ST sa wala pa magbutang mga order. Ang mga produkto sa ST gibaligya subay sa mga termino ug kondisyon sa pagbaligya sa ST sa lugar sa pag-ila sa order.

Ang mga tagpamalit mao ra ang responsable sa pagpili, pagpili, ug paggamit sa mga produkto nga ST ug wala’y kapangakohan ang ST alang sa tabang sa aplikasyon o ang laraw sa mga produkto sa mga Mamalit.

Walay lisensya, gipahayag o gipasabot, sa bisan unsang katungod sa intelektwal nga kabtangan ang gihatag sa ST dinhi.

Ang pagbaligya pag-usab sa mga produkto sa ST nga adunay mga probisyon nga lahi sa impormasyon nga gilatid dinhi magwagtang sa bisan unsang warranty nga gihatag sa ST alang sa maong produkto.

Ang ST ug ang ST logo kay mga marka sa ST. Para sa dugang nga impormasyon bahin sa ST trademarks, palihog tan-awa ang www.st.com/trademarks. Ang tanan nga ubang mga ngalan sa produkto o serbisyo gipanag-iya sa ilang tag-iya.

Ang impormasyon niini nga dokumento mopuli ug mopuli sa impormasyon nga gihatag kaniadto sa bisan unsang naunang bersyon niini nga dokumento.

© 2021 STMicroelectronics – Tanang katungod gigahin

Mga Dokumento / Mga Kapanguhaan

ST TN1348 SPC58x Pag-configure sa CAN ug CAN-FD Filters [pdf] Mga instruksiyon
TN1348, SPC58x Pag-configure sa CAN ug CAN-FD Filters

Mga pakisayran

Pagbilin ug komento

Ang imong email address dili mamantala. Ang gikinahanglan nga mga natad gimarkahan *