تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)

قبل بضع سنوات تعرفت على ميكروكنترولر الروسية من ميلاندر. كان عام 2013 ، عندما ناقش المهندسون بقوة النتائج الأولى للبرنامج الفيدرالي المستهدف "تطوير قاعدة المكونات الإلكترونية والإلكترونيات اللاسلكية" للفترة 2008-2015. في ذلك الوقت ، تم بالفعل إطلاق وحدة التحكم K1986BE9x (Cortex-M3 core) ، وظهرت وحدة التحكم 1986BE1T (Cortex-M1 core) للتو. هو ، في حالة LQFP-144 البلاستيكية ، كان لديه التعيين K1986BE1QI (طيران) في الوثائق ، والتعيين MDR32F1QI على الشريحة نفسها. على موقع الشركة المصنعة ، يوجد لاحقة "الهواء" ، نظرًا لأنها تحتوي على واجهات خاصة بصناعة الطائرات (ARINC 429 ، MIL_STD_1553).

والمثير للدهشة ، أنه في وقت توزيع وحدات التحكم هذه ، أعدت شركة Milander مجموعات تصحيح الأخطاء ومكتبة من الإجراءات الفرعية للعمل مع الأجهزة الطرفية ، "ولكن دون أي ضمانات والتزامات إضافية فيما يتعلق بصحة المكتبة". تشبه المكتبة مكتبة Standard Peripheral Library من STMicroelectronics. بشكل عام ، جميع وحدات تحكم ARM المبنية على قلب Cortex-M لها الكثير من القواسم المشتركة. لهذا السبب ، تم التعارف مع وحدات التحكم الروسية الجديدة بسرعة. وبالنسبة لأولئك الذين اشتروا مجموعات تصحيح الأخطاء الملكية ، تم توفير الدعم الفني أثناء الاستخدام.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
مجموعة تصحيح الأخطاء للمتحكم الدقيق 1986BE1T ، © Milandr

ومع ذلك ، مع مرور الوقت ، بدأت تظهر "أمراض الطفولة" من الرقائق والمكتبات الجديدة. عملت أمثلة اختبار البرامج الثابتة دون مشاكل واضحة ، ولكن مع تعطل وأخطاء تعديل كبيرة تمطر. كان أول "ابتلاع" في ممارستي هو الإخفاقات التي يتعذر تفسيرها في وحدة تحكم CAN. بعد مرور عام ، تم اكتشاف مشكلة في الوحدة على وحدة التحكم (الهواء) 1986BE1T لمراجعة مبكرة MCIO (قناة تبادل المعلومات المتعددة). بشكل عام ، كانت جميع مراجعات هذه المتحكمات الدقيقة حتى عام 2016 محدودة الاستخدام. ذهب الكثير من الوقت والأعصاب في تحديد هذه المشكلات ، والتي يمكن العثور على تأكيدها الآن قوائم الخطأ (خطأ).

كانت الميزة غير السارة هي أنه كان من الضروري العمل والتعامل مع الأخطاء ليس على لوحات التصحيح ، ولكن على لوحات الأجهزة النموذجية التي تم التخطيط لها للإنتاج التسلسلي للمصنع. بالإضافة إلى موصل JTAG ، لم يكن هناك عادةً أي شيء هناك. كان من الصعب وغير الملائم الاتصال بمحلل منطقي ، وعادة ما لا توجد مصابيح LED وشاشات. لهذا السبب ، ظهرت فكرة إنشاء لوحة تصحيح الأخطاء الخاصة بي في رأسي.

من ناحية أخرى ، كانت هناك مجموعات تصحيح أخطاء ذات علامة تجارية في السوق ، بالإضافة إلى لوحات رائعة من LDM-Systems من Zelenograd. من ناحية أخرى ، تدفع أسعار هذه المنتجات المرء إلى ذهول ، والوظائف الأساسية بدون بطاقات التوسع لا تلبي التوقعات. لا يهمني اللوح المزود بوحدة تحكم ملحومة ورأس دبوس. واللوحات الأكثر إثارة باهظة الثمن.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
مجلس التطوير MILANDR LDM-HELPER-K1986BE1QI-FULL ، © أنظمة LDM

