
الإلكترونيات الدقيقة هي هواية عصرية في السنوات الأخيرة بفضل Arduino السحرية. ولكن المشكلة هي: مع الاهتمام الواجب ، يمكن لـ DigitalWrite () أن يتطور بسرعة ، لكن ما يجب فعله بعد ذلك ليس واضحًا تمامًا. بذل مطورو Arduino الكثير من الجهود لخفض عتبة الدخول إلى نظامهم الإيكولوجي ، ولكن خارجها لا تزال هناك غابة مظلمة من الدوائر القاسية ، التي يتعذر على أحد الهواة الوصول إليها.
على سبيل المثال ، أوراق البيانات. يبدو أن لديهم كل شيء ، أعتبر واستخدامه. لكن من الواضح أن مؤلفيها لا يضعون أنفسهم في مهمة تعميم ميكروكنترولر ؛ في بعض الأحيان يبدو أنهم يتعمدون إساءة استخدام المصطلحات والاختصارات الغامضة عند وصف الأشياء البسيطة من أجل إرباك غير المستهلين قدر الإمكان. ولكن ليس كل شيء سيئًا للغاية ، عند الرغبة ، يفتح الصندوق.
في هذه المقالة ، سوف أشارك تجربة التواصل مع العلوم الإنسانية مع أوراق البيانات لأغراض هواية. تم تصميم النص لمحبي سروال Arduino التي نشأت من بنطلون Arduino ، وهو يوفر بعض المعلومات عن كيفية عمل المتحكمات الدقيقة.
سأبدأ مع التقليدية
وامض الصمام على اردوينو
وعلى الفور الرمز:
void setup() { DDRB |= (1<<5); } void loop() { PINB = (1<<5); for (volatile uint32_t k=0; k<100000; k++); }
"ما هذا؟ - اسأل القارئ المتطور. - لماذا تكتب شيئًا في سجل إدخال PINB؟ إنه للقراءة فقط! " في الواقع ، تزعم وثائق Arduino ، مثل معظم مقالات التدريب على الإنترنت ، أن هذا السجل للقراءة فقط. اعتقدت ذلك بنفسي حتى أعدت قراءة ورقة البيانات لـ Atmega328p ، وأعد هذه المقالة. وهناك:

هذه وظيفة جديدة نسبيًا ، لم تكن موجودة على Atmega8 ، ولا يعرفها الجميع أو لا يذكرها لأسباب التوافق مع الإصدارات السابقة. لكنها مناسبة تمامًا لإظهار فكرة أن أوراق البيانات تستحق القراءة من أجل استخدام جميع إمكانات الشريحة ، بما في ذلك تلك غير المعروفة. وهذا ليس السبب الوحيد.
لماذا آخر قراءة أوراق البيانات
عادةً ما تبدأ برامج تشغيل arduino ، التي لعبت بما فيه الكفاية مع LEDs و AnalogWrite'ami ، في توصيل جميع أنواع الوحدات النمطية والشرائح باللوحة ، التي توجد بها مكتبات مكتوبة بالفعل. عاجلاً أم آجلاً ، تظهر مكتبة لا تعمل كما يجب. ثم يبدأ الهواة في اختياره لإصلاحه ، وهناك ...
هناك شيء غير مفهوم تمامًا ، لذا يجب عليك الذهاب إلى Google ، وقراءة العديد من البرامج التعليمية ، وسحب أجزاء مناسبة من رمز شخص ما ، وأخيراً الحصول على طريقتك الخاصة. هذا يعطي إحساسًا قويًا بالإنجاز ، ولكن في الواقع ، تذكرنا العملية باختراع دراجة بالهندسة العكسية للدراجات النارية. علاوة على ذلك ، فهم كيف تعمل هذه الدراجة لا يزيد. وأنا أعلم ، منذ أن كنت أنا نفسي أقوم بذلك منذ فترة طويلة.
إذا كنت بدلاً من هذا النشاط الرائع قضيت بضعة أيام في دراسة الوثائق الخاصة بـ Atmega328 ، كنت سأوفر الكثير من الوقت. في النهاية ، هو متحكم بسيط إلى حد ما.
وبالتالي ، من الضروري قراءة أوراق البيانات على الأقل من أجل تخيل كيف يتم ترتيب المتحكم العام عمومًا وما الذي يمكنه القيام به. وأيضا:
- للتحقق وتحسين مكتبات الآخرين. وغالبًا ما يكتبها نفس العشاق الذين اخترعوا الدراجة ؛ أو ، على العكس من ذلك ، فإن المؤلفين جعلوا عمدا حماية مفرطة من الخداع. فليكن أكبر ثلاث مرات وأبطأ ، لكنه سيعمل بالتأكيد ؛
- لتكون قادراً على استخدام الرقائق في المشروع الذي لم يكتب أي شخص المكتبة إليه ؛
- لتسهيل مهمة الهجرة من خط MK إلى آخر ؛
- لتحسين أخيرًا كودهم القديم ، الذي لم يتناسب مع Arduin ؛
- لمعرفة كيفية إدارة أي شريحة مباشرة من خلال سجلاتها ، دون عناء لدراسة جهاز مكتباتها ، إن وجدت.
لماذا الكتابة مباشرة إلى السجلات عندما يكون هناك HAL و LL؟
قاموس مصطلحات
HAL ، طبقة تجريد الأجهزة - مكتبة للتحكم في متحكم عالي المستوى من التجريد. إذا كنت بحاجة إلى استخدام واجهة SPI1 ، فنحن ببساطة نقوم بتهيئة SPI1 وتمكينه دون الحاجة إلى القلق بشأن السجلات المسؤولة عن ماذا.
LL، Low Level API - مكتبة تحتوي على وحدات ماكرو أو بنيات لها عناوين تسجيل تتيح لك الوصول إليها بالاسم. DDRx ، PORTx ، PINx على Atmega هي LL.
تحدث النزاعات حول موضوع "HAL أو LL أو سجلات" بانتظام في تعليقات على Habré. دون المطالبة بالوصول إلى المعرفة بالنجوم ، سأشارك ببساطة تجربتي وأفكاري للهواة.
أكثر أو أقل فرزًا مع Atmega وبعد قراءة مقالات حول STM32 الجميلة ، اشتريت نصف دزينة من اللوحات المختلفة - و Discovery و "Blue Tablets" ، وحتى مجرد رقائق لمنتجاتي محلية الصنع. كلهم غبار في صندوق لمدة عامين. أحيانًا أقول لنفسي: "أنا أتقن STM في نهاية هذا الأسبوع" ، أطلقت CubeMX ، وأعدت إعدادًا لـ SPI ، ونظرت إلى جدار النص الناتج ، بنكهة غنية بحقوق التأليف والنشر STM ، وقررت أن الأمر كان أكثر من اللازم.

