TN1348 SPC58x د CAN او CAN-FD فلټرونو تنظیم کول
پیژندنه
دا تخنیکي یادښت تشریح کوي چې څنګه د CAN کنټرولرانو لپاره د منلو فلټرونه تنظیم کړئ چې په SPC58x اتومات مایکرو کنټرولرونو کې ځای پرځای شوي. سند د راجستر ترتیبونه بیانوي او ځینې پخواني وړاندې کويampد فلټر ترتیب ګړندی کولو لپاره. دا تشکیلات د کوچني توپیرونو سره پدې کورنۍ کې د ټولو مایکرو کنټرولرونو لپاره غوره کیدی شي. د پخوانيampپه دې سند کې د SPC584Cx/SPC58ECx 32-bit MCU پر بنسټ والړ دي.
کولی شي ختم شيview
SPC584Cx/SPC58ECx اته CAN مثالونه لري چې په دوه مختلف فرعي سیسټمونو کې ځای په ځای شوي لکه څنګه چې د وسیلې حوالې لارښود برخه ضمیمه A حواله سند کې مستند شوي.
په ورته فرعي سیسټم کې ټول CAN کنټرولر به سرچینې شریکوي لکه RAM حافظه، ساعت او نور. هر CAN سب سیسټم د لاندې لوی بلاکونو لخوا تنظیم شوی:
- ماډلر CAN کورونه: د CAN ماډل راجسترونه د جنریک غلام انٹرفیس (GSI) په کارولو سره لاسرسی کیدی شي. د پریفیرال GSI ماډل د هر ماسټر څخه د غوښتنې په توګه کار کوي.
- د CAN-RAM ثالث: دا د مختلف CAN کنټرولرانو لخوا د رام لاسرسي لپاره غوښتنو ترمینځ د منځګړیتوب لپاره اضافي منطق دی.
- SRAM: د CAN فرعي سیسټم به د دې انٹرفیس په کارولو سره د بهرني رام سره انٹرفیس وکړي ، دا SRAM دی.
- د ECC کنټرولر: دا د SRAM حافظې کې د سمون کوډ محاسبه او اعتبار کولو منطق لري.
د SRAM انٹرفیس او حافظې تنظیم لپاره د وسیلې حوالې لارښود برخه ضمیمه A د حوالې سندونو ته مراجعه وکړئ.
د فلټر کولو پیژندنه
د CAN فلټر منطق تاسو ته اجازه درکوي چې فلټرونه په مختلف ډول تنظیم کړئ. د مثال لپارهample، هغه پیغامونه چې د منلو فلټرینګ تیریږي په Rx FIFO (0 یا 1) یا وقف شوي rx بفرونو کې زیرمه کیدی شي. هر فلټر د منلو یا رد کولو فلټر په توګه تنظیم کیدی شي او هم فعال یا غیر فعال کیدی شي. د منلو فلټر لپاره، د هر فلټر لیست د # 0 توکي څخه د فلټر لیست کې د لومړي سمون توکي ته ترسره کیږي. د فلټرونو کارولو دمخه دا لازمي ده چې د پیل پته او د فلټر شمیرې تنظیم کړئ ترڅو د پیغام RAM برخه خوندي کړئ. لاندې انځور a ښیي view د شریکې حافظې نقشه او راجسترونه (له دې امله د هرې برخې لپاره د پیل پته).
شکل 1. د پیغام RAM ترتیب سابقهample
د پیغام RAM پیل کول
د هر فلټر کارولو دمخه، دا اړینه ده چې د پیغامونو اړونده RAM ساحه تنظیم کړئ چیرې چې دوی به زیرمه شي. د دې کولو لپاره، د سافټویر غوښتنلیک باید د هرې فلټر ساحې د پیغام RAM بیس پته څخه آفسیټ (په کلمو کې) ولیکئ. د هرې ساحې لپاره د فلټرونو شمیر باید تنظیم شي، ترڅو کنټرولر پوه شي چې د هر اړوند فلټر حافظې ساحه چیرته پای ته رسیږي په دې سند کې، لکه څنګه چې پخواample څلور فلټرونه به د معیاري پیژندونکو (11 بټونو) لپاره او څلور فلټرونه د غزیدلي پیژندونکو (29 بټونو) لپاره تنظیم شي ، نو د پیغام RAM یوه برخه د 11-bit فلټرونو ذخیره کولو لپاره او بله د 29-bit فلټرونو لپاره خوندي کړئ. د معیاري ID فلټر ساحې د پیل پته تنظیم کولو لپاره، سافټویر باید د SIDFC راجستر (د معیاري ID فلټر ترتیب کولو راجستر) د FLSSA ساحه ولیکي. د تمدید شوي ID فلټرونو لپاره دا اړینه ده چې د XIDFC راجستر د FLESA ساحه ولیکئ (د تمدید شوي ID فلټر تشکیلاتو راجستر). د FLSSA او FLESA ساحې باید د پیغام د RAM اساس پتې څخه "په کلمو کې" حافظه ولري. دا غوښتنلیک څلور معیاري فلټرونه په آفسیټ صفر او څلور پراخ شوي فلټرونه تنظیموي
د معیاري فلټر ترتیب لپاره:
- FLSSA = 0x0: د پیغام RAM بیس آدرس ته د آفسیټ درناوی صفر دی، نو ساحه د پیغام رام په پیل کې پیل کیږي.
- LSS = 4: دا د ترتیب کولو لپاره د فلټرونو شمیر دی. هر فلټر د 'یو' 32 بټ کلمې لخوا جوړ شوی.
په دې ترتیب کې د حافظې یوه برخه د آفسیټ صفر څخه پیل کیږي او د څلورو کلمو اندازه لري.
یادونه: د CAN کنټرولر د پیغام رام ترتیبولو لپاره د کنټرول میکانیزم نلري، دا پدې مانا ده چې پراختیا کوونکی باید محتاط وي چې د ترتیب شوي RAM ساحو سره مخ نشي. لاندې ارقام ښیې چې څنګه د پیژندنې پراخه شوي فلټرونو ذخیره کولو لپاره د حافظې یوه برخه تنظیم کړئ.
د پراخ شوي فلټرونو ذخیره کولو لپاره د RAM ساحې تنظیم کولو لپاره دا اړینه ده چې لاندې ارزښتونه په FLESA او LSE برخو کې پروګرام کړئ.
- FLESA = 0x04: د پیغام RAM اساس پته په اړه په کلمو کې آفسیټ. دا ځکه چې په تیرو ترتیب شوي فلټرونو ساحه کې دا د معیاري ID فلټرونو لپاره 0x04 ټکي خوندي شوي او بیا لږترلږه د کارونې وړ آفسیټ 0x04 دی.
- LSE = 4: دا د ترتیب کولو لپاره د فلټرونو شمیر دی. د تمدید شوي ID لپاره یو فلټر د 'دوه' 32 بټ کلمې لخوا جوړ شوی.
په دې ترتیب کې د حافظې یوه برخه د آفسیټ 0x04 (کلمو) څخه پیل کیږي چې د اتو کلمو اندازه لري (څلور دوه کلمې فلټرونه). له همدې امله، د راتلونکي ترتیب وړ حافظې ساحې لپاره لږترلږه آفسیټ د 0x0C ټکي دي. د پیغام RAM ټولې برخې باید د عناصرو شمیر او اندازې په پام کې نیولو سره تنظیم شي چې په برخه کې به زیرمه شي پرته لدې چې کومې برخې له مینځه یوسي.
یادونه: د یوې کلمې آفسیټ په بایټ آفسیټ بدلولو لپاره، دا اړینه ده چې د کلمې ارزښت څلور سره ضرب کړئ.
Exampد معیاري ID فلټرونو څخه
د پیغام رام ترتیبولو وروسته، تاسو کولی شئ د وسیله فلټرونه تنظیم کړئ.
هر فلټر عنصر په لاندې ډول ترتیب کیدی شي:
- د رینج فلټر
- دوه ځله ID فلټر
- کلاسیک فلټر
- د وقف شوي rx بفر لپاره فلټر (واحد ID فلټر)
لاندې ارقام ښیې چې څنګه د معیاري پیژندونکو (11-bit پیژندونکي) لپاره څلور مختلف ډوله فلټرونه تنظیم کړئ. د معیاري ID لپاره لاندې فلټر عنصر راجستر وکاروئ.
د RX FIFO0 لپاره د رینج فلټر
لاندې یو پخوانیampد FIFO 0 ترلاسه کولو کې د [16x0 , 6xF0] حد کې د پیژندونکو سره د پیغامونو ذخیره کولو لپاره د فلټر کولو لپاره.
د راجستر ارزښت (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په FIFO 0 کې د پیغام پیژندونکي 0 x 0A یا 1 x FF ذخیره کولو لپاره د دوه ګوني ID فلټر.
د راجستر ارزښت (HEX): 0x500A00FF
د راجستر ارزښت (BIN): 01 010 00000001010 (00000) 00011111111
د ساحې ارزښتونه:
- SFT -> `01` -> د SFID1 یا SFID2 لپاره دوه ګونی ID فلټر
- SFEC -> `010` -> په Rx FIFO 1 کې ذخیره کړئ که چیرې فلټر سره سمون ولري
- SFID1 -> `00000001010` -> د معیاري دوه ګوني ID فلټر عنصر لومړی ID
- SFID2 -> `00011111111` -> د معیاري دوه ګوني ID فلټر عنصر دوهم ID
Rx وقف شوي بفر فلټر کول
لاندې یو پخوانی دیampد پیژندنې 0 x 7F0 سره پیغامونه په وقف شوي rx بفر # 0 کې ذخیره کړئ.
د وقف شوي بفر په کارولو سره ، دا ممکنه ده چې یوازې یو پیغام ID فلټر کړئ او دا هغه دی چې په SFID1 ساحه کې لیکل شوی.
د راجستر ارزښت (HEX): 0x3FF00000
د راجستر ارزښت (BIN): 00 111 11111110000 (00000) 00 (000) 000000
- SFT -> `00` -> دا ارزښت مهم ندی ځکه چې په وقف شوي RX بفر کې د ذخیره کولو لپاره فلټر کول او پدې حالت کې د 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 لپاره کلاسیک فلټر
دا پخوانیample ښیې چې څنګه پیغامونه په RX FIFO 0 کې [688x0, 68x0F] حد کې د پیژندونکي سره ذخیره کړئ. د کلاسیک فلټر لپاره ، یو پیژندونکی / ماسک جوړه باید تعریف شي. پیژندونکی باید په SFID1 او ماسک د فلټر عنصر په SFID2 برخو کې ولیکل شي. په کلاسیک فلټر کې، د IDs پیغامونه چې فلټر تیریږي په لاندې ډول پیژندونکي ته د ماسک پلي کولو سره ترلاسه کیږي:
- دا د فلټر بټونو معنی ده -> 1 = باید سره سمون ولري (0 = پروا نه کوي)؛
- د ټولو "1s" څخه جوړ شوي ماسک سره د فلټر درلودل، یوازې یو پیژندونکی به فلټر ته تیریږي (هغه یو چې د 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 (Mask0x7F8)
پیژندونکي ته د ماسک پلي کول (لږ څه) د ماسک بټ معنی سره (1 = باید د 0 سره سمون ولري = پروا نه کوي) موږ لاندې رینج فلټر موندلو چیرې چې د `X` سمبول د صفر یا یو لپاره ولاړ دی.
فلټر = 110 1000 1XXX
بیا، په رینج کې ټول معیاري پیغامونه [0x688، 0x68F] به فلټر تیر کړي.
د ID فلټرونو پراخول
د ورته فلټر ډولونه د پراخ شوي پیژندونکو (29-bit پیژندونکو) لپاره هم پلي کیدی شي.
د RX FIFO0 لپاره پراخ شوی فلټر
په دې کې پخوانيample، دا فلټر به په FIFO 0 کې [0xFFFFF، 1x0FFFFFFF] په حد کې د پیژندونکو سره پیغامونه ذخیره کړي.
د راجستر ارزښتونو لاندې:
- د F0 راجستر ارزښت (HEX): 0x200FFFFF
- د F1 راجستر ارزښت (HEX): 0xDFFFFFFF
- د FO راجستر ارزښت (BIN): 001 00000000011111111111111111111
- د F1 راجستر ارزښت (BIN): 11 (0) 11111111111111111111111111111
د ساحې ارزښتونه:
- EFEC -> `001` -> په Rx FIFO 0 کې ذخیره کړئ که چیرې فلټر سره سمون ولري
- EFID1 ->`00000000011111111111111111111` -> د تمدید شوي ID فلټر عنصر لومړی ID
حد (0xFFFFF) - EFT -> `11` -> د SFID1 څخه SFID2 ته د رینج فلټر
- SFID2 ->`11111111111111111111111111111` -> د معیاري ID فلټر عنصر رینج دوهم ID(0x1FFFFFFF)
د FIFO 1 لپاره دوه ځله ID فلټر
په دې کې پخوانيampد دوه ګوني ID فلټر به په FIFO 0 کې د 0xAAAAA یا 1xBBBBB پیژندونکي پیغامونه ذخیره کړي.
- د F0 راجستر ارزښت (HEX): 0x400AAAAA
- د F1 راجستر ارزښت (HEX): 0x400BBBBB
- د FO راجستر ارزښت (BIN): 010 000000000 10101010101010101010
- د F1 راجستر ارزښت (BIN): 01 (0) 00000000010111011101110111011
د ساحې ارزښتونه:
- EFEC -> `010` -> په Rx FIFO 1 کې ذخیره کړئ که چیرې فلټر سره سمون ولري
- EFID1 -> `00000000010101010101010101010` -> لومړی پراخ شوی ID (0xAAAAAA)
- EFT -> `01` -> د EFID1 یا EFID2 لپاره دوه ګونی ID فلټر
- EFID2 -> `00000000010111011101110111011` -> دوهم تمدید شوی ID (0x000BBBBB)
وقف شوی rx بفر
په دې کې پخوانيampد فلټر کول به د 0x000AAAAA پیژندونکي پیغامونه په وقف شوي rx بفر #1 کې ذخیره کړي. همدارنګه پدې سناریو کې ، د وقف شوي بفر په کارولو سره یوازې یو پیغام ID فلټر کیدی شي او دا هغه دی چې په EFID1 ساحه کې لیکل شوی.
- د وقف شوي rx بفر لپاره ID فلټر (ID = 0x000AAAAA)
- د F0 راجستر ارزښت (HEX): 0xE00AAAAA
- د F1 راجستر ارزښت (HEX): 0x00000001
- د FO راجستر ارزښت (BIN): 111 00000000010101010101010101010
- د F1 راجستر ارزښت (BIN): 00 (0) 000000000000000000 (00) 000
د ساحې ارزښتونه:
- EFEC -> `111` -> په وقف شوي rx بفر کې ذخیره کړئ که چیرې فلټر سره سمون ولري
- EFID1 -> `00000000010101010101010101010` -> پراخ شوی ID چې فلټر به یې ومني
(0x000AAAAAA) - 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، د فلټر پروګرامونه به د پیغامونو ذخیره د پیژندونکي سره په rx FIFO 0 کې [0 x FFFFF, 1 x1FFFFFF] په rx FIFO 0 کې ذخیره کړي. لاندې د غصې [0 x FFFFF, 1 x 1FFFFFF] کې د تمدید شوي ID رینج فلټر برنامه کولو څرنګوالي په اړه توضیحات دي کوم چې ترلاسه شوي پیغامونه په rx FIFO 1 کې ذخیره کوي. دا د تمدید شوي پیغامونو لپاره فلټر دی ، نو موږ به EFID2 = پیژندونکي ته ارزښت ورکړو او EFIDXNUMX = ماسک
- د 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 0 (ماسک 1x0EXNUMXFFFFF)
د ماسک بټ معنی سره پیژندونکي (یو بټ) ته د ماسک پلي کول (1 = باید د 0 سره مطابقت ولري = پروا نه کوي) موږ لاندې رینج فلټر موندلو چیرې چې سمبول "X" د صفر یا یو لپاره ولاړ دی.
فلټر = 0 000X XXXX 1111 1111 1111 1111 1111
نو، په حد کې ټول پراخ شوي پیغامونه [0xFFFFF، 0x1FFFFFF] به فلټر تیر کړي.
ضمیمه د حوالې اسناد
- د SPC584Cx/SPC58ECx د حوالې لارښود
- د SPC584Cx/SPC58ECx ډیټاشیټ
ضمیمه B لنډیزونه او لنډیزونه
لنډیز | بشپړ نوم |
CAN | د کنټرول سیمه شبکه |
FD | د انعطاف وړ ډیټا نرخ |
د اسنادو د بیاکتنې تاریخ
نیټه | نسخه | بدلونونه |
01-مارچ-2021 | 1 | ابتدايي خوشې کول. |
مهم خبرتیا - مهرباني وکړئ په دقت سره ولولئ
د STMicroelect इलेक्ट्रॉनिक्स NV او د هغې فرعي شرکتونه ("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 فلټرونو ترتیب کول |