تمتلك شركة "Milandr" سياسة تسعير وتسويق فريدة من نوعها. لذلك ، من الممكن الحصول على عينات من بعض الدوائر المصغرة مجانًا ، ولكن هذا متاح فقط للكيانات القانونية ويرتبط بالسعي البيروقراطي. بشكل عام ، تكون الدوائر الدقيقة الموجودة في عبوات السيراميك والمعدن ذهبية بالمعنى الحرفي والمجازي. على سبيل المثال ، تبلغ تكلفة وحدة التحكم 1986BE1T في موسكو من 14 إلى 24 ألف روبل. تبلغ تكلفة رقاقة الذاكرة الثابتة 1645RU6U من 15000 روبل. وهذا هو ترتيب الأسعار لجميع المنتجات. نتيجة لذلك ، حتى معاهد البحث المتخصصة التي لديها أوامر حكومية توفر المال وتتجنب مثل هذه الأسعار. تعتبر الرقائق في علبة بلاستيكية للاستخدام المدني أرخص بكثير ، لكنها غير متوفرة من الموردين المشهورين. بالإضافة إلى ذلك ، يبدو لي أن جودة الرقائق في علبة بلاستيكية أسوأ من "الذهب". على سبيل المثال ، لم أتمكن من تشغيل وحدة التحكم K1986BE1QI بسرعة 128 ميجاهرتز دون زيادة إعداد زمن انتقال الفلاش. في الوقت نفسه ، ارتفعت درجة حرارة جهاز التحكم هذا إلى 40-50 درجة مئوية. لكن جهاز التحكم 1986BE1T ("ذهبي") بدأ تشغيله عند 128 ميجا هرتز بدون إعدادات إضافية وظل باردًا. إنه جيد حقًا.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
متحكم دقيق "ذهبي" 1986BE1T ، (c) Milandr

كنت محظوظًا لأن المتحكم الدقيق الموجود في علبة بلاستيكية لا يزال من الممكن شراؤه من أنظمة LDM للبيع بالتجزئة ، وجميع لوحات الدوائر متاحة مجانًا. الشيء السيئ هو أنه على الموقع الموجود على صورة وحدة التحكم ، تظهر علامة تشير إلى أن هذه هي النسخة الرابعة لعام 4 ، أي مع عيوب. فكرت لفترة طويلة - للشراء أو عدم الشراء. مرت عدة سنوات ...

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

شراء متحكم Milandr K1986BE1QI (طيران) ليس بالمهمة السهلة. في نفس متجر Chip and Dip ، في قسم "المواضع المطلوبة" ، وجدت K1986BE92QI فقط مقابل 740 روبل ، لكنه لم يناسبني. الخيار الوحيد هو شراء مراجعة غير جديدة من LDM-Systems مقابل 2000 روبل. نظرًا لأنني لم أجد بديلًا في أي مكان آخر ، فقد قررت شراء ما كان. لدهشتي السارة ، لقد باعوا لي وحدة تحكم في الإصدار جديدة تمامًا لشهر ديسمبر 2018 ، المراجعة 6+ (1820). ولا يزال الموقع يحتوي على صورة قديمة ، وفي وقت كتابة هذا التقرير لم تكن وحدة التحكم متوفرة ...

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
متحكم K1986BE1QI (طيران) في عبوات تكنولوجية ، (ج) صورة للمؤلف

المواصفات الفنية الرئيسية للوحة التطوير الخاصة بي MDB1986 التالية:

  • - مبرمج مصحح مدمج متوافق مع J-Link و CMSIS-DAP ؛
  • ذاكرة ثابتة 4 ميجا بت (256 كيلو × 16 ، 10 نانومتر) ؛
  • رقاقة ذاكرة فلاش 64Mbit ، Winbond 25Q64FVSIG ؛
  • جهاز الإرسال والاستقبال بواجهة RS-232 مع خطوط RTS و CTS ؛
  • واجهات وموصلات لـ Ethernet و USB و CAN ؛
  • وحدة تحكم في العرض من 7 شرائح MAX7221 ؛
  • موصل دبوس للعمل مع MCIO (MIL_STD_1553) و ARINC429 ؛
  • الترانزستور الضوئي Everlight PT17-21C ؛
  • خمسة مصابيح LED ملونة وزر إعادة تعيين وزرين للمستخدم ؛
  • يتم تشغيله بواسطة منفذ USB بقوة 5 فولت ؛
  • أبعاد لوحة الدوائر المطبوعة 100 × 80 مم

