Giúp xác định tổng kiểm tra


7

Tôi cần trợ giúp để xác định thuật toán tổng kiểm tra trong các gói sau đây.

Vì vậy, định dạng gói là:

sd ?? dd dd dd ??

Ở đâu

s = start nibble d = data (mã hóa nhị phân nhị phân)? = không rõ - có thể là tổng kiểm tra

Dưới đây là năm gói (số được truyền trong ngoặc) và gói thực tế được gửi trên dây ở dạng hex ở bên phải.

(1112694): F1 f7 11 26 94 74

(5432432): f5 7c 43 24 32 a2

(6460216): f6 dc 43 01 16 48

(3254817): f3 d8 25 48 17 e9

(0042863): f0 ce 04 28 63 b2

Tôi đã thử XOR và tính tổng nhưng dường như chúng không hoạt động. Các gói được truyền bằng UART.

Bất kỳ trợ giúp đánh giá cao!


4
Làm thế nào điều này có liên quan đến điện tử?
ống

Nó là thiết bị gì? Nó có thể chỉ là tài liệu.
Eugene Sh.

3
@pipe Tôi sẽ nói là như vậy. Các giao thức truyền thông có nhiều EE hơn các công cụ lập trình ..
Eugene Sh.

1
Bạn sẽ cần nhiều hơn năm mẫu ngẫu nhiên để tìm ra điều này. Đến mức độ nào bạn có thể kiểm soát nội dung truyền tải? Ví dụ: bạn có thể thử gửi 0000000, 0000001, 0000002, v.v. không? Một mô hình như vậy sẽ cung cấp rất nhiều manh mối. Dữ liệu đại diện cho cái gì?
Dave Tweed

3
Theo đánh giá của tôi, câu hỏi này không nên được đóng lại. Hầu như bất kỳ kỹ sư điện nào đã nhúng tay vào mã hóa nhúng như một phần của dự án của họ đã phải đối mặt với vấn đề lấy mã CRC làm việc cho dự án của họ hoặc đảo ngược CRC từ thứ gì đó mà họ phải kết nối. Kiểm tra mã đóng một vai trò rất lớn trong thiết bị điện tử cho dù các mã đó được tạo và kiểm tra trong phần cứng, phần mềm điều khiển hoặc vi điều khiển.
Michael Karas

Câu trả lời:


16

Lấy hàng dữ liệu đầu tiên của bạn:

(1112694): F1 f7 11 26 94 74

Tạo một luồng byte gồm các số hex là:

0x94

0x26

0x11

0xF1

Chạy các byte theo thứ tự đó thông qua thuật toán CRC CRC-CCITT (XModem) để đến CRC là 0xF774. Byte cao của CRC đi đến vị trí thứ hai của tin nhắn và byte thấp của CRC đi đến vị trí cuối cùng của tin nhắn.

Kỹ thuật tương tự này hoạt động cho từng thông điệp trong mẫu của bạn. Tôi đã sử dụng máy tính trực tuyến để hiển thị kết quả như ở đây:

nhập mô tả hình ảnh ở đây

Hàm đa thức cho thuật toán CRC-CCITT như sau:

nhập mô tả hình ảnh ở đây

Tôi để bạn tìm kiếm và tìm mã nguồn cho thuật toán CRC-CCITT và hiểu các sắc thái cụ thể của việc sử dụng mã đó trong phương pháp XModem cũ. Đa thức 0x1021 rất nổi tiếng và tôi đã sử dụng nó trong nhiều năm trong các dự án của mình cho mọi thứ, từ các giao thức truyền thông để kiểm tra mã trên các tập dữ liệu được lưu trữ trong các chip EEPROM và FRAM nối tiếp. Các sắc thái sử dụng phát huy tác dụng là liệu các trường CRC của gói có được đặt trước một cái gì đó như 0x0000 hoặc 0xFFFF hay không và liệu các trường đặt trước đó cũng được chuyển qua máy tính CRC để đi đến kết quả. Lưu ý rằng có rất nhiều thông tin trực tuyến.


Làm tốt! Các liên kết máy tính có thể hữu ích.
Spehro Pefhany

Hà. Làm tốt lắm ..
Eugene Sh.

Tôi mến bạn. Nghiêm túc. Cảm ơn bạn rất nhiều. Tôi mới bắt đầu tháo rời phần sụn để tìm ra cách nó hoạt động !!!!
dùng3780104

Ngả mũ trước bạn. Tôi không nghĩ rằng tôi đã tìm kiếm MSB của tổng kiểm tra trong byte thứ hai. Điều đó thật kỳ lạ. Và đệm msn bằng F chứ không phải 0?
WhatRoughBeast

@WhatRoughBeast Có lẽ đó là để đảm bảo giá trị đầu vào khác không cho tổng kiểm tra? Bất kể, đây là công việc tuyệt vời về phần của Michael.
Adam Haun
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.