Đây có phải là thông tin liên lạc I²C?


9

Tôi cần giải mã liên lạc giữa hai thiết bị, nhưng tôi không có thông tin về các thiết bị này. Tất cả những gì tôi biết là cần có bốn dây (GND, VCC và hai dây truyền thông). Tôi nghi ngờ rằng đó là giao tiếp I²C.

Tôi đang cố gắng giải mã nó bằng công cụ giải mã dao động, nhưng tôi không chắc lắm về nó. Tôi không thể xác định các yếu tố của giao tiếp I²C một cách thích hợp khi tôi kiểm tra trực quan các dạng sóng.

Nhìn vào dạng sóng tôi đã đưa ra các giả định sau đây và có lẽ ai đó có thể giúp đỡ. Đây là những giả định của tôi:

  1. Mọi thứ đều dẫn đến việc tin rằng đồng hồ là tín hiệu màu xanh và dữ liệu là tín hiệu màu đỏ.
  2. Đồng hồ dường như bị đảo ngược vì trạng thái nhàn rỗi của nó không ở mức cao.
  3. Tôi không chắc liệu tín hiệu dữ liệu có bị đảo ngược hay không, nhưng dường như là vậy.

Những giả định của tôi có đúng không?

Trong hình cuối cùng, hình có số 5 được chỉ ra trong một vòng tròn và có một phần của tín hiệu. Tôi không thể xác định các bit start, ack và stop. Bất cứ ai cũng có thể xác định các yếu tố này chỉ nhìn vào hình?

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

[Đã chỉnh sửa] Một số người hỏi tôi về các thiết bị có trong giao tiếp. Giao tiếp là giữa chìa khóa xe hơi và một công cụ mà tôi không được phép nói, nhưng tôi đang cố gắng thực hiện một kỹ thuật đảo ngược trên nó.


1
Bạn có điều kiện bắt đầu ở cạnh màu đỏ ngoài cùng (SDA). Nó xuống thấp trong khi màu xanh đảo ngược (LSCSCL) được giữ ở mức thấp. Sau đó, các thay đổi thành màu đỏ (SDA) dường như chỉ xảy ra khi màu xanh ngược (mậtSCL) cao. Đó là cuộc nói chuyện I²C hợp lệ.
Janka

2
@Janka, đó chỉ là cuộc nói chuyện I2C hợp lệ nếu bạn cho rằng SCL bị đảo ngược. Không có lý do để cho rằng.
Annie

2
@Janka, OP liệt kê đó là một giả định. Giả định đó dựa trên giả định rằng đây là I2C. Có một số lý do để tin rằng đây không phải là I2C - một trong số đó là đồng hồ ở mức thấp.
Annie

5
@Daniel, bạn có thể cho chúng tôi biết hai thiết bị là gì không?
Annie

2
Có lẽ thay vì lo lắng về "nó là gì", bạn nên nghĩ về "những gì nó nói". Chỉ ra (các) cạnh bạn cần lấy mẫu. Nhận một bộ phân tích logic, có thể là loại USB phát trực tuyến và bắt đầu viết một bộ giải mã thu được phạm vi biến đổi. Sau đó bắt đầu tìm kiếm các mẫu trong dữ liệu.
Chris Stratton

Câu trả lời:


6

Tôi đoán là giao thức "giống như I2C" của một số công ty. Có một số trong những ngày trước khi sử dụng I2C có nghĩa là phải đưa tiền cho Philips.

Nó dường như có một ACK (xung ngắn trên đường dữ liệu trước khi kéo dài đồng hồ trông rất giống với đường dữ liệu được truyền từ chủ sang nô lệ).

Điều kỳ lạ là nó xuất hiện để truyền 7 bit cùng một lúc.


1
Nếu là phiên bản độc quyền của giao thức, nó cũng có thể sử dụng giao tiếp 7 bit hoặc ít hơn
Maple

6
@Maple Vâng. Tôi có thể hình dung một kỹ sư nói, "Làm thế nào để chúng tôi tạo ra cái này giống như I2C nhưng đủ khác biệt để chúng tôi không phải trả tiền bản quyền? Đảo ngược đồng hồ và gửi 7 bit cùng một lúc." Nhưng tôi chỉ có thể đoán.
Annie

11

Cho rằng chỉ có 8 đồng hồ trên mỗi byte (I2C yêu cầu đồng hồ thứ 9 cho bit ACK / NAK) và trạng thái không hoạt động của đồng hồ dường như thấp, tôi có thể nói rằng đây rất có thể là giao diện SPI (hoặc giống SPI).

Tuy nhiên, không chắc chắn về độ rộng xung nhịp thêm trên bit đầu tiên của mỗi byte.