لقد أحببت لوحات سلسلة STM-Discovery لأنها تحتوي على مصحح أخطاء مبرمج مدمج - ST-Link. يعمل ST-Link ذو العلامات التجارية فقط مع وحدات تحكم STMicroelectronics ، ولكن منذ عامين أصبح من الممكن تحديث البرامج الثابتة في ST-Link والحصول على مصحح أخطاء SEGGER J-Link OB (على متن الطائرة). من الناحية القانونية ، هناك قيود على استخدام مثل هذا المصحح فقط مع لوحات STMicroelectronics ، ولكن في الواقع فإن الإمكانات غير محدودة. وبالتالي ، مع وجود J-Link OB ، يمكنك الحصول على مصحح أخطاء مبرمج مدمج على لوحة التصحيح. ألاحظ أن منتجات LDM-Systems تستخدم محول CP2102 (Usb2Uart) ، والذي يمكن فقط وميضه.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
متحكمات STM32F103C8T6 ، حقيقية وليست كذلك ، (ج) صورة للمؤلف

لذلك ، كان من الضروري شراء STM32F103C8T6 الأصلي ، لأن البرامج الثابتة ذات العلامات التجارية لن تعمل بشكل صحيح مع النسخة. لقد شككت في هذه الأطروحة وقررت تجربة وحدة التحكم CS32F103C8T6 من شركة CKS الصينية. ليس لدي أي شكاوى حول وحدة التحكم نفسها ، لكن البرنامج الثابت ST-Link المملوك لم يعمل فيه. عمل J-Link جزئيًا - تم اكتشاف جهاز USB ، لكن المبرمج لم يؤد وظائفه وتذكره باستمرار بأنه "معيب".

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
خطأ عند تشغيل مصحح الأخطاء على وحدة تحكم غير أصلية

لم أهدأ من هذا وكتبت أولاً البرنامج الثابت لوميض LED ، ثم نفذت طلب IDCODE باستخدام بروتوكول JTAG. قام مبرمج ST-Link الذي كان لدي على لوحة Discovery وبرنامج ST-Link Utility بوميض CS32F103C8T6 دون مشاكل ، ونتيجة لذلك ، تأكدت من أن لوحي كان يعمل. من دواعي سروري ، أن وحدة التحكم الهدف K1986BE1QI (طيران) أصدرت بمرح IDCODE عبر خط TDO.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
مخطط الذبذبات لخط إشارة TDO مع استجابة IDCODE المشفرة ، (ج) صورة للمؤلف

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
لذا ، أصبح منفذ SWD مفيدًا لتصحيح أخطاء مصحح الأخطاء نفسه والتحقق من IDCODE

كان هناك خيار مع مصحح أخطاء CMSIS-DAP (منفذ الوصول إلى التصحيح). إن بناء مشروع من مصادر ARM ليس بالمهمة السهلة ، لقد أخذت المشروع منه X893، ثم حاولت أيضًا DAP42. لسوء الحظ ، توقف Keil uVision ولم يرغب في العمل معهم. نتيجة لذلك ، قمت باستبدال شريحة مصحح الأخطاء بـ STM32F103C8T6 الخاصة ولم أعد أبدًا إلى هذه المشكلة.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
تشغيل ناجح لمصحح الأخطاء المدمج J-Link STLink V2

عندما أصبحت جميع المكونات الرئيسية للوحة تصحيح الأخطاء المستقبلية متاحة ، دخلت إلى Eagle CAD ووجدت أنها لم تكن في مكتبة العناصر. لا يوجد مكان أذهب إليه - كان علي أن أرسمهم بنفسي. في الوقت نفسه ، صنعت مقاعد للذاكرة ، وموصل HanRun للإيثرنت ، وأضفت إطارات للمقاومات والمكثفات. يمكن العثور على ملف المشروع ومكتبة المكونات لدي على جيثب.

رسم تخطيطي للوحة التصحيح MDB1986تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)

يتم تشغيل اللوحة بواسطة مصدر تيار مستمر بجهد 5 فولت من منفذ USB. يوجد منفذا USB من النوع B على اللوحة. واحد للمبرمج والثاني لوحدة التحكم K1986BE1QI. يمكن أن يعمل المجلس من أي من هذه المصادر أو كليهما في نفس الوقت. يتم تنفيذ أبسط تعديل للحمل وحماية لخطوط الطاقة على ثنائيات شوتكي ، في دائرتي D2 و D3 (SS24). في الرسم التخطيطي أيضًا ، يمكنك رؤية الصمامات ذاتية الاستعادة F1 و F2 عند 500mA. خطوط إشارة منفذ USB محمية بواسطة مجموعة الصمام الثنائي USBLC6-2SC6.

