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

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

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

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

آدرس ذخیره این ID در هر خانواده‌ از پردازنده‌های ST متفاوته و مطابق جدول زیر است:

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

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

1
2
3
4
5
uint32_t id[3];

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