STlogo

TN1348 SPC58x Конфигурирање на филтри CAN и CAN-FD

производ

Вовед

Оваа техничка забелешка опишува како да ги конфигурирате филтрите за прифаќање за CAN контролерите вградени во автомобилските микроконтролери SPC58x. Документот ги опишува конфигурациите на регистерот и дава некои прample за да се забрза конфигурацијата на филтерот. Овие конфигурации може да се прифатат за сите микроконтролери во ова семејство со мали варијанси. Поранешниотampелементите во овој документ се засноваат на SPC584Cx/SPC58ECx 32-битна MCU.

МОЖЕ надview

SPC584Cx/SPC58ECx има осум примероци CAN вградени во два различни потсистеми како што е документирано во упатството за упатување на уредот Дел Додаток А Референтни документи.
Сите CAN контролери во истиот потсистем ќе споделуваат ресурси како што се RAM меморија, часовник итн. Секој потсистем CAN е конципиран од следните главни блокови:

  • Модуларни јадра CAN: до регистрите на модулот CAN може да се пристапи со користење на Generic Slave Interface (GSI). Периферниот GSI модул делува како барање од секој господар.
  • CAN-RAM арбитер: тоа е дополнителна логика за арбитража меѓу барањата за пристап до RAM од различните CAN контролери.
  • SRAM: потсистемот CAN ќе се поврзува со надворешна RAM меморија користејќи го овој интерфејс, тоа е SRAM.
  • ECC контролер: содржи логика за пресметување и потврдување на кодот за корекција на SRAM меморијата.

За SRAM интерфејсот и организацијата на меморијата, погледнете го упатството за упатување на уредот, Дел Додаток А Референтни документи.

Вовед во филтрирање

Логиката на филтерот CAN ви овозможува да ги конфигурирате филтрите на различен начин. За прampLe, пораките што го поминуваат филтрирањето за прифаќање може да се зачуваат во Rx FIFO (0 или 1) или во посветени rx бафери. Секој филтер може да се конфигурира како филтер за прифаќање или отфрлање, а исто така може да се овозможи или оневозможи. За филтер за прифаќање, секоја листа на филтри се изведува од ставката #0 до првата соодветна ставка во листата на филтри. Пред да користите филтри, задолжително е да ја конфигурирате почетната адреса и броевите на филтерот за да резервирате дел од RAM меморијата за пораки. Сликата подолу покажува а view на картата на споделена меморија и регистрите (оттука и почетните адреси за секој дел).

Слика 1. Порака за конфигурација на RAM меморија прample

Иницијализација на RAM меморијата на пораката

Пред да користите кој било филтер, задолжително е да се конфигурира соодветната RAM област на пораките во кои тие ќе се складираат. За да го направите ова, софтверската апликација мора да го напише поместувањето (со зборови) од пораката RAM-базна адреса на секоја област на филтер. Бројот на филтри за секоја област мора да биде конфигуриран, така што контролорот може да разбере каде завршува секоја поврзана област на меморија за филтри Во овој документ, како на пр.ampчетири филтри, ќе бидат конфигурирани за стандардни идентификатори (11 бита) и четири филтри за продолжени идентификатори (29 бита), затоа, резервирајте дел од RAM меморијата за пораки за складирање на 11-битни филтри и друг за 29-битни филтри. За да ја конфигурирате почетната адреса на областа за стандардна идентификација на филтерот, софтверот мора да го напише полето FLSSA на регистарот SIDFC (регистар за конфигурација на филтерот за стандарден ID). За продолжени филтри за ИД потребно е да се запише полето FLESA на регистарот XIDFC (Регистар за конфигурација на филтер со проширен ID). Полињата FLSSA и FLESA треба да го содржат поместувањето на меморијата „со зборови“ од основната адреса на RAM меморијата на пораката. Оваа апликација конфигурира четири стандардни филтри со поместување нула и четири продолжени филтри

За стандардна конфигурација на филтер:

  • FLSSA = 0x0: поместувањето во однос на основната адреса на RAM-от на пораката е нула, така што областа започнува на почетокот на RAM-от за пораки.
  • LSS = 4: ова е бројот на филтри што треба да се конфигурираат. Секој филтер е составен од „еден“ збор од 32 бита.
    Во оваа конфигурација, дел од меморијата почнува од поместување нула и има големина од четири зборови.

Забелешка: контролорот CAN нема контролен механизам за конфигурирање на RAM-пораката, тоа значи дека развивачот мора да внимава да не ги преклопува конфигурираните области на RAM меморијата. Следната слика покажува како да конфигурирате дел од меморијата за складирање на проширени филтри за идентификација.

За да ја конфигурирате областа RAM за складирање на продолжени филтри, потребно е да ги програмирате следните вредности во полињата FLESA и LSE.

  • FLESA = 0x04: поместување со зборови во однос на основната адреса на RAM-от на пораката. Ова е затоа што во претходните конфигурирани филтри област беа резервирани 0x04 зборови за стандардни ID филтри и тогаш минималното употребливо поместување е 0x04.
  • LSE = 4: ова е бројот на филтри што треба да се конфигурираат. За проширена идентификација, филтерот е составен од „два“ збор од 32 бита.

Во оваа конфигурација, дел од меморијата почнувајќи од офсет 0x04 (зборови) со големина од осум зборови (четири филтри со два збора). Затоа, минималното поместување за следната област на меморија што може да се конфигурира е зборовите 0x0C. Сите делови од RAM меморијата на пораката мора да се конфигурираат со оглед на бројот и големината на елементите што ќе се складираат во делот без да се преклопуваат ниеден дел.
Забелешка: за да конвертирате поместување на зборот во поместување на бајт, потребно е да се помножи вредноста на зборот со четири.

Exampод стандардните идентификациски филтри

Откако ќе ја конфигурирате пораката RAM, можете да ги конфигурирате филтрите на уредот.
Секој елемент на филтерот може да се конфигурира како:

  • Филтер за опсег
  • Двоен идентификациски филтер
  • Класичен филтер
  • Филтер за посветен rx тампон (филтер со еден ID)

Следната слика покажува како да конфигурирате четири различни типови на филтри за стандардни идентификатори (11-битни идентификатори). Користете го следниов регистар на филтер елемент за СТАНДАРД ИД.

Филтер за опсег за RX FIFO0

Под еден поранешенampфилтрирање за складирање на пораките со идентификатори во опсегот [0x16, 0xF6] во Receive FIFO 0.
Вредност на регистрација (HEX): 0x081600F6
Вредност на регистрација (BIN): 00 001 00000010110 (00000) 00011110110

Забелешка: во сите ексampКако што е предвидено во овој документ, битовите во загради се чуваат на стандардната вредност. Вредности на полињата:

  • SFT -> `00` -> Филтер за опсег од SFID1 до SFID2
  • SFEC -> `001` -> Чувајте во Rx FIFO 0 ако филтерот се совпаѓа
  • SFID1 -> `00000010110` -> Прв ID на стандарден опсег на елемент на филтер ID (0x16)
  • SFID2 -> `00011110110` -> Втор ID на стандарден опсег на елемент за филтер ID (0xF6)
Двоен филтер за RX FIFO1

Подолу е поранешенampле од двоен ID филтер за складирање на идентификатори на пораки 0 x 0A или 0 x FF во FIFO 1.
Вредност на регистрација (HEX): 0x500A00FF
Вредност на регистрација (BIN): 01 010 00000001010 (00000) 00011111111
Вредности на полињата:

  • SFT -> `01` -> Двоен ID филтер за SFID1 или SFID2
  • SFEC -> `010` -> Чувајте во Rx FIFO 1 ако филтерот се совпаѓа
  • SFID1 -> `00000001010` -> Прв ID на стандарден елемент на филтер со двојна идентификација
  • SFID2 -> `00011111111` -> Втор ID на стандарден елемент на филтер со двојна идентификација