دائرة مبرمج مصحح الأخطاء ST-Link معروفة للكثيرين ، ويمكن العثور عليها في وثائق لوحات STM32-Discovery ومصادر أخرى. بالنسبة للبرامج الثابتة الأساسية لاستنساخ ST-Link / J-Link-OB / DAP (اختياري) ، قمت بإخراج خطوط SWDIO (PA13) و SWCLK (PA14) و GND. يستخدم الكثيرون UART للبرامج الثابتة ويضطرون إلى سحب وصلات BOOT. لكن SWD أكثر ملاءمة بالنسبة لي ، بالإضافة إلى أن هذا البروتوكول يسمح بالتصحيح.

يتم تشغيل جميع مكونات اللوحة تقريبًا بواسطة 3.3 فولت ، والتي تأتي من منظم الجهد AMS1117-3.3. لقمع التداخل الكهرومغناطيسي والارتفاعات الحالية ، يتم استخدام مرشحات LC من المكثفات وخنق سلسلة BLM31PG.

بشكل منفصل ، تجدر الإشارة إلى برنامج تشغيل شاشة العرض MAX7 المكون من 7221 أقسام. وفقًا للمواصفات ، يتراوح مصدر الطاقة الموصى به من 4 إلى 5.5 فولت ، ومستوى الإشارة المرتفع (المنطق الأول) لا يقل عن 3.5 فولت (0.7 × VCC) ، عند تشغيله بجهد 5 فولت. بالنسبة لوحدة التحكم K1986BE1QI (الطيران) ، يتوافق خرج الوحدة المنطقية مع جهد من 2.8 إلى 3.3 فولت. من الواضح أن هناك عدم تطابق في مستويات الإشارة يمكن أن يعطل التشغيل العادي. قررت تشغيل MAX7221 من 4 فولت وخفض مستويات الإشارة إلى 2.8 فولت (0.7 × 4 = 2.8). للقيام بذلك ، يتم تثبيت الصمام الثنائي D4 (RS1A أو FR103) في سلسلة في دائرة طاقة السائق. إجمالي انخفاض الجهد هو 0.9 فولت (0.3 فولت ديود شوتكي و 0.6 فولت ديود) ، وكل شيء يعمل.

تتوافق معظم المنافذ الموجودة في متحكم K1986BE1QI (طيران) مع إشارات تصل إلى 5 فولت. لذلك ، فإن استخدام جهاز الإرسال والاستقبال MCP2551 CAN ، والذي يعمل أيضًا من 5 فولت ، لا يسبب مشاكل. يُظهر الرسم التخطيطي شريحة MAX232 كجهاز إرسال واستقبال RS-3232 ، لكنني في الحقيقة استخدمت SN65C3232D من شركة Texas Instruments ، لأنني يعمل من 3.3 فولت ويوفر سرعة تصل إلى 1 ميجابت / ثانية.

يوجد 4 رنانات كوارتز على اللوحة - واحد لمصحح الأخطاء (8 ميجاهرتز) وثلاثة للمتحكم الدقيق المستهدف K1986BE1QI (طيران) بقيم اسمية تبلغ 32.768 كيلو هرتز ، 16 ميجاهرتز ، 25 ميجاهرتز. هذه مكونات ضرورية لأن. معلمات مولد RC المدمج في نطاق واسع من 6 إلى 10 ميجاهرتز. التردد 25 ميجاهرتز مطلوب لتشغيل وحدة تحكم Ethernet المدمجة. لسبب ما ، ينص موقع Milandra على الويب (ربما عن طريق الخطأ) على عدم وجود Ethernet في العلبة البلاستيكية. لكننا سنعتمد على المواصفات والحقائق.

