Mục lục:

Mở mắt ra! Trình phân tích lôgic: 21 bước
Mở mắt ra! Trình phân tích lôgic: 21 bước

Video: Mở mắt ra! Trình phân tích lôgic: 21 bước

Video: Mở mắt ra! Trình phân tích lôgic: 21 bước
Video: TAM ĐOẠN LUẬN - lý thuyết - logic học đại cương 2024, Tháng mười một
Anonim
Image
Image
cuộc họp
cuộc họp

Bộ phân tích logic tạo điều kiện thuận lợi cho bạn hình dung về tàu xung, là các bit di chuyển trong một đường truyền thông. Vì vậy, nó giúp bạn mở rộng tầm mắt để xác định một vấn đề có thể xảy ra. Tại sao nó quan trọng? Đây là một công cụ phát triển và phát hiện lỗi rất hiệu quả có thể giúp bạn tiết kiệm thời gian. Trong video này ngày hôm nay, chúng ta sẽ đánh giá tầm quan trọng của trình phân tích logic, quan sát một số quy trình thực hành phổ biến khi sử dụng thiết bị này và nêu ví dụ về lỗi phát hiện mà không có sự hỗ trợ của máy phân tích logic.

Trong video này, tôi đã sử dụng một mô hình tương đối rẻ tiền (khoảng $ 35) và hiệu quả, với giao diện đồ họa và phần mềm miễn phí.

Bước 1: Lắp ráp

Bước 2: Các tính năng được sử dụng - Máy chủ

Các tính năng được sử dụng - Máy chủ
Các tính năng được sử dụng - Máy chủ

• Jumper để kết nối

• 2 Arduinos (chúng tôi đã sử dụng 2 Mega Arduinos 2560)

• Trình phân tích lôgic (chúng tôi sử dụng Saleae)

• Cáp kết nối USB cho Arduino và máy phân tích.

• Máy hiện sóng (tùy chọn)

• Protoboard

Bước 3: Mạch được sử dụng

Mạch đã sử dụng
Mạch đã sử dụng

Ở đây chúng ta có giản đồ hiển thị việc giám sát ba chân: TX0, SDA và SCL. Chúng ta có hai Arduinos: một chủ và một nô lệ.

Bước 4: Mã nguồn: Master

Trong phần Thiết lập, chúng tôi sẽ bao gồm thư viện cho giao tiếp i2c. Chúng tôi đã nhập mạng là Master và khởi tạo nối tiếp 0. Trong Vòng lặp, chúng tôi yêu cầu các byte dữ liệu phụ để giao tiếp với Arduino số 8 của chúng tôi, như chúng tôi đã xác định trong ví dụ. Chúng tôi in trong chuỗi, sẽ được đánh giá bằng bộ phân tích logic, các byte nhận được.

#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin (); // Entra na red como Mestre (endereço é opcional para o mestre) Serial.begin (115200); // inicia a serial 0} void loop () {Wire.requestFrom (8, 6); // recisita 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto houver bytes para Collectber… char c = Wire.read (); // byte thube cada e armazena como caracter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} delay (500); // aguarda meio segundo}

Bước 5: Mã nguồn: Slave

Trong mã nô lệ này, tôi một lần nữa bao gồm thư viện cho giao tiếp i2c. Tôi nhập mạng với tư cách nô lệ với địa chỉ 8. Chúng tôi đăng ký sự kiện yêu cầu và liên kết nó với chức năng "yêu cầu". Bạn không cần phải làm bất cứ điều gì trên vòng lặp, chỉ cần đưa ra độ trễ 0,1 giây.

Cuối cùng, chúng ta có hàm yêu cầu sẽ được thực thi khi sự kiện yêu cầu của Master xảy ra, đã được đăng ký trong Thiết lập. Cuối cùng, chúng tôi trả lời với một tin nhắn 6 byte.

#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin (8); // entra na red como escravo com endereço 8 Wire.onRequest (requestEvent); // công ty đăng ký o evento de suggestiçao // e Associa à função requestEvent} void loop () {delay (100); // não faz nada không có vòng lặp, apenas aguarda 0, 1 segundo} // função que será executeutada quando ocorrer o evento de suggestição pelo mestre // foi registerrada como evento no setup void requestEvent () {Wire.write ("teste"); // responsee com uma mensagem de 6 byte}

Bước 6: Trình phân tích: Phần cứng

Máy phân tích: Phần cứng
Máy phân tích: Phần cứng

Tốc độ lấy mẫu lên đến: 24 MHz

Logic: 5 V đến 5,25 V

Ngưỡng mức thấp 0,8 V

Ngưỡng mức cao 2.0 V

Trở kháng đầu vào khoảng 1 Mohm trở lên

Bước 7: Cài đặt phần mềm Saleae

Cài đặt phần mềm Saleae
Cài đặt phần mềm Saleae

Chương trình nhận dữ liệu do bộ phân tích logic thu nhận và giải mã các bit có thể được tải xuống tại liên kết sau:

Bước 8: Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Định cấu hình môi trường cho các thử nghiệm của chúng tôi
Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Tôi hiển thị giao diện ở đây, mà tôi đặc biệt thích vì nó sạch sẽ.

Bước 9: Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Định cấu hình môi trường cho các thử nghiệm của chúng tôi
Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Dưới đây là một số tùy chọn cấu hình:

• Bằng cách nhấp vào tên kênh, chúng ta có thể thay đổi nó.

• Chúng tôi có thể xác định xem một trong các kênh sẽ đóng vai trò như một yếu tố kích hoạt để bắt và hình thức phát hiện.

• Bằng cách nhấp và giữ số kênh, bạn có thể thay đổi vị trí của mình trong danh sách.

• Bằng cách nhấp vào bánh răng, chúng tôi có thể định cấu hình hình ảnh hóa kênh, mở rộng…

•… hoặc ẩn kênh. Chúng tôi sẽ ẩn tất cả các kênh mà chúng tôi sẽ không sử dụng.

Bước 10: Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Định cấu hình môi trường cho các thử nghiệm của chúng tôi
Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Nhấp vào mũi tên của nút "Bắt đầu", có các tùy chọn Tốc độ lấy mẫu và thời lượng ghi.

Vì lý do nào đó, nếu phần mềm phát hiện ra rằng tốc độ không thể được duy trì, một thông báo sẽ được hiển thị và tự động tốc độ sẽ được giảm cho đến khi đạt đến một giá trị chức năng.

Bước 11: Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Định cấu hình môi trường cho các thử nghiệm của chúng tôi
Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Chúng tôi cũng sẽ bao gồm các bộ phân tích giao thức. Đầu tiên, đó là I2C, tuân theo các định nghĩa của thư viện WIRE và liên kết các kênh một cách chính xác. Cuối cùng, chúng tôi sẽ giới thiệu trình phân tích với nối tiếp không đồng bộ. Chúng ta cần phải cẩn thận để cấu hình chính xác các thông số theo hợp ngữ.

Bước 12: Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Định cấu hình môi trường cho các thử nghiệm của chúng tôi
Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Trong tab "Giao thức được giải mã", chúng ta nên kiểm tra xem trình phân tích giao thức nào được kích hoạt. Tại đó, dữ liệu sẽ xuất hiện. Trong tab "Chú thích", chúng tôi có thể thêm một số kết quả để hình dung tốt hơn. Chỉ cần nhấp vào biểu tượng "thêm phép đo".

Bước 13: Chụp: Tổng quan

Chụp: Tổng quan
Chụp: Tổng quan

Trong màn hình chụp, chương trình hiển thị đường truyền xung dữ liệu của SDA, SCL và TX0.

Bước 14: Chụp: Kết quả phân tích giao thức

Chụp: Kết quả phân tích giao thức
Chụp: Kết quả phân tích giao thức

Ở đây, chúng ta thấy kết quả của việc bắt. Trong tab "Giao thức được giải mã", chúng tôi có:

• Yêu cầu máy chủ cho máy chủ có id 8.

• Phản hồi của nô lệ, sáu ký tự: "t", "e", "s", "t", "e" và một khoảng trắng.

• Mỗi bit được theo sau bởi một bit ACK (Acknowledge) cho biết nhận đúng byte, ngoại trừ ký tự khoảng trắng NACK (Not Acknowledge).

• Tiếp theo, chúng ta thấy kết quả giải mã của nối tiếp TX0, cho biết các ký tự được nhận và gửi đến đầu cuối nối tiếp Arduino IDE.

Bước 15: Chụp: Kênh 0 và Dữ liệu (SDA)

Chụp: Kênh 0 và Dữ liệu (SDA)
Chụp: Kênh 0 và Dữ liệu (SDA)

Trong hình này, chúng ta có tập xung của đường SDA. Lưu ý rằng mỗi byte được truyền đều có thể được xem.

Bước 16: Chụp: Kênh 1 và Đồng hồ (SCL)

Chụp: Kênh 1 và Đồng hồ (SCL)
Chụp: Kênh 1 và Đồng hồ (SCL)

Bây giờ, chúng ta có ở đây tập xung của đường SCL. Bạn có thể kiểm tra thêm chi tiết đơn giản bằng cách di chuột qua tín hiệu, như bạn thấy trong hình ảnh. Chúng ta có thể thấy rằng tần số đồng hồ là 100 kHz.

Bước 17: Chụp: Kênh 2 và Nối tiếp (TX0)

Chụp: Kênh 2 và Nối tiếp (TX0)
Chụp: Kênh 2 và Nối tiếp (TX0)

Đối với tập xung của dòng TX0, chúng ta có thể thấy bit Start và các điểm đóng khung của mỗi bit. Chúng tôi có một byte đại diện cho ký tự "e."

Bước 18: Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Định cấu hình môi trường cho các thử nghiệm của chúng tôi
Định cấu hình môi trường cho các thử nghiệm của chúng tôi

Ở đây chúng tôi có một số tùy chọn để đọc dữ liệu.

Bước 19: Chụp: Máy hiện sóng và máy phân tích

Chụp: Máy hiện sóng và Máy phân tích
Chụp: Máy hiện sóng và Máy phân tích

Nhìn vào màn hình tôi chụp được từ máy hiện sóng. Tín hiệu của bộ phân tích logic chỉ đại diện cho mức phát hiện cao và thấp, nhưng nó không đại diện cho chất lượng tín hiệu. Điều này tốt nhất có thể được quan sát trên một máy hiện sóng.

Bước 20: Chụp: Quan sát lỗi (ví dụ về Lỗi nối tiếp)

Chụp: Quan sát lỗi (ví dụ về Lỗi nối tiếp)
Chụp: Quan sát lỗi (ví dụ về Lỗi nối tiếp)

Bây giờ, tôi sẽ đưa ra một ví dụ về sự cố nối tiếp, điều này thực sự đã xảy ra với tôi. Tôi đang sử dụng modem GPRS, loại được sử dụng trên điện thoại di động, thẻ SIM, cố gắng kết nối với ESP32. Nhưng nó không kết nối. Sau đó tôi đã kiểm tra nguồn điện, hệ thống dây điện và thay đổi bo mạch. Tôi đã làm tất cả mọi thứ, nhưng không có gì sửa chữa nó. Tôi quyết định đưa vào một phân tích hợp lý: Tôi phát hiện ra rằng tín hiệu ESP trên UART 115200 bắt đầu không khớp. Đó là, ESP32 đang phát những gì phải là 115, 200 ở một tốc độ khác với tốc độ này.

Lỗi này, được xác định bởi trình phân tích cú pháp, được hiển thị bằng dấu X màu đỏ. Theo sự hiểu biết của tôi, chương trình nói rằng điểm có một chút như vậy được dịch chuyển một nửa trong thời gian. Khi sự thay đổi này tăng lên, có thể đến lúc mọi thứ không khớp, do đó thông tin không đến được phía bên kia. Nó thường đến, nhưng SIM800 nhạy cảm và nếu nó không chính xác, thông tin sẽ không đến được đầu bên kia.

Tôi không biết đây có phải là điều gì đó xảy ra thường xuyên hay không, nhưng nó đã xảy ra với tôi, và vì vậy tôi quyết định đề cập chủ đề này ở đây. Vậy tôi đã làm gì? Tôi đi chậm lại. Nếu bạn đặt 9, 600, 19, 200, lên đến 38, 400, nó hoạt động, điều này không xảy ra với 115, 200.

Bước 21: Tải xuống tệp

PDF

NS

Đề xuất: