Có bất kỳ hướng dẫn pin I2C dứt khoát ngoài kia không? Không tìm kiếm một STANDARD STANDARD


16

EDIT: Điều này đã được lặp đi lặp lại nhiều lần, vì vậy, đặt nó lên hàng đầu: Vâng, ai cũng biết rằng không có "tiêu chuẩn" nào cho các đầu nối giữa các thiết bị I2C, nhưng chắc chắn cộng đồng này có thể lập danh sách các điểm "hướng dẫn" để thực hiện các kết nối như vậy, dựa trên hành vi tín hiệu, giảm thiểu nhiễu và giảm thiểu rủi ro do kết nối sai.


NXP đã định nghĩa chuẩn I2C mà không chỉ định pin-out cho các đầu nối I2C, là sự hiểu biết của tôi. Hướng dẫn duy nhất từ ​​NXP dường như là đề cập đến việc đặt Ground và / hoặc Vss giữa SDA và SCL nếu Vss / Gnd được chuyển qua kết nối.

Việc mua các mô-đun I2C khác nhau đã để lại cho tôi nhiều loại pin I2C khác nhau và một chút nhiệm vụ theo dõi các miếng chêm chuyển đổi cáp ruy băng nhỏ khác nhau mà tôi phải thực hiện cho chúng.