كان الحافز المهم لإنشاء لوحة تصحيح الأخطاء الخاصة بك هو فرصة العمل مع ناقل نظام EBC (متحكم ناقل خارجي) ، والذي يعد في الأساس منفذًا متوازيًا. يسمح لك المتحكم الدقيق K1986BE1QI (الطيران) بالاتصال والعمل مع شرائح الذاكرة الخارجية والأجهزة الطرفية ، مثل ADC و FPGA وما إلى ذلك. إن إمكانيات ناقل النظام الخارجي كبيرة جدًا - يمكنك العمل مع 8 بت و 16 بت و 32 بت من ذاكرة الوصول العشوائي الثابتة و ROM و NAND Flash. لقراءة / كتابة بيانات 32 بت ، يمكن لوحدة التحكم إجراء عمليتين متناظرتين تلقائيًا لدوائر متناهية الصغر 2 بت ، و 16 عمليات لدوائر 8 بت. من الواضح أن عملية الإدخال / الإخراج 4 بت ستكون الأسرع مع ناقل بيانات 32 بت. تشمل العيوب الحاجة إلى تشغيل البرنامج ببيانات 32 بت ، وسيتعين على اللوحة وضع 32 مسارًا.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
شرائح SRAM ، المستخدمة (احزر أيها معيب)

الحل المتوازن هو استخدام رقائق ذاكرة 16 بت. انتهى بي الأمر برقائق شركة Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL ، 16x256k ، 10ns ، 3.3 فولت). بالطبع ، تمتلك شركة "Milandr" شرائح ذاكرة ثابتة خاصة بها السلسلة 1645RUلكنها باهظة الثمن وغير متوفرة. بدلاً من ذلك ، هناك Samsung K6R4016V1D متوافق مع رقم التعريف الشخصي. لقد ذكرت سابقًا أن الدوائر المتكاملة كانت مستعملة وأن النسخة التي قمت بتثبيتها كانت متعثرة وغير منتظمة في خط البيانات الخامس عشر. استغرق الأمر عدة أيام للعثور على أخطاء في الأجهزة ، وكلما زاد الشعور بالرضا عندما استبدلت الشريحة التالفة بأخرى صالحة. مهما كان الأمر ، فإن سرعة العمل مع الذاكرة الخارجية تترك الكثير مما هو مرغوب فيه.

الناقل الخارجي ووضع StandAloneيتميز متحكم K1986BE1QI (الطيران) بوضع StandAlone الفريد ، والذي تم تصميمه للوصول الخارجي المباشر إلى وحدات تحكم Ethernet و MCIO (MIL_STD_1553) عبر ناقل خارجي ، بينما يكون النواة في حالة إعادة تعيين ، أي غير مستعمل. هذا الوضع مفيد للمعالجات و FPGAs التي لا تحتوي على Ethernet و / أو MCIO.
Схема подключения следующая:

  • ناقل البيانات MCU (D0-D15) => SRAM (I / O0-I / O15) ،
  • عنوان ناقل MCU (A1-A18) => SRAM (A0-A17) ،
  • تحكم MCU (nWR ، nRD ، PortC2) => SRAM (WE ، OE ، CE) ،
  • يتم توصيل SRAM (UB ، LB) أو سحبها إلى الأرض من خلال المقاوم.

يتم سحب خط CE إلى الطاقة من خلال المقاوم ، ولا يتم استخدام دبابيس إحضار بايت MCU (BE0-BE3). تحت المفسد أعطي الكود لتهيئة المنافذ ووحدة التحكم في الناقل الخارجي.

تهيئة المنافذ ووحدة تحكم EBC (وحدة تحكم ناقل خارجي)

