
สารบัญ:
- ขั้นตอนที่ 1: การประกอบ
- ขั้นตอนที่ 2: คุณสมบัติที่ใช้ - เซิร์ฟเวอร์
- ขั้นตอนที่ 3: วงจรที่ใช้
- ขั้นตอนที่ 4: รหัสที่มา: Master
- ขั้นตอนที่ 5: รหัสที่มา: Slave
- ขั้นตอนที่ 6: ตัววิเคราะห์: ฮาร์ดแวร์
- ขั้นตอนที่ 7: การติดตั้งซอฟต์แวร์ Saleae
- ขั้นตอนที่ 8: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
- ขั้นตอนที่ 9: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
- ขั้นตอนที่ 10: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
- ขั้นตอนที่ 11: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
- ขั้นตอนที่ 12: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
- ขั้นตอนที่ 13: จับภาพ: ภาพรวม
- ขั้นตอนที่ 14: จับภาพ: ผลลัพธ์ของการวิเคราะห์โปรโตคอล
- ขั้นตอนที่ 15: จับภาพ: ช่อง 0 และ Data (SDA)
- ขั้นตอนที่ 16: จับภาพ: ช่อง 1 และนาฬิกา (SCL)
- ขั้นตอนที่ 17: จับภาพ: ช่อง 2 และซีเรียล (TX0)
- ขั้นตอนที่ 18: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา
- ขั้นตอนที่ 19: จับภาพ: ออสซิลโลสโคปและตัววิเคราะห์
- ขั้นตอนที่ 20: การจับภาพ: การสังเกตความล้มเหลว (ตัวอย่างความล้มเหลวแบบอนุกรม)
- ขั้นตอนที่ 21: ดาวน์โหลดไฟล์
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12



ตัววิเคราะห์ลอจิกช่วยอำนวยความสะดวกในการแสดงภาพพัลส์เทรน ซึ่งเป็นชิ้นส่วนที่เดินทางในสายการสื่อสาร ดังนั้นจึงเปิดตาของคุณเพื่อระบุปัญหาที่อาจเกิดขึ้น ทำไมสิ่งนี้จึงสำคัญ? เป็นเครื่องมือในการพัฒนาและตรวจจับข้อผิดพลาดที่มีประสิทธิภาพมากซึ่งช่วยให้คุณประหยัดเวลาได้ ในวิดีโอนี้วันนี้ เราจะประเมินความสำคัญของตัววิเคราะห์เชิงตรรกะ สังเกตโปรโตคอลของแนวทางปฏิบัติทั่วไปบางอย่างขณะใช้อุปกรณ์นี้ และยกตัวอย่างความล้มเหลวในการตรวจจับโดยไม่ต้องใช้ตัววิเคราะห์ลอจิก
ในวิดีโอนี้ ฉันใช้โมเดลที่มีประสิทธิภาพและราคาไม่แพง (ประมาณ 35 เหรียญสหรัฐ) โดยมีอินเทอร์เฟซแบบกราฟิกและซอฟต์แวร์ฟรี
ขั้นตอนที่ 1: การประกอบ
ขั้นตอนที่ 2: คุณสมบัติที่ใช้ - เซิร์ฟเวอร์

• จัมเปอร์สำหรับการเชื่อมต่อ
• 2 Arduinos (เราใช้ 2 Mega Arduinos 2560)
• Logical Analyzer (เราใช้ Saleae)
• สายเชื่อมต่อ USB สำหรับ Arduino และตัววิเคราะห์
• ออสซิลโลสโคป (อุปกรณ์เสริม)
• โปรโตบอร์ด
ขั้นตอนที่ 3: วงจรที่ใช้