ví dụ

  • Mô-đun Mono OLED: SCL, SDA, GND, 5V (rõ ràng không lý tưởng, vì đồng hồ và dữ liệu nằm cạnh nhau.
  • Bộ cảm biến cho Arduino: SDA, SCL, GND, 5V (một lần nữa không lý tưởng, cộng với SCL / SDA đã chuyển đổi)
  • Mô-đun LCD màu: SCL, GND, 5V, SDA (Yay!)
  • Bộ lặp I2C không tên: SCL, 5V, GND, SDA (ouch, họ đã chuyển đổi chân nguồn! Gần như để khói ma thuật thoát ra.)

Vì vậy, câu hỏi của tôi là :
Có một hướng dẫn chính xác / có thẩm quyền cho trình tự kết nối pin 4 chân I2C để sử dụng, trong đó cả Vss và GND sẽ được mang từ máy chủ đến thiết bị không?

Không thực hiện được điều này, có bất kỳ thư mục nào, tuy nhiên không đầy đủ, các mô-đun / thiết bị I2C liệt kê pin-out mà mỗi thiết bị đã áp dụng không?

Làm rõ: Tìm kiếm các hướng dẫn như "đặt Vss gần hơn với SCL vì ..." chứ không phải là một tiêu chuẩn được xác định rõ ràng không tồn tại.


3
Do đó câu hỏi.
Anindo Ghosh

1
Bằng câu hỏi của riêng bạn, rõ ràng để thấy rằng không có tiêu chuẩn ... và nếu có, rõ ràng mọi người sẽ không tuân theo nó. Bạn đang bị mắc kẹt làm miếng chêm. : P
Toby Lawrence

1
@AnindoGhosh heh. Nếu là tôi, có lẽ tôi đã bỏ các mô-đun đã mua trước và cuộn các bảng đột phá của riêng mình với một sơ đồ chân tiêu chuẩn bằng cách sử dụng một tiêu đề phân cực. Có lẽ là thứ gì đó như 6 chân, với GND bên cạnh SDA, SCL và 5V ... và sau đó sử dụng cáp có ba cặp xoắn để giữ đất gần mỗi tín hiệu để giúp giảm nhiễu và loại bỏ nhiễu.
Toby Lawrence

3
Có vẻ như một số người đã xúc phạm rằng I2C là một tùy chọn kết nối mặc định phổ biến cho rất nhiều mô-đun được bán cho người dùng Arduino. Ngay cả khi nó không bao giờ được thiết kế cho đầu nối bảng bên ngoài, nó vẫn ở đây và nó bán và yêu cầu hướng dẫn về cách tốt hơn để làm cho đầu nối cho các thiết bị mới hữu ích cho chúng tôi, không phải các chuyên gia và có thể các chuyên gia không thích điều này.
thú vị

1
@ExcitingProjects Không, họ đúng về những gì họ nói, I2C không có ý nghĩa cho điều này và rõ ràng phải đối mặt với một số thách thức trong kết nối liên ngành. Nó chỉ là tình cờ mà các nhà thiết kế mô-đun đã chọn để đi với I2C. Tôi cũng sẽ bị "xúc phạm" nếu có lựa chọn.
Anindo Ghosh

Câu trả lời:


16

Gần đây tôi đã tự lăn cho đến khi các đầu nối I2C đi. Bản thân trình kết nối không quan trọng lắm, hiện tại tôi chỉ đang sử dụng tiêu đề sân 100 triệu (thường là nữ trên tàu để không quá độc khi không kết nối), nhưng bất kỳ đầu nối pin 4plus nào cũng được. Ngoài ra, tôi đang sử dụng P82B715từ TI như một bộ mở rộng xe buýt I2C. Điều này khắc phục các vấn đề về điện dung liên quan đến việc chạy I2C dài ra khỏi bảng, như mọi người đã nói, I2C ban đầu không nhằm mục đích. Tôi đã thử nhiều kết hợp khác nhau, như trong các ví dụ bạn đưa ra và tôi nhận thấy hoàn toàn không có sự khác biệt về hiệu suất. Tôi tin rằng điều này là do I2C tương đối chậm, sự can thiệp giữa SDA và SCL không phải là vấn đề lớn. Về cơ bản thời gian tăng cho điện áp (khi nhiễu sẽ xảy ra) trên xe buýt nhỏ hơn nhiều so với chiều dài bit. Vì vậy, đó có thể không phải là những gì bạn muốn nghe, nhưng nó có đủ khả năng lựa chọn hơn. Cá nhân tôi đã sử dụng [VCC, SDA, GND, SCL] để dễ dàng chuyển đến / từ chip này và cũng miễn nhiễm với một hỗn hợp VCC / GND khi cắm ngược.


2
+1 + Chấp nhận. Cảm ơn, có lẽ là câu trả lời thực tế nhất cho đến nay, "I2C interdevice tồn tại, đây là cách tôi sử dụng nó và tại sao". Việc tránh trộn lẫn VCC / GND là hữu ích. Một điểm tốt trong việc tránh các tiêu đề pin pokey trên tàu, tôi đã vô tình xé một vài chân ra khỏi một số mô-đun cảm biến.
Anindo Ghosh

Đây chỉ là câu trả lời thực sự hữu ích và nếu tôi có đủ danh tiếng, tôi sẽ tặng phần thưởng cho @Samuel cho nó và tôi thích câu hỏi này vì tôi có nhiều mô-đun I2C và sẽ xây dựng các mô-đun I2C một ngày nào đó theo hướng dẫn này.
thú vị

11

Khi được thành lập lần đầu tiên, bus I2C (Mạch tích hợp liên) chỉ nhằm kết nối các chip trên một tổ hợp PCB duy nhất. Nó không bao giờ có ý định được sử dụng trên các dây cáp để kết nối nhiều bảng với nhau, và do đó, không có đầu nối nào cho mục đích đó được xác định.

Các giao diện bên ngoài dựa trên I2C "tiêu chuẩn" duy nhất mà tôi biết là ACCESS.bus tồn tại trong thời gian ngắn để kết nối các thiết bị giao diện người dùng với máy tính và Kênh dữ liệu hiển thị VESA được sử dụng để truy xuất thông tin màn hình qua các đầu nối VGA, DVI và HDMI.


Tôi hiểu mục đích ban đầu là khác nhau, nhưng vì I2C hiện đang được sử dụng cho rất nhiều mô-đun kết nối cáp, tôi hy vọng ai đó đã bắt đầu một cơ sở dữ liệu hợp tác để ghi lại các pin-out được sử dụng bởi các sản phẩm khác nhau, đặc biệt là nhiều sản phẩm phục vụ cho Arduino và các thị trường bảng vi điều khiển khác.
Anindo Ghosh

4

Không có pin-out tiêu chuẩn, không có kết nối tiêu chuẩn. Tiêu chuẩn I2C không thực sự phù hợp với loại điều này. Nó được chỉ định ở cấp độ xe buýt, không phải cấp độ thiết bị. Ví dụ: khi bạn muốn cắm thiết bị I2C, bạn có biết theo tiêu chuẩn liệu các pullups nằm trên máy chủ hoặc trên thiết bị không ?? Không. Rất nhiều thứ khác bạn không biết, như dung lượng cáp của bạn ở đâu, Vcc cần là gì ....

Trên thực tế, thậm chí có những thiết bị I2C cần thêm dòng cho các ngắt và I / O kỹ thuật số cũ đơn giản khác. Làm thế nào để bạn thêm chúng vào tiêu chuẩn, nếu bạn không thể đạt được thỏa thuận về số lượng ghim bạn cần.

Điểm mấu chốt, nếu bạn đang tìm kiếm tính di động và ổn định trong các kết nối của bạn, I2C và SPI không phải là nơi bạn cần tìm.


3
Điều gì sẽ xảy ra nếu một người đang tìm kiếm một hướng dẫn để tạo ra thiết bị của riêng mình, nó sẽ hoạt động với (và giống như) tất cả các mô-đun khác ngoài kia cho 'duino? Có một thị trường ở đó, không thấy một điểm nào bỏ qua nó. Ngẫu nhiên, pull-up được yêu cầu tại máy chủ và tùy chọn tại thiết bị, theo thông số kỹ thuật.
Anindo Ghosh

5
Điều "tốt đẹp" về tiêu chuẩn là có rất nhiều lựa chọn! Bạn chọn một tiêu chuẩn có đầu nối được xác định rõ, như MIDI, USB, RS232 (ngoài những thứ modem null ngu ngốc đó) và xây dựng một trình dịch vào thiết bị của riêng bạn. Tùy chọn khác là hình thành một nhóm làm việc tiêu chuẩn thông qua một tiêu chuẩn org, như IEEE. Pullups "tùy chọn" trên thiết bị tác động đến hành vi của toàn bộ xe buýt, làm cho quan điểm của tôi chính xác. MIDI cách ly quang học mọi thiết bị theo tiêu chuẩn, vì vậy các thiết bị tuân thủ không gây ra những vấn đề này
Scott Seidman

1
+1 cho điểm hài hước nhưng rất đúng về tiêu chuẩn! :-)
Anindo Ghosh

4

Nhiều người sử dụng một số loại đầu nối để mang tín hiệu I²C và nguồn giữa hai PCB. Ví dụ,

Một số mẹo chung để mang tín hiệu I²C qua khoảng cách xa hơn:

ps: Tôi thấy rằng Wikipedia: I²C Mạch kết nối có liên quan đến câu hỏi này.


3

Mặc dù không có tiêu chuẩn chân cắm hoặc đầu nối I²C, có khá nhiều nơi I²C được sử dụng được tiêu chuẩn hóa. Một số điều gây chú ý là các mô-đun bộ nhớ (DIMM, SO-DIMM), đầu nối video ( DDC in DVI , VGA ) và SM-Bus (vâng, trang web của chúng trông giống như một đứa trẻ được tạo ra vào giữa những năm 90). Cụ thể, đầu nối SM-bus được khóa và chỉ chứa I²C và nguồn điện, nhưng SM-Bus đặt các hạn chế bổ sung để về mặt kỹ thuật không phải mọi thiết bị I²C nên được kết nối với SM-Bus thực tế. Một vài phích cắm độc quyền khác cũng xuất hiện, chẳng hạn như cảm biến Lego NXT.


Điều chắc chắn là không có tiêu chuẩn ... Điều tôi hy vọng là một bộ sưu tập hướng dẫn chính tắc, mà các nhà thiết kế thiết bị có thể tuân theo. SMBus, chẳng hạn, có đường + 5V ở bên ngoài, trong khi NXP khuyến nghị cả + V và GND nằm giữa các dấu hiệu tín hiệu. Cách nào tốt hơn, và tại sao?
Anindo Ghosh

2

Không có tiêu chuẩn.

Không có thực hành chung.

Đối với các vấn đề để quyết định bản thân phải làm gì:

  1. Giữ các tín hiệu trên một bảng như chúng được dự định ở vị trí đầu tiên. Các đường IIC có trở kháng khá cao, đã kết thúc đơn và do đó dễ bị nhiễu và sẽ không chấm dứt tốt các đường truyền. IIC đơn giản là không có nghĩa là để đi ra khỏi tàu.

  2. Nếu bạn định lên tàu bằng mọi giá, hãy giữ xe buýt ngắn. Một vài inch có lẽ là OK. Một mét trở lên là thực sự yêu cầu rắc rối.

  3. Giữ các dòng bảng tránh xa các nguồn tiếng ồn. Đừng quấn chúng quanh một chiếc xe máy, ví dụ, hoặc thậm chí cố gắng đi gần một chiếc.

  4. Sử dụng một đầu nối không thể được nối ngược. Nếu ai đó có thể cắm nó ngược, ai đó sẽ.

  5. Cáp Ribbon có lẽ là dễ sử dụng nhất. Bạn cần ba dây tối thiểu, SCL, SDA và mặt đất. Thêm sức mạnh có lẽ là một ý tưởng tốt. Trong mọi trường hợp, đảm bảo dây nối đất nằm giữa SCL và SDA để tránh nhiễu xuyên âm. Dây nguồn không được ồn ào, vì vậy hãy đặt nó ở một bên, không thành vấn đề.

  6. Sau khi loay hoay với các đầu nối và theo đuổi các vấn đề tiềm ẩn, nhận ra rằng điểm 1 thực sự là điểm duy nhất bạn cần biết.


Vì vậy, chúng ta phải đặt cát vào tất cả hàng trăm thứ I2C người ta đã làm và bán cho người mới bắt đầu arduino và các bộ vi điều khiển khác?
thú vị

1

Như thường lệ cho bất kỳ bài đăng nào hỏi về lý do tại sao một cái gì đó được [nt] chuẩn hóa:
May mắn thay, việc sạc pin đã được giải quyết khi tất cả chúng ta đã chuẩn hóa trên mini-USB.  [Hay là micro-USB?  Chết tiệt.
Từ XKCD


Có lẽ nếu bạn đã đọc câu hỏi cẩn thận hơn, hoặc nhiều luồng nhận xét, bạn có thể nhận thấy rằng đó không phải là một tiêu chuẩn đang được tìm kiếm mà là một bộ sưu tập trí tuệ dưới dạng hướng dẫn kinh điển.
Anindo Ghosh

1
@AnindoGhosh - Tôi không thấy điều đó tạo ra sự khác biệt nào. Nếu bạn thay thế tiêu chuẩn bằng hướng dẫn trong truyện tranh trên, nó cũng có giá trị như nhau. Bất kỳ tình huống nào có nhiều cách để làm một cái gì đó thường dẫn đến nhiều người nói điều đó theo nhiều cách. Ngay cả khi nó không phải là một "tiêu chuẩn" chính thức.
Sói Connor
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.