void SRAM_Init (void)
{
	EBC_InitTypeDef          EBC_InitStruct = { 0 };
	EBC_MemRegionInitTypeDef EBC_MemRegionInitStruct = { 0 };
	PORT_InitTypeDef         initStruct = { 0 };

	RST_CLK_PCLKcmd (RST_CLK_PCLK_EBC, ENABLE);

	PORT_StructInit (&initStruct);
	//--------------------------------------------//
	// DATA PA0..PA15 (D0..D15)                   //
	//--------------------------------------------//
	initStruct.PORT_MODE      = PORT_MODE_DIGITAL;
	initStruct.PORT_PD_SHM    = PORT_PD_SHM_ON;
	initStruct.PORT_SPEED     = PORT_SPEED_FAST;
	initStruct.PORT_FUNC      = PORT_FUNC_MAIN;
	initStruct.PORT_Pin       = PORT_Pin_All;
	PORT_Init (MDR_PORTA, &initStruct);	
	//--------------------------------------------//
	// Address PF3-PF15 (A0..A12), A0 - not used. //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_ALTER;
	initStruct.PORT_Pin       = PORT_Pin_4  | PORT_Pin_5  |
	                            PORT_Pin_6  | PORT_Pin_7  |
	                            PORT_Pin_8  | PORT_Pin_9  |
								PORT_Pin_10 | PORT_Pin_11 |
	                            PORT_Pin_12 | PORT_Pin_13 |
								PORT_Pin_14 | PORT_Pin_15;
	PORT_Init (MDR_PORTF, &initStruct);	
	//--------------------------------------------//
	// Address PD3..PD0 (A13..A16)                //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_OVERRID;
	initStruct.PORT_Pin       = PORT_Pin_0 | PORT_Pin_1 |
	                            PORT_Pin_2 | PORT_Pin_3;
	PORT_Init (MDR_PORTD, &initStruct);	
	//--------------------------------------------//
	// Address PE3, PE4 (A17, A18)                //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_ALTER;
	initStruct.PORT_Pin       = PORT_Pin_3 | PORT_Pin_4;
	PORT_Init (MDR_PORTE, &initStruct);	
	//--------------------------------------------//
	// Control PC0,PC1 (nWE,nOE)                  //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_MAIN;
	initStruct.PORT_Pin       = PORT_Pin_0 | PORT_Pin_1;
	PORT_Init (MDR_PORTC, &initStruct);	
	//--------------------------------------------//
	// Control PC2 (nCE)                          //
	//--------------------------------------------//
	initStruct.PORT_PD        = PORT_PD_DRIVER;
	initStruct.PORT_OE        = PORT_OE_OUT;
	initStruct.PORT_FUNC      = PORT_FUNC_PORT;
	initStruct.PORT_Pin       = MDB_SRAM_CE;
	PORT_Init (MDR_PORTC, &initStruct);	

	//--------------------------------------------//
	// Initialize EBC controler                   //
	//--------------------------------------------//
	EBC_DeInit();
	EBC_StructInit(&EBC_InitStruct);
	EBC_InitStruct.EBC_Mode             = EBC_MODE_RAM;
	EBC_InitStruct.EBC_WaitState        = EBC_WAIT_STATE_3HCLK;
	EBC_InitStruct.EBC_DataAlignment    = EBC_EBC_DATA_ALIGNMENT_16;
	EBC_Init(&EBC_InitStruct);
	
	EBC_MemRegionStructInit(&EBC_MemRegionInitStruct);
	EBC_MemRegionInitStruct.WS_Active   = 2;
	EBC_MemRegionInitStruct.WS_Setup    = EBC_WS_SETUP_CYCLE_1HCLK;
	EBC_MemRegionInitStruct.WS_Hold     = EBC_WS_HOLD_CYCLE_1HCLK;
	EBC_MemRegionInitStruct.Enable_Tune = ENABLE;
	EBC_MemRegionInit (&EBC_MemRegionInitStruct, EBC_MEM_REGION_60000000);
	EBC_MemRegionCMD(EBC_MEM_REGION_60000000, ENABLE);

	// Turn ON RAM (nCE)
	PORT_ResetBits (MDR_PORTC, MDB_SRAM_CE);
}

تحتوي وحدة التحكم الدقيقة في حزمة LQFP-144 والذاكرة في حزمة TSOP-44 على العديد من المسامير المتصلة وتشغل مساحة كبيرة من PCB. بعد أن كانت لدي خبرة في حل مشاكل التحسين في مجال الاقتصاد ، كان من الواضح بالنسبة لي أن هذه الدوائر الدقيقة يجب أن توضع على السبورة في المقام الأول. في مصادر مختلفة ، جئت عبر تقييمات المديح حول CAD TopoR (موجه طوبولوجي). لقد قمت بتنزيل الإصدار التجريبي وتمكنت من تصدير مشروعي من Eagle CAD هناك فقط عندما أزلت جميع المكونات تقريبًا. لسوء الحظ ، لم يساعدني برنامج TopoR في وضع حتى 10 عناصر على السبورة. أولاً ، تم وضع جميع المكونات في الزاوية ، ثم ترتيبها على طول الحافة. لم يرضيني هذا الخيار ، وقضيت وقتًا طويلاً في تتبع اللوحة يدويًا في بيئة Eagle CAD المألوفة.

تعد طباعة الشاشة عنصرًا مهمًا في لوحة الدوائر المطبوعة. في لوحة التصحيح ، لا يجب أن يكون هناك توقيعات للمكونات الإلكترونية فحسب ، بل يجب توقيع جميع الموصلات. على الجانب الخلفي من اللوحة ، وضعت تذكيرات الجداول بوظائف منافذ وحدة التحكم (رئيسية ، بديلة ، متجاوزة ، فعلية). لقد طلبت تصنيع لوحات الدوائر المطبوعة في الصين في مكتب PCBWay المعروف. لن أمدح ، لأن الجودة جيدة. يمكنهم القيام بعمل أفضل مع التحمل الأصغر ، ولكن مقابل رسوم.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
تصنيع لوحات الدوائر المطبوعة MDB1986 ، (ج) صورة من قبل المؤلف