لفهم ما كتبه CubeMX هنا ، بالطبع ، يمكنك ذلك. ولكن في الوقت نفسه ، من غير الواقعي تذكر جميع المستحضرات ، بحيث يمكنك لاحقًا كتابتها بأيديك. و debid ذلك ، إذا نسيت بطريق الخطأ وضع علامة في كوبا ، - مرحبا.
بعد مرور عامين ، كنت لا أزال أتعرض لكل أنواع الطعام اللذيذ ، لكن يتعذر عليّ الوصول إلى فهمي ، ورقائق في ST MCU Finder ، وتعثرت بطريق الخطأ على مقال رائع ، وإن كان عن STM8. وفجأة أدركت أنه طوال هذا الوقت كنت أطرق الباب المفتوح: يتم ترتيب سجلات STM بنفس الطريقة التي يتم بها ترتيب أي عضو آخر من أعضاء MK ، والمكعب اختياري للعمل معهم. وهكذا كان ذلك ممكنا؟ ..
HAL وبالتحديد STM32CubeMX هي أداة للمهندسين المحترفين الذين يعملون عن قرب مع رقائق STM32. الميزة الرئيسية هي مستوى عال من التجريد ، والقدرة على الترحيل بسرعة من عضو إلى آخر وحتى من قلب إلى آخر ، مع البقاء داخل خط STM32. نادراً ما يواجه الهواة مثل هذه المهام - عادةً ما يقتصر اختيارنا على MK على نطاق AliExpress ، وغالبًا ما ننتقل بين شرائح مختلفة تمامًا - ننتقل من Atmega إلى STM ، من STM إلى ESP ، جيدًا ، أو ما هو جديد لأصدقائنا الصينيين. لن يساعد HAL هنا ، وستتناول دراسته الكثير من الوقت.
لا يزال هناك LL - ولكن من ذلك إلى سجلات نصف الخطوة. أنا شخصياً أجد أن كتابة وحدات الماكرو الخاصة بي بعناوين السجل مفيدة: أدرس ورقة البيانات بعناية أكبر ، وأعتقد أنني سأحتاج إليها في المستقبل ، وما هو بالتأكيد ، أنا أفضل هيكلي لبرامجي ، والتغلب بشكل عام يساعد على التذكر.
بالإضافة إلى ذلك ، هناك فارق بسيط مع STM32F103 الشهير - لأنه يوجد إصداران غير متوافقين من LL ، مسؤول واحد من STM ، والثاني من Leaf Labs المستخدم في مشروع STM32duino. إذا كنت تكتب مكتبة مفتوحة المصدر (وكان لدي مثل هذه المهمة فقط) ، فيجب عليك إما إنشاء نسختين ، أو الوصول إلى السجلات مباشرة.
أخيرًا ، إن رفض LL ، في رأيي ، يسهل عملية الترحيل ، خاصةً إذا وضعت عليه منذ بداية العمل في المشروع. مثال مبالغ فيه: اكتب وميض Arduin في Atmel Studio بدون LL:
#include <stdint.h> #define _REG(addr) (*(volatile uint8_t*)(addr)) #define DDR_B 0x24 #define OUT_B 0x25 int main(void) { volatile uint32_t k; _REG(DDR_B) |= (1<<5); while(1) { _REG(OUT_B) |= (1<<5); for (k=0; k<50000; k++); _REG(OUT_B) &= ~(1<<5); for (k=0; k<50000; k++); } }
لكي يضيء هذا الرمز وميضًا على وشاح صيني مع STM8 (من ST Visual Desktop) ، يكفي تغيير عنوانين فيه:
#define DDR_B 0x5007 #define OUT_B 0x5005
نعم ، أستخدم ميزة توصيل مؤشر LED على لوحة محددة ، وسوف تومض ببطء شديد ، لكنها ستفعل ذلك!
ما هي أوراق البيانات
في المقالات والمنتديات ، باللغتين الروسية والإنجليزية ، تعني "أوراق البيانات" أي وثائق تقنية للرقائق ، أفعل نفس الشيء في هذا النص. رسميا ، فهي مجرد نوع واحد من هذه الوثائق:
ورقة البيانات - TTX ، تكتيكي المواصفات الفنية. تأكد من وجود أي مكون إلكتروني. المعلومات المرجعية مفيدة للبقاء في متناول اليد ، ولكن لا يوجد شيء خاص للقراءة بعناية. ومع ذلك ، غالبًا ما تقتصر الرقائق البسيطة على أوراق البيانات ، حتى لا تنتج مستندات غير ضرورية ؛ في هذه الحالة ، يتم تضمين الدليل المرجعي هنا.
الدليل المرجعي - الدليل الفعلي ، كتاب صحي يحتوي على أكثر من 1000 صفحة. يتم رسم عمل كل ما يتم دفعه إلى الشريحة بالتفصيل. الوثيقة الرئيسية لتطوير متحكم. بخلاف ورقة البيانات ، تتم كتابة التعليمات لمجموعة واسعة من MK ، فهي تحتوي على الكثير من المعلومات حول الأطراف غير المتوفرة في طرازك المحدد.
دليل البرمجة أو دليل مجموعة التعليمات - تعليمات للأوامر الفريدة من متحكم. مصممة لأولئك الذين البرنامج في المجمع. يستخدم مؤلفو المجمعين هذا بنشاط لتحسين الكود ، لذلك بشكل عام لن نحتاج إليه. لكن النظرة الخاطفة هنا مفيدة لفهم عام ، وراء بعض الأوامر المحددة مثل الخروج من المقاطعة ، وكذلك مع الاستخدام النشط للمصحح.
ملاحظة التطبيق - نصائح مفيدة لحل مشاكل محددة ، مع أمثلة التعليمات البرمجية في كثير من الأحيان.
Errata Sheet - وصف لحالات سلوك الشريحة غير القياسية مع خيارات الالتفافية ، إن وجدت.
ما هو في أوراق البيانات
مباشرة في ورقة البيانات ، قد نحتاج إلى الأقسام التالية:
ملخص الجهاز - تتحدث الصفحة الأولى من ورقة البيانات لفترة وجيزة عن الجهاز. إنه مفيد للغاية في المواقف التي عثرت عليها في مكان ما (شريحة منشار في متجر ، vypayali ، قابلت ذكرًا) وتريد أن تفهم ما هو عليه.
وصف عام - وصف أكثر تفصيلاً لقدرات الرقائق من الخط.
Pinouts - مخططات pinout لجميع الحالات رقاقة المحتملة (الذي الساق لديه دبوس).
وصف الدبوس - وصف للغرض وقدرات كل دبوس.
خريطة الذاكرة - لا نحتاج إلى خريطة عنوان في الذاكرة ، ولكن في بعض الأحيان تتضمن أيضًا جدول عناوين كتل السجل.
خريطة التسجيل - يقع جدول عناوين كتل السجل ، كقاعدة عامة ، في ورقة البيانات ، وفي مرجع المرجع - إزاحة العناوين فقط.
الخصائص الكهربائية - في هذا القسم ، نحن مهتمون في المقام الأول بالتقييمات القصوى المطلقة ، مع سرد الحمل الأقصى على الشريحة. على عكس Atmega328p غير القابل للتطبيق ، فإن معظم أعضاء الكنيست لا يسمحون لك بتوصيل الأحمال الخطيرة بالمسامير ، والتي تصبح مفاجأة غير سارة للاعبين من اردوينو.
حزمة المعلومات - رسومات من حاويات بأسعار معقولة مفيدة في تصميم حزم الدوائر الخاصة بك.
يتكون الدليل المرجعي هيكليا من أقسام على الأطراف المحددة المشار إليها في عنوانها. يمكن تقسيم كل فصل إلى ثلاثة أجزاء:
نظرة عامة ، مقدمة ، ميزات - نظرة عامة على قدرات المحيط ؛
الوصف الوظيفي أو دليل الاستخدام أو مجرد قسم القسم الرئيسي - وصفا نصيا مفصلا لمبادئ الجهاز المحيطي وكيفية استخدامها ؛
السجلات - وصف سجلات التحكم. في حالات بسيطة مثل GPIO أو SPI ، قد يكون هذا كافياً لبدء استخدام الأجهزة الطرفية ، ولكن في كثير من الأحيان لا يزال عليك قراءة الأجزاء السابقة.
كيفية قراءة أوراق البيانات
Datashites من عادة تخيف بعيدا مع حجمها وفرة من الكلمات غير المفهومة. في الواقع ، كل شيء ليس مخيفًا جدًا إذا كنت تعرف عددًا قليلًا من المتسللين.
تثبيت قارئ PDF جيد . تتم كتابة مجموعات البيانات وفقًا للتقاليد المجيدة للتعليمات الورقية ، من الرائع طباعتها ووضعها مع إشارات مرجعية بلاستيكية وخياطةها. لوحظ النص التشعبي فيها بكميات ضئيلة. لحسن الحظ ، على الأقل تم وضع إشارة مرجعية على بنية المستند ، لذلك من الضروري جدًا وجود قارئ جيد مع سهولة التصفح.
Datashit ليس كتاب ستراستروب المدرسي ، لا يتعين عليك قراءة كل شيء فيه . إذا استخدمت النصيحة السابقة ، فما عليك سوى العثور على القسم في شريط الإشارات المرجعية.
قد لا تصف أوراق البيانات ، وخاصة الأدلة المرجعية ، إمكانات شريحة معينة ، ولكن الخط بأكمله . هذا يعني أن نصف ، أو حتى ثلثي المعلومات لا يرتبط بالشريحة الخاصة بك. قبل دراسة سجلات TIM7 ، تحقق من الوصف العام إذا كان لديك واحدة.
يكفي أن تعرف اللغة الإنجليزية على المستوى الأساسي . تتكون مجموعات البيانات من نصف مصطلحات غير مألوفة بالنسبة للمتحدث الأصلي العادي ، بينما يتكون نصفها من هياكل اتصال بسيطة. لا تزال هناك أوراق بيانات صينية جميلة باللغة الإنجليزية الصينية ، حيث نصف المصطلحات أيضًا ، والنصف الثاني عبارة عن مجموعة عشوائية من الكلمات.
إذا واجهت كلمة غير مألوفة ، فلا تحاول ترجمتها باستخدام قاموس اللغة الإنجليزية الروسية. إذا كان التباطؤ يحيرك ، فإن ترجمة "التباطؤ" لن تجعلك أكثر دفئًا. استخدم منتديات Google ، Stack Overflow ، ويكيبيديا ، المنتديات ، حيث سيتم شرح المفهوم الضروري بكلمات بسيطة مع أمثلة .
أفضل طريقة لفهم ما تقرأ هو التحقق في العمل . لذلك ، احتفظ بلوحة التصحيح التي تعرفها جيدًا ، ويفضل أن يكون اثنان ، في حالة إساءة فهم شيء ما ورأيت دخانًا سحريًا.
من المعتاد الاحتفاظ بصفقة بيانات في متناول اليد عندما تقرأ البرنامج التعليمي لشخص ما أو تدرس مكتبة شخص آخر. من الممكن ، ستجد فيه حلًا مثاليًا لمشكلتك. والعكس بالعكس - إذا لم تتمكن من فهم كيفية عمل السجل من خلال ورقة البيانات ، فقم على google: على الأرجح ، شخص ما سبق أن وصف كل شيء بكلمات بسيطة أو ترك رمزًا قابلاً للفهم على github.
قاموس مصطلحات
بعض الكلمات والرموز المفيدة التي تساعدك على التعود على أوراق البيانات بشكل أسرع. ما تم تذكره في اليومين الأخيرين ، الإضافات والتصحيحات مرحب بها.
كهرباء
Vcc ، Vdd - Plus ، الطاقة
VSS ، Vee - "ناقص" ، الأرض
الحالية - الحالية
الجهد - الجهد
لإغراق الحالي - العمل "الأرض" لتحميل الخارجي
لمصدر الحالي - توريد الحمل الخارجي
ارتفاع مصدر / مصدر دبوس - دبوس مع زيادة تحمل الحمل
IO
H ، عالية - على دبوس VCC
L ، منخفض - على دبوس VSS
مقاومة عالية ، Hi-Z ، عائمة - لا يوجد شيء على دبوس ، "مقاومة عالية" ، هو في الواقع غير مرئي للعالم الخارجي.
ضعف السحب لأعلى ، وضعف السحب لأسفل - مقاوم مدمج للسحب / السحب لأسفل ، تناظرية تقريبية تبلغ 50 كيلو أوم (انظر ورقة البيانات). يتم استخدامه ، على سبيل المثال ، لمنع دبوس الإدخال من تعليقه في الهواء ، مما يؤدي إلى ظهور إيجابيات كاذبة. ضعيف - لأنه من السهل "قتله".
دفع وضع إخراج دبوس السحب ، والتي يتحول فيها بين العليا والمنخفضة - الإخراج العادي مع اردوينو.
الصرف المفتوح - تعيين وضع الإخراج ، حيث يمكن أن يكون الدبوس إما منخفض أو عالي المعاوقة / عائم . علاوة على ذلك ، فغالبًا ما لا يكون هذا هجرة مفتوحة "حقيقية" ، فهناك ثنائيات واقية ومقاومات وما إلى ذلك. إنه ببساطة تعيين للأرض / لا شيء.
استنزاف مفتوح حقيقي - ولكن هذا بالفعل استنزاف حقيقي مفتوح: يؤدي الدبوس مباشرة إلى الأرض إذا كان مفتوحًا ، أو في حالة نسيان إذا كان مغلقًا. هذا يعني أنه إذا لزم الأمر ، يمكن السماح بجهد أكبر من Vcc من خلاله ، ولكن لا يزال يتم تحديد الحد الأقصى في ورقة البيانات في قسم التصنيفات القصوى / الجهد المطلق .
واجهات
في سلسلة - متصلة في سلسلة
to chain - جمع الرقائق في سلسلة من خلال اتصال تسلسلي ، مما يزيد من عدد المخرجات.
shift - shift ، عادة ما تشير إلى تحول في البتات. تبعا لذلك ، للتبديل والخروج - استقبال ونقل البيانات قليلا شيئا فشيئا.
مزلاج - صمام يغطي المخزن المؤقت بينما يتم تبديل البتات من خلاله. عند اكتمال النقل ، يتم فتح الصمام ، وتبدأ وحدات البت في العمل.
إلى الساعة - إجراء نقل bitwise ، وتحويل جميع البتات إلى الأماكن المطلوبة.
المخزن المؤقت المزدوج ، سجل الظل ، سجل التحميل المسبق - تعيينات للتاريخ عندما يجب أن يكون السجل قادرًا على قبول البيانات الجديدة ، ولكن احتفظ بها حتى نقطة ما. على سبيل المثال ، لكي تعمل PWM بشكل صحيح ، يجب ألا تتغير معلماتها (دورة العمل ، التكرار) حتى تنتهي الدورة الحالية ، ولكن يمكن بالفعل نقل معلمات جديدة. وفقًا لذلك ، يتم الاحتفاظ بالسجلات الحالية في سجل الظل ، وتندرج السجلات الجديدة في سجل التحميل المسبق ، حيث يتم تسجيلها في سجل الرقائق المقابل.
أي
الواصف - التردد الخائن
لضبط قليلا - تعيين بت إلى 1
لمسح / إعادة تعيين بت - إعادة تعيين بت إلى 0 ( إعادة تعيين - رقاقة ورقة البيانات STM)
للتبديل بعض الشيء - قم بتغيير قيمة البت إلى الاتجاه المعاكس (انظر المثال في بداية المقال)
ما التالي
بشكل عام ، تم تخطيط جزء عملي هنا مع عرض توضيحي لثلاثة مشاريع على STM32 و STM8 ، صُمم خصيصًا لهذه المقالة باستخدام أوراق البيانات ، مع المصابيح ، SPI ، المؤقتات ، PWM و المقاطعات:

لكن النص أكثر من اللازم ، لذا يتم إرسال المشاريع إلى الجزء الثاني.
ستساعدك مهارة قراءة أوراق البيانات في هوايتك ، ولكن من غير المرجح أن تحل محل التواصل المباشر مع زملائك المتحمسين في المنتديات وغرف الدردشة. بالنسبة له ، مع ذلك ، أولاً ، تشديد اللغة الإنجليزية. لهذا السبب انتهيت من قراءتها - جائزة خاصة: درسان مجانيان في Skyeng في الدفعة الأولى باستخدام كود HABR2
.