جدول المحتويات:
- الخطوة 1: التجميع
- الخطوة 2: الميزات المستخدمة - الخادم
- الخطوة 3: الدائرة المستخدمة
- الخطوة 4: كود المصدر: Master
- الخطوة 5: كود المصدر: Slave
- الخطوة 6: المحلل: الأجهزة
- الخطوة 7: تثبيت برنامج Saleae
- الخطوة 8: تكوين البيئة لاختباراتنا
- الخطوة 9: تهيئة البيئة لاختباراتنا
- الخطوة 10: تكوين البيئة لاختباراتنا
- الخطوة 11: تكوين البيئة لاختباراتنا
- الخطوة 12: تكوين البيئة لاختباراتنا
- الخطوة 13: الالتقاط: نظرة عامة
- الخطوة 14: الالتقاط: نتيجة تحليل البروتوكول
- الخطوة 15: الالتقاط: القناة 0 والبيانات (SDA)
- الخطوة 16: الالتقاط: القناة 1 والساعة (SCL)
- الخطوة 17: الالتقاط: القناة 2 والمسلسل (TX0)
- الخطوة 18: تكوين البيئة لاختباراتنا
- الخطوة 19: الالتقاط: راسم الذبذبات والمحلل
- الخطوة 20: الالتقاط: ملاحظة الفشل (مثال على الفشل التسلسلي)
- الخطوة 21: قم بتنزيل الملفات
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
يسهل محلل المنطق تخيلك لقطار النبض ، وهو البتات التي تنتقل في خط اتصال. وبالتالي ، فإنه يفتح عينيك لتحديد مشكلة محتملة. لماذا هذا مهم؟ إنها أداة تطوير واكتشاف الأخطاء فعالة للغاية يمكنها توفير الوقت. في هذا الفيديو اليوم ، سنقيم أهمية المحلل المنطقي ، ونلاحظ بعض بروتوكولات الممارسات الشائعة أثناء استخدام هذا الجهاز ، ونقدم مثالاً على فشل الاكتشاف دون مساعدة محلل منطقي.
في هذا الفيديو ، استخدمت نموذجًا غير مكلف نسبيًا (حوالي 35 دولارًا) وفعالًا ، مع واجهة رسومية وبرامج مجانية.
الخطوة 1: التجميع
الخطوة 2: الميزات المستخدمة - الخادم
• صداري للوصلات
• 2 Arduinos (استخدمنا 2 Mega Arduinos 2560)
• محلل منطقي (نستخدم Saleae)
• كبلات توصيل USB لاردوينو ومحلل.
• راسم الذبذبات (اختياري)
• Protoboard
الخطوة 3: الدائرة المستخدمة
هنا لدينا التخطيطي ، الذي يوضح مراقبة ثلاثة دبابيس: TX0 و SDA و SCL. لدينا نوعان من اردوينوس: سيد وعبد.
الخطوة 4: كود المصدر: Master
في الإعداد ، سنقوم بتضمين المكتبة لاتصالات i2c. لقد أدخلنا الشبكة على أنها رئيسية وبدءنا التسلسل 0. في الحلقة ، طلبنا وحدات بايت من البيانات التابعة للتواصل مع رقم Arduino الخاص بنا 8 ، كما حددنا في المثال. نطبع في المسلسل ، والذي سيتم تقييمه باستخدام محلل المنطق ، البايتات المستلمة.
#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin ()؛ // Entra na rede como Mestre (endereço é opcional para o mestre) Serial.begin (115200) ؛ // inicia a serial 0} حلقة باطلة () {Wire.requestFrom (8، 6)؛ // Requisita 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto hoses bytes para Receber… char c = Wire.read () ؛ // recebe cada byte e armazena como caracter Serial.print (c) ؛ // envia o caracter pela serial (na verdade vai para o buffer)} delay (500) ؛ // aguarda meio segundo}
الخطوة 5: كود المصدر: Slave
في رمز الرقيق هذا ، أقوم مرة أخرى بتضمين مكتبة اتصالات i2c. أدخل الشبكة كعبد بالعنوان 8. نسجل حدث الطلب ونربطه بوظيفة "الطلب". لا تحتاج إلى القيام بأي شيء في الحلقة ، فقط أعط 0.1 ثانية تأخير.
أخيرًا ، لدينا وظيفة الطلب التي سيتم تنفيذها عند حدوث حدث الطلب بواسطة السيد ، والذي تم تسجيله في الإعداد. نجيب أخيرًا برسالة حجمها 6 بايت.
#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin (8)؛ // entra na rede como escravo com endereço 8 Wire.onRequest (requestEvent) ؛ // registra o evento de Requisiçao // e associa à função requestEvent} void loop () {delay (100)؛ // não faz nada no loop، apenas aguarda 0، 1 segundo} // função que será Executiveada quando ocorrer o evento de Requisição pelo mestre // foi registrada como evento no setup void requestEvent () {Wire.write ("teste") ؛ // responsee com uma mensagem de 6 bytes}
الخطوة 6: المحلل: الأجهزة
معدل العينة يصل إلى: 24 ميجا هرتز
المنطق: 5 فولت إلى 5.25 فولت
عتبة المستوى المنخفض 0.8 فولت
عتبة عالية المستوى 2.0 فولت
مقاومة إدخال تبلغ حوالي 1 موهم أو أكثر
الخطوة 7: تثبيت برنامج Saleae
يمكن تنزيل البرنامج الذي يستقبل البيانات التي تم التقاطها بواسطة محلل المنطق ويقوم بفك تشفير البتات على الرابط التالي:
الخطوة 8: تكوين البيئة لاختباراتنا
أعرض الواجهة هنا ، والتي أحببتها بشكل خاص لأنها كانت نظيفة.
الخطوة 9: تهيئة البيئة لاختباراتنا
فيما يلي بعض خيارات التكوين:
• بالضغط على اسم القناة يمكننا تغييره.
• يمكننا تحديد ما إذا كانت إحدى القنوات ستعمل كمحفز للالتقاط وشكل الاكتشاف.
• بالضغط مع الاستمرار على رقم القناة ، يمكنك تغيير موقعك في القائمة.
• من خلال النقر على الترس ، يمكننا تكوين تصور القناة وتوسيع …
•… أو إخفاء القناة. سنخفي كل القنوات التي لن نستخدمها.
الخطوة 10: تكوين البيئة لاختباراتنا
بالنقر على أسهم زر "ابدأ" ، هناك خيارات لمعدل أخذ العينات ومدة التسجيل.
لسبب ما ، إذا اكتشف البرنامج أنه لا يمكن الحفاظ على السعر ، فسيتم عرض رسالة وسيتم تخفيض المعدل تلقائيًا حتى الوصول إلى قيمة وظيفية.
الخطوة 11: تكوين البيئة لاختباراتنا
سنقوم أيضًا بتضمين محللي البروتوكول. أولاً ، إنها I2C ، باتباع تعريفات مكتبة WIRE ، وربط القنوات بشكل صحيح. أخيرًا ، سنقدم المحلل إلى التسلسل غير المتزامن. نحن بحاجة إلى توخي الحذر لتكوين المعلمات بشكل صحيح وفقًا للتجميع.
الخطوة 12: تكوين البيئة لاختباراتنا
في علامة التبويب "البروتوكولات التي تم فك ترميزها" ، يجب أن نتحقق من أدوات تحليل البروتوكولات التي تم تمكينها. هناك ، ستظهر البيانات. في علامة التبويب "التعليقات التوضيحية" ، يمكننا إضافة بعض النتائج لتحسين التمثيل البصري. ما عليك سوى النقر على أيقونة "إضافة قياس".
الخطوة 13: الالتقاط: نظرة عامة
في شاشة الالتقاط ، يعرض البرنامج قطار نبض البيانات الخاص بـ SDA و SCL و TX0.
الخطوة 14: الالتقاط: نتيجة تحليل البروتوكول
هنا ، نرى نتيجة الالتقاط. في علامة التبويب "البروتوكولات التي تم فك ترميزها" لدينا:
• طلب الخادم للعبد برقم 8.
• استجابة الرقيق ، ستة أحرف: "t" ، "e" ، "s" ، "t" ، "e" ومسافة.
• يتبع كل منها بت ACK (إقرار) يشير إلى استقبال البايت الصحيح ، باستثناء حرف المسافة NACK (عدم الإقرار).
• بعد ذلك ، نرى نتيجة فك التشفير للمسلسل TX0 ، مما يشير إلى الأحرف المستلمة والمرسلة إلى المحطة التسلسلية Arduino IDE.
الخطوة 15: الالتقاط: القناة 0 والبيانات (SDA)
في هذه الصورة ، لدينا قطار النبض لخط SDA. لاحظ أنه يمكن عرض كل بايت تم إرساله.
الخطوة 16: الالتقاط: القناة 1 والساعة (SCL)
الآن ، لدينا هنا قطار النبض لخط SCL. يمكنك التحقق من مزيد من التفاصيل ببساطة عن طريق وضع الماوس فوق الإشارة ، كما ترى في الصورة. يمكننا أن نرى أن تردد الساعة كان عند 100 كيلو هرتز.
الخطوة 17: الالتقاط: القناة 2 والمسلسل (TX0)
بالنسبة إلى قطار النبض لخط TX0 ، يمكننا رؤية بت البداية ونقاط الإطار لكل بت. لدينا بايت يمثل الحرف "e".
الخطوة 18: تكوين البيئة لاختباراتنا
هنا لدينا عدة خيارات لقراءة البيانات.
الخطوة 19: الالتقاط: راسم الذبذبات والمحلل
انظر هنا إلى الشاشة التي التقطتها من راسم الذبذبات الخاص بي. تمثل إشارة المحلل المنطقي فقط عمليات الكشف العالية والمنخفضة ، ولكنها لا تمثل جودة الإشارة. يمكن ملاحظة هذا بشكل أفضل على الذبذبات.
الخطوة 20: الالتقاط: ملاحظة الفشل (مثال على الفشل التسلسلي)
الآن ، سأعرض مثالاً على فشل متسلسل حدث لي بالفعل. كنت مع مودم GPRS ، النوع المستخدم في الهاتف الخلوي ، بطاقة SIM ، أحاول الاتصال بـ ESP32. لكنها فقط لم تتصل. ثم راجعت مزود الطاقة والأسلاك وقمت بتغيير اللوحة. لقد فعلت كل شيء ، لكن لم يتم إصلاحه. قررت إجراء تحليل منطقي: اكتشفت أن إشارة ESP على UART 115200 بدأت في عدم التطابق. أي أن ESP32 كان يلعب ما يجب أن يكون 115 ، 200 بسرعة مختلفة عن هذه.
تم عرض هذا الخطأ ، الذي تم تحديده بواسطة المحلل اللغوي ، بعلامة X باللون الأحمر. حسب فهمي ، يقول البرنامج أن النقطة التي تحتوي على مثل هذا القليل هي نصف إزاحة في الوقت المناسب. مع زيادة هذا التحول ، قد يأتي وقت يكون فيه كل شيء غير متطابق ، بحيث لا تصل المعلومات إلى الجانب الآخر. عادة ما تصل ، لكن بطاقة SIM800 حساسة وإذا لم تكن دقيقة ، فلن تصل المعلومات إلى الطرف الآخر.
لا أعرف ما إذا كان هذا شيئًا يحدث كثيرًا أم لا ، لكنه حدث لي ، ولذا قررت أن أتناول هذا الموضوع هنا. إذا ماذا فعلت؟ تباطأت. إذا وضعت 9 ، 600 ، 19 ، 200 ، حتى 38 ، 400 ، فإنها تعمل ، وهذا لا يحدث مع 115 ، 200.
الخطوة 21: قم بتنزيل الملفات
بي دي إف
انا لا