اضطررت إلى فك المكونات "الموجودة على الركبة" باستخدام مكواة لحام بقوة 40 واط ولحام POS-61 ، لأنني نادرًا ما ألحم ، 1-2 مرات في السنة ، ويجف معجون اللحام. اضطررت أيضًا إلى تغيير وحدة التحكم الصينية CS32F103 إلى STM32F103 الأصلية ، ثم استبدال الذاكرة أيضًا. بشكل عام ، أنا الآن راضٍ تمامًا عن النتيجة ، على الرغم من أنني لم أتحقق بعد من تشغيل RS-232 و CAN.

تطوير لوحة تصحيح الأخطاء لـ K1986BE1QI (الطيران)
لوحة التصحيح MDB1986 قيد التشغيل - يضيء ويدفئ ، (ج) صورة للمؤلف

على موقع "Milandra" يمكنك أن تجد ما يكفي مواد التعلم لتعلم المتحكمات سلسلة 1986BE9 (Cortex-M3 core) ، ولكن بالنسبة إلى متحكم K1986BE1QI (الطيران) ، لا أرى أي شيء هناك. بعد مراجعة المواد المنشورة هناك ، والكتيبات ، والعمل المخبري للجامعات ، يسعدني أن الموظفين يتم تدريبهم في جميع أنحاء البلاد للعمل مع المراقبين الروس. تم إعداد معظم المواد التدريبية للعمل مع منافذ الإدخال / الإخراج ، وأجهزة ضبط الوقت ، و ADC ، و DAC ، و SPI ، و UART. يتم استخدام IDEs مختلفة (Keil ، IAR ، CodeMaster). في مكان ما يقومون بالبرمجة باستخدام سجلات CMSIS ، وفي مكان ما يستخدمون مكتبة MDR. يجب ذكر المورد ابدأ Milandr، والذي يحتوي على العديد من المقالات من المبرمجين الممارسين. وبالطبع ، لا ينبغي أن ننسى منتدى ميلاندرا.

التفكير في ميلاندراتتطور الإلكترونيات الدقيقة في روسيا ، وتلعب شركة "Milandr" دورًا مهمًا في هذه العملية. تظهر متحكمات دقيقة جديدة مثيرة للاهتمام ، على سبيل المثال ، 1986BE81T و Elektrosila مع واجهات SpaceWire و MKIO (كما في 1986BE1 وربما مع نفس المشكلات) ، إلخ. لكن بالنسبة للطلاب والمدرسين والمهندسين المدنيين العاديين ، ليس من الواقعي شراء مثل هذه الدوائر الدقيقة. هذا يعني أن المجتمع الهندسي لن يكون قادرًا على تحديد أخطاء ومشاكل هذه الشريحة بسرعة. يبدو لي أنه من الضروري أولاً إنتاج دوائر دقيقة في علبة بلاستيكية ، وتوزيعها على جميع الأطراف المهتمة ، وفقط بعد الموافقة (الموافقة اللاتينية - الموافقة ، والاعتراف) يمكن للمتخصصين إعداد مراجعة في علبة معدنية من السيراميك مع الحماية من كل العوامل الرهيبة. آمل في المستقبل القريب أن نكون جميعًا سعداء بالمشاريع الجديدة التي تم الإعلان عنها في المعارض.
يمكن لأي شخص تكرار وتعديل واستخدام لوحة التصحيح التي طورتها في العملية التعليمية. بادئ ذي بدء ، لقد صنعت لوحًا لنفسي ، لكن اتضح أنه جيد جدًا قررت المشاركة مع الجميع.

K1986BE1QI (air) هي أداة تحكم مثيرة للاهتمام للغاية ذات واجهات فريدة يمكن استخدامها في الجامعات لتعليم الطلاب. أعتقد أنه بعد تصحيح الأخطاء التي تم تحديدها في وحدة التحكم واجتياز اختبارات الشهادة ، ستطير وحدة التحكم بالمعنى الحقيقي للكلمة!

المصدر: www.habr.com

إضافة تعليق