Rx посветено филтрирање на баферот

Подолу е поранешенampза складирање на пораки со идентификација 0 x 7F0 во посветен rx бафер #0.
Со помош на наменски бафер, можно е да се филтрира само еден ID на порака и тоа е оној напишан во полето SFID1.
Вредност на регистрација (HEX): 0x3FF00000
Вредност на регистрација (BIN): 00 111 11111110000 (00000) 00 (000) 000000

  • SFT -> `00` -> оваа вредност не е важна затоа што филтрирањето за складирање во посебен RX BUFFER и во овој случај вредноста на SFT се игнорира (видете го описот на полето SFEC случај `111`)
  • SFEC -> `111` -> Складирајте во посветен rx бафер ако филтерот се совпаѓа
  • SFID1 -> `11111110000` -> стандарден ID што ќе го прифати филтерот (0x7F0)
  • SFID2[10, 9] -> `00` -> ова поле одлучува дали примената порака е зачувана во бафер rx или се третира како порака A, B или C од секвенцата на пораки за отстранување грешки. Во овој случај, софтверската апликација сака да ја зачува пораката во rx бафер.
  • SFID2[0,5] -> `000000` → индекс на наменскиот бафер rx каде што ќе се зачува соодветната порака (ако е конфигуриран N посветен бафер rx, овој индекс може да биде во опсегот [0, N -1]) .Во овој случај пораката е зачувана во посветен бафер #0.
Класичен филтер за RX FIFO0

Овој ексampЛе покажува како да се складираат пораките со идентификатор во опсегот [0x688, 0x68F] во RX FIFO 0. За класичен филтер, мора да се дефинира пар Идентификатор / Маска. Идентификаторот мора да биде напишан во SFID1, а маската во SFID2 полињата на елементот за филтрирање. Во класичен филтер, пораките за ИД што минуваат низ филтерот се добиваат со примена на маската на идентификаторот на следниов начин:

  • ова е значењето на битовите на филтерот -> 1 = мора да одговара (0 = не ми е гајле);
  • имајќи филтер со маска составена од сите „1“, само еден идентификатор ќе помине на филтерот (оној што е напишан во полето SFID1), додека филтерот што има маска составена од сите „0“ ќе помине сите идентификатори. филтерот.

Очигледно, ова се наједноставните филтри. Подолу е објаснето како да се организира филтер за опсег за стандардниот ID во опсегот [0x688, 0x68F] кој ги складира примените пораки во RX FIFO 0. Ова е стандарден филтер за пораки, така што ќе дадеме вредности на SFID1 = Идентификатор и SFID2 = Маска.
Вредност на регистрација (HEX): 0x8E8B07F8
Вредност на регистрација (BIN): 10 001 11010001011 00000 11111111000

  • SFT -> `10` -> Класичен филтер: SFID1 = филтер, SFID2 = маска
  • SFEC -> `001` -> Чувајте во Rx FIFO 0 ако филтерот се совпаѓа
  • SFID1 = 110 1000 1011 (Идентификатор0x68B)
  • SFID2 = 111 1111 1000 (маска0x7F8)

Применувајќи ја маската на идентификаторот (малку) со значење на битот за маска (1 = мора да одговара 0 = не ми е гајле) го наоѓаме следниов филтер за опсег каде што симболот `X` означува нула или еден.

Филтер = 110 1000 1XXX

Потоа, сите стандардни пораки во опсегот [0x688, 0x68F] ќе го поминат филтерот.

Проширена конфигурација на филтри за ID

Истите типови на филтри може да се имплементираат и за проширени идентификатори (29-битни идентификатори).

Проширен опсег на филтер за RX FIFO0

Во овој ексampле, овој филтер ќе складира пораки со идентификатори во опсегот [0xFFFFFF, 0x1FFFFFFFF] во FIFO 0.
Под вредностите на регистарот:

  • Вредност на регистарот F0 (HEX): 0x200FFFFF
  • Вредност на регистарот F1 (HEX): 0xDFFFFFFFF
  • FO регистарска вредност (BIN): 001 00000000011111111111111111111
  • Вредност на регистарот F1 (BIN): 11 (0) 11111111111111111111111111111

Вредности на полињата:

  • EFEC -> `001` -> Чувајте во Rx FIFO 0 ако филтерот се совпаѓа
  • EFID1 ->`00000000011111111111111111111` -> Прв ID на проширен елемент на филтер за ID
    опсег (0xFFFFFF)
  • EFT -> `11` -> Филтер за опсег од SFID1 до SFID2
  • SFID2 ->`11111111111111111111111111111` -> Втор ID на стандарден опсег на елемент на филтер ID (0x1FFFFFFFF)
Двоен идентификациски филтер за FIFO 1

Во овој ексampфилтерот со двојна идентификација ќе складира пораки со идентификатори 0xAAAAA или 0xBBBBB во FIFO 1.

  • Вредност на регистарот F0 (HEX): 0x400AAAAA
  • Вредност на регистарот F1 (HEX): 0x400BBBBB
  • FO регистарска вредност (BIN): 010 000000000 10101010101010101010
  • Вредност на регистарот F1 (BIN): 01 (0) 00000000010111011101110111011

Вредности на полињата:

  • EFEC -> `010` -> Чувајте во Rx FIFO 1 ако филтерот се совпаѓа
  • EFID1 -> `00000000010101010101010101010` -> Прво продолжен ID (0xAAAAA)
  • EFT -> `01` -> Двоен ID филтер за EFID1 или EFID2
  • EFID2 -> `00000000010111011101110111011` -> Втор проширен ID (0x000BBBBB)
Посветен rx бафер

Во овој ексampфилтрирањето ќе ги складира пораките со идентификатор 0x000AAAAA во наменскиот rx бафер #1. Исто така, во ова сценарио, со користење на посветен тампон може да се филтрира само еден идентификатор на порака и тоа е оној што е запишан во полето EFID1.

  • ID филтер за посветен rx бафер (ID = 0x000AAAAA)
  • Вредност на регистарот F0 (HEX): 0xE00AAAAA
  • Вредност на регистарот F1 (HEX): 0x00000001
  • FO регистарска вредност (BIN): 111 00000000010101010101010101010
  • Вредност на регистарот F1 (BIN): 00 (0) 000000000000000000 00 (000) 000001

Вредности на полињата:

  • EFEC -> `111` -> Складирајте во посветен rx бафер ако филтерот се совпаѓа
  • EFID1 -> `00000000010101010101010101010` -> продолжен ID што филтерот ќе го прифати
    (0x000AAAAA)
  • EFT -> `00` -> оваа вредност не е важна затоа што филтрирањето се складира во посветен RX
    BUFFER и во овој случај вредноста на EFT се игнорира (видете го описот на полето EFEC случај `111`)
  • EFID2[10, 9] -> `00` -> ова поле одлучува дали примената порака ќе се зачува во Rx бафер или ќе се третира како порака A, B или C од секвенцата на пораки за отстранување грешки. Во овој случај софтверската апликација сака да складира порака во Rx бафер
  • EFID2[0,5] -> `000001` -> индекс на посветениот тампон rx каде што ќе се складира соодветната порака (ако сте конфигурирале N посветен rx бафер, овој индекс може да биде во опсегот [0, N -1]). Во овој случај, пораката е зачувана во посветен бафер #1
Класичен филтер за rx FIFO1

