شماره‌ی شناسایی منحصر به فرد در میکروکنترلرهای STM32

در این نوشته یکی از تکنیک‌های ایجاد شماره شناسایی منحصر به فرد برای میکروکنترلر STM32 رو توضیح داده ام.

ایجاد ID منحصر به فرد:

بعضی وقت‌ها لازم میشه که برای میکروکنترلرمون یک شماره‌ی شناسایی منحصر به فرد ایجاد کنیم.روش‌های مختلفی برای این کار داریم مثل تولید یک عدد رندوم در ابتدای برنامه و ذخیره‌ی اون توی EEPROM یا حتی خودمون برای هر دستگاه یک عدد تولید کنیم و موقع پروگرم کردن میکروکنتلر اون عدد رو ذخیره کنیم و یا خیلی روش‌های ابتکاری دیگه. اما توی میکروکنترل‌های STM32 کار ساده‌تره، داستان اینه که موقع ساخت هر قطعه شرکت ST  یک ID با طول ۹۶ بیت رو به عنوان شماره‌ی منحصر به فرد توی میکروکنترلرهاش ذخیره میکنه تا موقع انجام تست‌های کنترلر کیفت پردازنده‌هاش بتونه بفهمه که اون پردازنده از کجا اومده و ازکدوم ویفر ساخته شده، پس برای داشتن ID منحصر به فرد کافیه که ما اون مقدار رو بخونیم:)

Unique ID توی میکروکنترل‌های STM32 از سه بخش زیر تشکیل شده:

  • مختصات X و Y روی ویفر که به شکل BCD ذخیره شده.
  • یک عدد بسیار بزرگ.
  • شماره‌ی ویفر.

خوب سوالی که مطرحه اینه که ما چطور این عدد رو پیدا کنیم؟ کافیه ما آدرس خاصی از حافظه‌ی میکروکنترلر رو بخونم (که این آدرس بسته به خانواده‌ی پردازنه متفاوته)، به جدل زیر نگاه کنید:

Starting address Device line  
0x1FFFF7AC F0, F3
0x1FFFF7E8 F1
0x1FFF7A10 F2, F4
0x1FF0F420 F7
0x1FF80050 L0
0x1FF80050 L0, L1 Cat.1,Cat.2

 

توی جدول بالا آدرس شروع ذخیره‌ی اون ۹۶ بیت توی حافظه‌ی میکروکنترلر بسته به خانواده‌ی هر میکروکنترلر اومده، حالا که آدرس حافظه رو می‌دونیم می تونیم با اشاره‌گر مقدار اون رو برگردونیم.

اگر یادتون باشه گفتیم که ۹۶بیت اطلاعات روی میکروکنترلر ما ذخیره شدن و با توجه به ۳۲ بیتی بودن پردازنده‌های STM32 میایم و این ۹۶ بیت رو توی سه تا متغیر (unsigned long (32bit ذخیره می‌کنیم، به عنوان مثال برای پردازنده‌ی STM32f103  از کد زیر استفاده می‌کنیم:

uint32_t id[3];

id[2] = *((unsigned long *) 0x1FFFF7E8);
id[1] = *((unsigned long *) 0x1FFFF7EC);
id[0] = *((unsigned long *) 0x1FFFF7F0);

به همین سادگی ما یک شماره‌ی منحصر به فردبرای هر کدوم از میکروکنترلرهامون داریم.

نویسنده: محمد حسین سالاری.

موارد مشابه

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *