مقدّمة:
منذ سنوات عديدة حتّى الآن، تربّعت لوحة تطوير المتحكّم الصغريّ Blue Pill (STM32 MCU microcontroller) ضمن عناصر مجتمع هواة الإلكترونيّات الأساسيّة، وبما أنَّها مستنسخة من لوحة (Maple Mini)، فإنَّ استعمال اللوحة الصغيرة مع لوحات الاختبار (breadboard) سهلٌ، وذلك بفضل صفوف أطرافها المزدوجة من قياس 0.1 إنش (2.54 ملم)، والأفضل من ذلك كلّه أنّ تكلفتها لا تتجاوز بضعة دولارات.
ظهرت اللوحات ذات طبقة العزل السوداء (التي تكون خضراء عادةً) في اللوحات الإلكترونيّة ووحدات التحكّم الصغريّة STM32F4، بما في ذلك F401 وF411، وتُلقَّب هذه اللوحات بـ “بلاك بيل” (Black Pill) أو “بلاك بيل 2” (Black Pill 2). تأتي لوحات F103 مع طبقة عزل سوداء أيضاً، لذا لا تخلط بينهما.
تتوفر لوحات F4xx السوداء ضمن نقاط بيع اللوحات الزرقاء نفسها وبسعرٍ مشابه، لكنّها تتميّز بوحدة تحكّم صغريّة أحدث وأكثر فعاليّة، وهذا يثير تساؤلاً عمّا إذا كان من المنطقيّ في هذه المرحلة التبديل إلى هذه اللوحات الجديدة.
إجابتنا هي نعم، ولكن ليس تماماً، فالأجهزة الأحدث أفضلُ لمعظم الأهداف، لكنّها تفتقر إلى مُحوّلات الإشارات التماثليّة إلى رقميّة (ADC) المزدوجة، كما في لوحة F103.
لكنّ العتاد (hardware) ليس الاعتبار الوحيد، فاعتماداً على إطار العمل المفضّل، قد يكون الدعم البرمجيّ غير متوفّر أو غير مكتمل، لذلك دعونا نلقِ نظرة على ما يتطلّبه الانتقال من لوحة “بلاك بيل” إلى لوحة “بلو بيل”.
مكوّناتُ الشريحتَيْن BLUE PILL وBLACK PILL المادّيّةُ:
تتميّز متحكّمات 4F الصغريّة بمواصفات أفضل بكثير من F103؛ إذ للأولى تردّد ساعة أعلى (Clock Speed)، ومساحة تخزين أكبر، وذاكرة وصول عشوائيّة ساكنة (SRAM) أكبر، ولدينا بالمجمل ثلاثة متحكّمات صغريّة للمقارنة:
- F103: 72 ميجا هرتز، 64/128 كيلو بايت ذاكرة ومضية (flash)، 20 كيلو بايت (STM32F103C8T6 SRAM).
- F401: 84 ميجا هرتز، 256 كيلو بايت ذاكرة ومضية، 64 كيلو بايت (STM32F401CCU6 SRAM).
- F411: 100 ميجا هرتز، 512 كيلو بايت ذاكرة ومضية، 128 كيلو بايت (STM32F411CEU6 SRAM).
يتميّز المتحكّم F103 بنواة Cortex-M من نوع M3، في حين أنّ لـ F4xx نواة M4. عمليّاً، يعني هذا أنّنا نحصل -بالإضافة إلى تردّد ساعة أعلى- على معماريّة ARMv7E-M ISA بدلاً من ARMv7-M لنواة M3 التي تتميّز بتعليمات حسابيّة كاملة وتعليمات وحدة معالجة الإشارة الرقميّة (DSP) وتعليمات اختياريّة للفاصلة العائمة أحاديّة الدقّة، ويحتوي كلّ من F401 وF411 على وحدة الفاصلة العائمة أحاديّة النقطة (وحدة مختصّة بمعالجة الأعداد الكسريّة)، لذا فهي أنسب من F103 لحساب النقطة العائمة.
يمكن العثور على اختلافات أكثر تفصيلاً عندما ننظر إلى الوثيقة (AN4904) الصادرة من شركة ST بعنوان: “Migration of microcontroller applications from STM32F1 Series to STM32F4 Access lines“، ويلخص هذا المستند جميع الاختلافات بين عائلتَي المتحكّمات الصغريّة الجديرة بالملاحظة عند الانتقال من واحدة إلى أخرى، سواء كان المخطط الفيزيائيّ لتوزّع الأطراف أو الملحقات أو محمّل الإقلاع (bootloader). ربّما تكون أكبر التغييرات في تخطيط الذاكرة، جنباً إلى جنب مع أنواع معينة من الملحقات، فلا تتردّد في المقارنة معنا في الرسمين التخطيطيَّيْن.
الفرق الملحوظ بين F10 وF4xx هو أنّ أطراف منافذ إدخال وإخراج الأغراض العامّة (general-purpose input/output) GPIO قد نُقِلَت من الناقل المحيطيّ المتقدِّم APB (advance peripheral bus) إلى الناقل عالي الأداء المتقدِّم AHB (advanced high performance bus)، ويعدّ الأخير ناقلاً عالي الأداء للعمليّات ذات النطاق التردّديّ العالي وزمن الانتقال البطيء، وهو متّصل مباشرة بنواة Cortex-M عبر مصفوفة هذا الناقل. ومن ناحية أخرى، يعدّ الناقل المحيطيّ ناقلاً أبسط من دون عمليّات دفق burst operations (وضع الدفق “burst mode” هو وضع مؤقّت لنقل البيانات بسرعة كبيرة؛ إذ يتيح نقل البيانات التسلسليّة بأقصى ما يمكن، وتصل سرعات النقل في هذا الوضع إلى ما بين ضعفي وخمسة أضعاف سرعة بروتوكولات الإرسال العاديّة)، ويتطلّب الوصول إلى الأطراف الموجودة على الناقل المذكور آنفاً من نواة Cortex-M تمرير التعليمات عبر جسر AHB-to-APB إلى الناقل المحيطيّ المتقدّم.
ويعني هذا أنّ عمليّات منافذ الدخل والخرج عامّة الأغراض (GPIO) أسرع في متحكّمات F4xx الصغريّة، خاصّةً العمليّات عالية التردّد. بالإضافة إلى ذلك، تغيَّرت ميزة التعدّد الوظيفيّ لمنافذ الدخل والخرج في متحكّمات F4xx الصغريّة، فأصبحت تسمح بوظيفة بديلة واحدة AF (alternate function) للمنفذ الواحد، وهذا يتوافق مع المسجّلات الخاصّة بـطرفيّات الدخل والخرج.
يُلاحظ أيضاً تغيير كبير في ساعة الزمن الحقيقيّ (RTC)، التي تعدّ في عائلة STM32F1 عبارة عن عداد بسيط 32 بت مع معامل قياس قابل للبرمجة ومسجّل تنبيه، في حين تشمل ساعة الزمن الحقيقيّ في STM32F4xx على تقويم كامل، متضمّناً أجزاء الثواني والثواني والدقائق والساعات والأيّام والشهور والسنوات، ويحتوي أيضاً على منبّه يمكن تشغيله بواسطة أيّ من حقول التقويم هذه، بالإضافة إلى ميزة الطابع الزمنيّ للحدث ودارة المعايرة الرقميّة.
تشهد تقنيّة الوصول المباشر للذاكرة DMA (Direct Memory Access) وواجهة ذاكرة الـ FLASH والمقاطعات بعض التغييرات الطفيفة إلى حدّ ما، والمؤثِّرة فقط عند تنفيذ برمجيّات دون نظام تشغيل (Bare-metal programming)، وتكمن المشكلة الحقيقيّة الوحيدة مع رقائق F4xx في أنّه بدلاً من وجود محولَي إشارات تماثليّة إلى رقميّة بدقّة 12 بت مع 16 قناة مشتركة، فإنّ في F401 وF411 محوّلاً واحداً فقط، ولكنّ المحوّل التماثليّ في F4xx أسرع بقليل (تبلغ السرعة 2.4 Msps مقابل 2 Msps في شريحة F103، وتشير الواحدة إلى مليون عيّنة في الثانية)، ولديها حدّ أدنى من متطلّبات تغذية الجهد (1.7 فولت – 1.8 فولت) .
مقارنة بين الشريحتين BLUE PILL وBLACK PILL:
الاختلافات بين اللوحتين واضحة للغاية، حتّى من دون النظر إلى لون الطبقة العازلة. اللوحة التي أقارنها هنا من إصدار STM32F411، الذي يبدو مصادفةً الإصدارَ الأكثر شيوعاً عند البحث عن هذه اللوحات على موقع أمازون؛ إذ تغيَّر الناقل التسلسليّ العام USB من micro USB-B إلى USB-C، وتغيّر نوع تغليف وحدة التحكّم الصغريّة، بالإضافة إلى وجود زرّ مستخدم إضافيّ، ومذبذبات ذات سرعة عالية، وأخرى ذات سرعة منخفضة HSE (high-speed external)، وLSE (low-speed external) أصغر بكثير. أيضاً اختفت أطراف وضع الإقلاع (boot mode)، واستُبدلت بزرّ، وبقي الثنائيّ الباعث للضوء LED (Light-emitting Diode) الذي يتحكّم فيه المستخدم على الطرف PC13، أمّا أطراف الخرج على جانبي اللوحات، فليست متوافقة بنسبة 100٪. أخيراً، استُبدِل طرف “الأرضي” بطرف يعطي جهد 5 فولت. على الوجه الآخر للوحة، تتميّز F103 بالعديد من العناصر الخاملة ودارة متكاملة واحدة، في حين أنّ لوحة F411 فارغة باستثناء قاعدة لذاكرة (SPI ROM) يمكن استخدامها لإضافة ذاكرة قراءة فقط أو ما شابه.
وبعيداً عن هذه الاختلافات، تظلّ البرمجة وتصحيح أخطاء اللوحة كما هي. يمكن للمرء استخدام البرمجة التسلسليّة مع STM32 MCUs الأصليّة، إمّا عبر أطراف SWD الأربعة، أو منفذ USB العام في حال وجود محمل إقلاع مناسب. يتوفّر أيضاً مخطط اللوحة هنا، ويشير إليها باسم MiniF4 الذي يوضّح أنّ زرّ المستخدم متّصل بالطرف PA دون مقاومة رفع أو خفض.
الدعم البرمجيّ:
تدعم حزمة CMSIS F4 device files بالإضافة إلى إطار العمل HAL (hardware abstraction layer) عائلة المتحكّمات الصغريّة STM32F4 بالكامل، ويفضّل العديد استخدام برنامج STM32CubeMX لتهيئة الشريحة وكتابة الشيفرات البرمجيّة.
وتقدّم حزمة STM32Duino الدعم لكلّ من F401 وF411. ولهواة لغة بايثون، يتوفر العديد من برمجيّات MicroPython للوحتين، أي على الأقلّ بقدر ما يستمرّ Arduino وMicroPython، يجب أن يعمل كود لوحات F103 مع الحدّ الأدنى من التغييرات على لوحات F401 وF411، مع مراعاة التغييرات المحتملة على أطراف الدخل والخرج العامّة، واختلافات ميزة تعدّد الوظائف.
ملخّص:
يأتي وقت على المرء أن يمضي فيه قدماً، وبالنظر إلى أنّ STM32F103 جزء من الجيل الأوّل من متحكّمات ST من وحدات التحكّم الصغريّة ذات النواة Arm Cortex-M، نجد أنّ الوقت ربّما قد حان بالفعل لـ Cortex-M3. ونجد أنّ المنتجات المقلَّدة والنسخ والتقليد الأعمى للطراز STM32F103 الأصليّ قد غمرت سوق لوحات F103 “Blue Pill”، وهذا ما يجعل الحصول على مثل هذه اللوحة أمراً صعباً ما لم يكن المرء جاهزاً للتحقّق من جودتها أو تقبّل بعض هذه المتحكّمات الصغريّة المقلّدة F103.
بينما في المقابل، لا يبدو أنّ لوحات “Black Pill” F401 / F411 تواجه أيّ مشكلات مع النسخ أو المنتجات المقلّدة حتّى الآن، وتكلفتها تقريباً تساوي تكلفة F103 “Blue Pill” الأقدم، وما لم تكن بحاجة إلى محوّل تماثليّ رقميّ ثانٍ، فهي أفضل صفقة، إذ يجب ألّا يشكّل دعم البرامج أيّ عوائق أيضاً.
ما عليك إلّا التّأكد من أنّك تضع في اعتبارك أنّ أطراف الخرج مختلفة قليلاً في لوحات F4xx، وتحقّق مرَّةً أخرى من الدليل المرجعي F401 أو F411 للتّأكّد من أنّ الأطراف التي تستعملها في المشروع هي نفسها في اللوحة الجديدة.
ترجمة: | لما الأوس |
مراجعة: | رلا دنوره |
تدقيق لغوي: | سلام أحمد |
تحرير: | محمد حنان |