ที่นี่เรามีแผนผังซึ่งแสดงการตรวจสอบพินสามตัว: TX0, SDA และ SCL เรามี Arduinos สองตัว: ต้นแบบและทาส
ขั้นตอนที่ 4: รหัสที่มา: Master
ในการตั้งค่า เราจะรวมไลบรารีสำหรับการสื่อสาร i2c เราเข้าสู่เครือข่ายในฐานะมาสเตอร์และเริ่มต้นอนุกรม 0 ในลูป เราขอไบต์ข้อมูลทาสเพื่อสื่อสารกับ Arduino หมายเลข 8 ตามที่เรากำหนดไว้ในตัวอย่าง เราพิมพ์แบบอนุกรมซึ่งจะถูกประเมินด้วยตัววิเคราะห์ลอจิก ไบต์ที่ได้รับ
#include // รวม biblioteca para comunicação I2C การตั้งค่าเป็นโมฆะ () { Wire.begin (); // เข้าสู่ como Mestre (endereço é opcional para o mestre) Serial.begin(115200); // inicia a serial 0 } void loop() { Wire.requestFrom(8, 6);// requisita 6 bytes de dados do escravo de endereço 8 while (Wire.available()) { // enquanto houver bytes para receber… ถ่าน c = Wire.read(); // รับ cada ไบต์ e armazena como caracter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer) } ล่าช้า (500); //aguarda meio เซกุนโด }
ขั้นตอนที่ 5: รหัสที่มา: Slave
ในรหัสทาสนี้ ฉันรวมไลบรารีสำหรับการสื่อสาร i2c อีกครั้ง ฉันเข้าสู่เครือข่ายในฐานะทาสด้วยที่อยู่ 8 เราลงทะเบียนเหตุการณ์คำขอและเชื่อมโยงกับฟังก์ชัน "คำขอ" คุณไม่จำเป็นต้องดำเนินการใดๆ ในลูป เพียงแค่ให้การหน่วงเวลา 0.1 วินาที
สุดท้าย เรามีฟังก์ชันคำขอที่จะดำเนินการเมื่อเกิดเหตุการณ์คำขอโดย Master ซึ่งลงทะเบียนไว้ในการตั้งค่า ในที่สุดเราก็ตอบกลับด้วยข้อความขนาด 6 ไบต์
#include // รวม biblioteca para comunicação I2C void setup() { Wire.begin(8); // เข้าสู่หน้าใหม่ como escravo com endereço 8 Wire.onRequest(requestEvent); // registra o evento de requisiçao // e associa à função requestEvent } วงเป็นโมฆะ () { ล่าช้า (100); //não faz nada no loop, apenas aguarda 0, 1 segundo } // função que será executada quando ocorrer o event de requisição pelo mestre // foi registrada como evento ไม่มีการตั้งค่า โมฆะ requestEvent () { Wire.write ("teste "); // ตอบกลับ com uma mensagem ขนาด 6 ไบต์ }
ขั้นตอนที่ 6: ตัววิเคราะห์: ฮาร์ดแวร์

อัตราสุ่มสูงสุด: 24 MHz
ลอจิก: 5 V ถึง 5.25 V
เกณฑ์ระดับต่ำ 0.8 V
เกณฑ์ระดับสูง 2.0 V
อิมพีแดนซ์อินพุตประมาณ 1 Mohm หรือมากกว่า
ขั้นตอนที่ 7: การติดตั้งซอฟต์แวร์ Saleae

โปรแกรมที่รับข้อมูลที่จับโดย Logic Analyzer และถอดรหัสบิตสามารถดาวน์โหลดได้ที่ลิงค์ต่อไปนี้:
ขั้นตอนที่ 8: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

ฉันแสดงอินเทอร์เฟซที่นี่ ซึ่งฉันชอบเป็นพิเศษเพราะมันสะอาด
ขั้นตอนที่ 9: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

นี่คือตัวเลือกการกำหนดค่าบางส่วน:
• โดยคลิกที่ชื่อช่อง เราสามารถเปลี่ยนแปลงได้
• เราสามารถกำหนดได้ว่าช่องใดช่องหนึ่งจะทำหน้าที่เป็นตัวกระตุ้นการจับและรูปแบบการตรวจจับ
• เมื่อคลิกหมายเลขช่องค้างไว้ คุณจะเปลี่ยนตำแหน่งในรายการได้
• เมื่อคลิกที่เฟือง เราสามารถกำหนดค่าการสร้างภาพช่อง ขยาย …
• … หรือซ่อนช่อง เราจะซ่อนช่องทั้งหมดที่เราจะไม่ใช้
ขั้นตอนที่ 10: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

คลิกที่ลูกศรของปุ่ม "เริ่ม" จะมีตัวเลือกของอัตราการสุ่มตัวอย่างและระยะเวลาของการบันทึก
ด้วยเหตุผลบางประการ หากซอฟต์แวร์ตรวจพบว่าไม่สามารถรักษาอัตราได้ จะมีข้อความปรากฏขึ้นและอัตราจะลดลงโดยอัตโนมัติจนกว่าจะถึงค่าการทำงาน
ขั้นตอนที่ 11: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

เราจะรวมตัววิเคราะห์โปรโตคอลด้วย อย่างแรกคือ I2C ตามคำจำกัดความของไลบรารี WIRE และเชื่อมโยงช่องต่างๆ อย่างถูกต้อง สุดท้าย เราจะแนะนำเครื่องวิเคราะห์ให้กับอนุกรมแบบอะซิงโครนัส เราต้องระวังในการกำหนดค่าพารามิเตอร์อย่างถูกต้องตามแอสเซมบลี
ขั้นตอนที่ 12: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

ในแท็บ "โปรโตคอลที่ถอดรหัส" เราควรตรวจสอบว่าตัววิเคราะห์โปรโตคอลใดเปิดใช้งานอยู่ ที่นั่นข้อมูลจะปรากฏขึ้น ในแท็บ "คำอธิบายประกอบ" เราสามารถเพิ่มผลลัพธ์บางส่วนเพื่อให้เห็นภาพได้ดีขึ้น เพียงคลิกที่ไอคอน "เพิ่มการวัด"
ขั้นตอนที่ 13: จับภาพ: ภาพรวม

ในหน้าจอการจับภาพ โปรแกรมจะแสดง data pulse train ของ SDA, SCL และ TX0
ขั้นตอนที่ 14: จับภาพ: ผลลัพธ์ของการวิเคราะห์โปรโตคอล