Во овој ексampLe, програмирањето на филтерот ќе складира складиште на пораки со идентификатор во опсегот [0 x FFFFF, 0 x1FFFFFF] во rx FIFO 1. Не се разбира дека методот на маскирање е ист како и стандардните филтри за ID. Подолу е објаснето како да програмирате филтер со продолжен опсег на ID во бес [0 x FFFFF, 0 x 1FFFFFF] кој ги складира примените пораки во rx FIFO 1. Ова е филтер за продолжени пораки, така што ќе дадеме вредности на EFID1 = Идентификатор и EFID2 = Маска

  • Вредност на регистарот F0 (HEX): 0x400FFFFF
  • Вредност на регистарот F1 (HEX): 0x9E0FFFFF
  • F0 регистарска вредност (BIN): 010 00000000011111111111111111111
  • Вредност на регистарот F1 (BIN): 10 (0) 11110000011111111111111111111
  • EFT > `10` -> Класичен филтер: EFID1 = филтер, EFID2 = маска
  • EFEC -> `010` -> Чувајте во Rx FIFO 1 ако филтерот се совпаѓа
  • EFID1 = 0 0000 0000 1111 1111 1111 1111 1111 (Идентификатор 0xFFFFF)
  • EFID2 = 1 1110 0000 1111 1111 1111 1111 1111 (маска 0x1E0FFFFF)

Применувајќи ја маската на идентификаторот (малку) со значење на битот за маска (1 = мора да одговара на 0 = не се грижи) го наоѓаме следниов филтер за опсег каде симболот `X` претставува нула или еден.

Филтер = 0 000X XXXX 1111 1111 1111 1111 1111

Значи, сите продолжени пораки во опсегот [0xFFFFFF, 0x1FFFFFF] ќе го поминат филтерот.

Додаток А Референтни документи

  • SPC584Cx/SPC58ECx Референтен прирачник
  • Лист со податоци SPC584Cx/SPC58ECx

Додаток Б Акроними и кратенки

Кратенка Целосно име
МОЖЕ Контролорска област мрежа
FD Флексибилна брзина на податоци
Историја на ревизија на документ
Датум Верзија Промени
01-мар-2021 1 Почетно ослободување.

ВАORTНО ИЗВЕСТУВА --Е - ВЕ СЛЕДНО ПРОЧИТАЈТЕ ВНИМАВАЕ

STMicroelectronics NV и нејзините подружници („ST“) го задржуваат правото да направат промени, корекции, подобрувања, модификации и подобрувања на ST производите и / или на овој документ во кое било време без претходна најава. Купувачите треба да ги добијат најновите релевантни информации за производите ST пред да направат нарачки. Производите на ST се продаваат во согласност со условите и условите за продажба на ST во место за потврда за нарачката.

Купувачите се единствени одговорни за изборот, изборот и употребата на ST производи и ST не превзема никаква одговорност за помош при апликација или дизајн на производи на набавувачи.

Ниту една лиценца, експлицитна или имплицитна, за кое било право на интелектуална сопственост не е дадена од страна на ST овде.

Препродажбата на производите на ST со одредби различни од информациите наведени овде ќе ја поништи секоја гаранција дадена од ST за таков производ.

ST и логото ST се заштитни знаци на ST. За дополнителни информации за ST заштитните знаци, ве молиме погледнете www.st.com/trademarks. Сите други имиња на производи или услуги се сопственост на нивните соодветни сопственици.

Информациите во овој документ ги заменуваат и заменуваат информациите претходно доставени во која било претходна верзија на овој документ.

© 2021 STMicroelectronics – Сите права се задржани

Документи / ресурси

ST TN1348 SPC58x Конфигурирање на филтрите CAN и CAN-FD [pdf] Инструкции
TN1348, SPC58x Конфигурирање на филтри CAN и CAN-FD

Референци

Оставете коментар

Вашата адреса за е-пошта нема да биде објавена. Задолжителните полиња се означени *