1
Mặt khác, xung hẹp ở cuối chuỗi đồng hồ trông rất giống NACK. Ngoài ra, thứ trông như nhàn rỗi thấp có thể là đồng hồ kéo dài, không còn được cho phép bởi thông số kỹ thuật mà có thể được sử dụng bởi những nô lệ cũ. Trạng thái ban đầu trên ảnh (1) và (2) thực sự cao
Maple

1
@Maple: Tôi thấy xung dữ liệu hẹp của bạn, nhưng tôi vẫn không thấy xung đồng hồ thứ 9. Mẫu dữ liệu hoàn toàn phù hợp với các cấu hình SPI nhất định về pha đồng hồ và cực của đồng hồ.
Dave Tweed

1
Đó là sự thật, tôi thực sự đồng ý với bạn đồng hồ lại. Điều lạ đối với tôi là SDI / SDO không nhất quán (dù đó là gì) hành vi nhàn rỗi ở cuối (1)
Maple

1
@Maple I2C sẽ không giải phóng các dòng ở mức cao không?
Selvek

1
@Selvek Có, và đó chính xác là những gì tôi thấy trên ảnh (1) và bắt đầu của ảnh (2). Phần còn lại của nó, tuy nhiên, phù hợp hơn với SPI, như Dave chỉ ra. Vâng, ngoài đồng hồ đầu tiên đáng ngạc nhiên trông giống như bit bắt đầu. Hmm ... bắt đầu một chút ... đây có thể là ...
Maple

3

Tôi sẽ ném mũ vào vòng ...

Nếu đây là những thiết bị cũ, bạn có thể xem xét một số biến thể RS-232 đồng bộ 7 bit "tối thiểu trần":

  • Xung dài hơn ở đầu mỗi khung hình có thể là một bit bắt đầu và

  • Cao nguyên trong tín hiệu đồng hồ ngay từ đầu có thể trở về 0 trước khi chuyển sang "dấu" âm. (Bạn không cung cấp điện áp trên ảnh chụp màn hình, vì vậy tôi đoán ở đây).


1
Oooh, điều này là mới đối với tôi. Nó có ack nào không? (Không thể tìm thấy một trong tìm kiếm Google rất ngắn gọn của tôi). Nếu không, bất cứ điều gì khác sẽ giải thích xung ngắn trên đường dữ liệu sau clk thứ 8?
Annie

1
Không phải là tôi biết. Và trong mọi trường hợp, nếu đây thực sự là một sê-ri kiểu cũ, bất kỳ giao tiếp nào theo hướng khác sẽ yêu cầu các dây riêng biệt. Đó là xung quá ngắn để có thể là bất cứ điều gì đáng kể. Nhiều khả năng trình điều khiển đặt lại chính nó trước khung tiếp theo. Tất cả điều này là đoán, như bạn nói chính mình. Trừ khi OP cung cấp thêm chi tiết về các thiết bị, đây là tất cả những gì chúng ta có thể làm.
Maple

@Maple, giao tiếp nằm giữa chìa khóa xe hơi và một công cụ mà tôi không được phép nói, nhưng tôi đang cố gắng thực hiện kỹ thuật đảo ngược trên nó.
Daniel

RS232 là một tiêu chuẩn cho các mức điện, không phải để mã hóa các từ dữ liệu
Chris Stratton

@ChrisStratton Bạn đã tìm thấy bất cứ điều gì về mã hóa trong câu trả lời của tôi? Tất cả những gì tôi đang nói là nếu các mức điện áp tương ứng với tín hiệu RS232 và tín hiệu tương tự nối tiếp đồng bộ thì rất có thể đó không phải là I2C
Maple

-1

Theo kinh nghiệm của tôi với I2C, tôi có thể sử dụng thiết bị nhiều mét để kiểm tra đồng hồ bằng cách đặt thiết bị để đo tần số (tính bằng hertz), vì vậy nếu nó đọc giá trị ổn định như 2k thì đó là đồng hồ I2C.


3
Không, đó không phải là một kết luận hợp lệ. Nhiều thứ không phải là I2C có đồng hồ ổn định. Trên thực tế, I2C không có đồng hồ ổn định, mà là một chiếc đồng hồ nổ. Nếu đồng hồ của bạn đang đếm trong một khoảng thời gian, thì thực tế nó sẽ lấy trung bình đồng hồ hoạt động với các khoảng không hoạt động - bạn cần đo đối ứng độ rộng của xung, lý tưởng nhất là trên phạm vi mà bạn có thể chắc chắn rằng mình đang ở thực sự đo lường những gì được dự định. Ngược lại, một số sơ đồ khác như I2S có xu hướng liên tục chạy đồng hồ. Nhưng tần số đồng hồ chỉ có thể loại trừ một cái gì đó, không phải trong.
Chris Stratton
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.