ที่นี่เราเห็นผลของการจับภาพ ในแท็บ "โปรโตคอลถอดรหัส" เรามี:
• เซิร์ฟเวอร์ร้องขอทาสที่มี id 8
• การตอบสนองของสเลฟ อักขระหกตัว: "t", "e", "s", "t", "e" และช่องว่าง
• แต่ละอันตามด้วยบิต ACK (Acknowledge) ที่ระบุการรับไบต์ที่ถูกต้อง ยกเว้นอักขระช่องว่าง NACK (ไม่รับทราบ)
• ต่อไป เราจะเห็นผลการถอดรหัสของอนุกรม TX0 ซึ่งระบุอักขระที่ได้รับและส่งไปยังเทอร์มินัลอนุกรม Arduino IDE
ขั้นตอนที่ 15: จับภาพ: ช่อง 0 และ Data (SDA)

ในภาพนี้ เรามีพัลส์เทรนของเส้น SDA โปรดทราบว่าแต่ละไบต์ที่ส่งสามารถดูได้
ขั้นตอนที่ 16: จับภาพ: ช่อง 1 และนาฬิกา (SCL)

ตอนนี้ เรามีพัลส์เทรนของสาย SCL แล้ว คุณสามารถตรวจสอบรายละเอียดเพิ่มเติมได้ง่ายๆ โดยวางเมาส์ไว้เหนือสัญญาณ ดังที่คุณเห็นในภาพ จะเห็นว่าความถี่สัญญาณนาฬิกาอยู่ที่ 100 kHz
ขั้นตอนที่ 17: จับภาพ: ช่อง 2 และซีเรียล (TX0)

สำหรับพัลส์เทรนของสาย TX0 เราจะเห็นจุดเริ่มต้นและจุดเฟรมของแต่ละบิต เรามีไบต์แทนอักขระ "e"
ขั้นตอนที่ 18: การกำหนดค่าสภาพแวดล้อมสำหรับการทดสอบของเรา

ที่นี่เรามีตัวเลือกมากมายสำหรับการอ่านข้อมูล
ขั้นตอนที่ 19: จับภาพ: ออสซิลโลสโคปและตัววิเคราะห์

ดูที่นี่ที่หน้าจอที่ฉันถ่ายจากออสซิลโลสโคปของฉัน สัญญาณตัววิเคราะห์ลอจิกแสดงเฉพาะการตรวจจับสูงและต่ำ แต่ไม่ได้แสดงถึงคุณภาพของสัญญาณ สิ่งนี้สามารถสังเกตได้ดีที่สุดบนออสซิลโลสโคป
ขั้นตอนที่ 20: การจับภาพ: การสังเกตความล้มเหลว (ตัวอย่างความล้มเหลวแบบอนุกรม)

ตอนนี้ ฉันจะแสดงตัวอย่างของความล้มเหลวต่อเนื่อง ซึ่งเกิดขึ้นกับฉันจริงๆ ฉันใช้โมเด็ม GPRS ชนิดที่ใช้กับโทรศัพท์มือถือ ซิมการ์ด พยายามเชื่อมต่อกับ ESP32 แต่มันก็ไม่ได้เชื่อมต่อ ฉันจึงตรวจสอบแหล่งจ่ายไฟ การเดินสายไฟ และเปลี่ยนบอร์ด ฉันทำทุกอย่างแล้ว แต่ไม่มีอะไรแก้ไข ฉันตัดสินใจทำการวิเคราะห์เชิงตรรกะ: ฉันพบว่าสัญญาณ ESP บน UART 115200 เริ่มไม่ตรงกัน นั่นคือ ESP32 กำลังเล่นสิ่งที่ควรเป็น 115, 200 ด้วยความเร็วที่ต่างไปจากนี้
ข้อผิดพลาดนี้ ซึ่งระบุโดย parser แสดงด้วย X เป็นสีแดง ตามความเข้าใจของฉัน โปรแกรมบอกว่าจุดที่มีบิตดังกล่าวถูกแทนที่ในเวลาครึ่งหนึ่ง เมื่อการเปลี่ยนแปลงนี้เพิ่มขึ้น อาจมีบางครั้งที่ทุกอย่างไม่ตรงกัน เพื่อไม่ให้ข้อมูลไปถึงอีกด้านหนึ่ง โดยปกติแล้วจะมาถึง แต่ SIM800 นั้นละเอียดอ่อนและหากไม่ถูกต้อง ข้อมูลจะไม่ไปถึงปลายอีกด้าน
ฉันไม่รู้ว่าสิ่งนี้เกิดขึ้นบ่อยหรือไม่ แต่มันเกิดขึ้นกับฉัน ดังนั้นฉันจึงตัดสินใจพูดถึงเรื่องนี้ที่นี่ แล้วฉันทำอะไรลงไป? ฉันชะลอตัวลง ถ้าคุณใส่ 9, 600, 19, 200 ถึง 38, 400 ก็ใช้ได้ ซึ่งไม่เกิดกับ 115, 200
ขั้นตอนที่ 21: ดาวน์โหลดไฟล์
ไฟล์ PDF
ฉันไม่
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน

การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน

การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน

วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน

การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน

เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง