Tại sao I2C được thiết kế để hoạt động với điện trở kéo lên và không kéo xuống?


22

Tôi hiểu rằng trong các dòng I2C, SCL và SDA sử dụng điện trở kéo lên và trình điều khiển pin là các thiết bị NPN bộ thu mở có thể điều khiển các chân nối đất. Điều này mang lại cho I2C một lợi thế là cùng một xe buýt có thể được chia sẻ với nhiều nô lệ và ngay cả khi hai hoặc nhiều nô lệ vô tình cố lái xe buýt cùng một lúc, nó sẽ không gây ra bất kỳ thiệt hại nào cho hệ thống.

Nhưng điều này cũng có thể được thực hiện bằng cách sử dụng trình điều khiển cống mở PNPđiện trở kéo xuống trên các đường SDA và SCL. Những điều như kéo dài đồng hồ và phân xử đa chủ cũng có thể đạt được với điều này.

Việc triển khai giao thức I2C hiện tại có mang lại lợi ích gì so với triển khai thay thế được đề xuất ở trên không?


1
bóng bán dẫn collector mở dường như chiếm đa số trong các IC trong thập niên 80.
PlasmaHH

9
@PlasmaHH Tôi nghĩ lý do là NPN (theo như tôi nhớ một cách mơ hồ) có công suất hiện tại trên mỗi khu vực do tính di động của điện tử cao hơn trong chất nền, do đó dễ dàng hơn để xây dựng các giai đoạn đầu ra "mạnh" với điều đó.
Marcus Müller

7
@ MarcusMüller Thật vậy, điều đó đã (và vẫn là) đúng. NPN và NMOS Fets "mạnh hơn" khi có cùng kích thước. Trong CMOS, một yếu tố 2 đến 3 là điển hình. Đối với PNP so với NPN, nó phụ thuộc vào quá trình chế tạo nhưng hầu như luôn luôn PNP khó khăn và phức tạp hơn nhiều so với NPN. Cũng bắt đầu với chất nền pha tạp P (như hầu hết các quy trình làm) nhấn mạnh điều này (NPN tốt hơn).
Bimpelrekkie

@Bimpelrekkie Tôi nhớ một yếu tố 2,3 từ lớp vật lý trạng thái rắn của tôi cho đến ngày hôm nay :-)
winny

1
Nếu xe buýt I2C hiện tại vô tình bị chập xuống đất vì bất kỳ lý do gì thì bạn sẽ chỉ rút ra dòng điện trở kéo lên. Với sự sắp xếp bổ sung của trình điều khiển hoạt động cao và điện trở kéo xuống, bạn sẽ làm hỏng trình điều khiển đơn giản từ những năm bắt đầu I2C. Khi đi giữa các bảng, rút ​​ngắn vào khung là một điều cần cân nhắc. Nhưng đó chỉ là một trong nhiều lý do để lái xe xuống thấp, phần còn lại mà những người khác đã trả lời dưới đây.
TonyM

Câu trả lời:


30

Về mặt điện, nó có ý nghĩa bởi vì mặt đất là một kết nối chung cho tất cả các thiết bị trên xe buýt IIC. Đó là một hạn chế ít hơn nhiều so với việc buộc nguồn điện phải là kết nối chung cho tất cả các thiết bị IIC, như sẽ được yêu cầu nếu các đường dây được điều khiển ở mức cao và trôi thấp qua các lần kéo xuống.

Lưu ý rằng tất cả các thiết bị IIC không cần phải được cấp nguồn từ cùng một mạng hoặc cùng một điện áp. Điều này sẽ không đúng nếu cả hai tuyến xe buýt phải được điều khiển đến một điện áp nguồn chung.


5
Không phải downvote của tôi và bạn phải có nhiều năm kinh nghiệm I2C như tôi, vì vậy quan điểm của tôi ở đây có thể là sự hiểu lầm, nhưng: "Các thiết bị IIC không cần phải được cấp nguồn từ [...] cùng một điện áp " được xem như ngụ ý rằng các thiết bị I2C chạy bằng 5V và 3V (ví dụ) có thể chia sẻ cùng một bus I2C mà không cần bất kỳ thành phần bổ sung hoặc biện pháp phòng ngừa nào (vì bạn không đề cập đến trình dịch mức). Và tất nhiên họ không thể làm điều đó, vì các ngưỡng logic I2C của mỗi thiết bị hiện được tham chiếu đến Vcc của riêng họ. Có lẽ việc thiếu một đề cập rõ ràng của các dịch giả cấp độ gây ra downvote?
SamGibson

13
Tùy thuộc vào các pull-up và chân I / O được sử dụng, giao tiếp kiểu I2C có thể hoạt động trơn tru giữa các thiết bị 5V và 3.3V. Chẳng hạn, sử dụng pull-up 10K lên 5V, sẽ cho phép sử dụng các thiết bị 3,3V nếu chúng có đầu vào không được bảo vệ chịu được 5V hoặc nếu chúng có thể chịu được 150uA trong điốt bảo vệ. Và sử dụng pullups lên 3.3V sẽ hoạt động, ít nhất là ở tốc độ chậm hơn, để giao tiếp với các thiết bị 5V có ngưỡng đầu vào cao từ 2,5V trở xuống.
supercat

7
@Sam: Trên thực tế các thiết bị IIC 5 V và 3,3 V có thể nằm trên cùng một bus IIC. Các thiết bị có mức điện áp cố định bất kể điện áp cung cấp của chúng được đề cập và xử phạt cụ thể trong thông số IIC.
Olin Lathrop

5
Trong tài liệu cũ "Xe buýt I2C và cách sử dụng" của Philips, phần 10.0 đề cập đến ngưỡng đầu vào cố định của các thiết bị I2C 5V (thường là NMOS). Sau đó, nó nói: " Các thiết bị bus I2C có mức đầu vào liên quan đến VDD phải có một đường cung cấp chung mà điện trở kéo lên cũng được kết nối " (đậm của tôi). @supercat - bạn đã đề cập: "Các thiết bị 5V có ngưỡng đầu vào cao từ 2,5V trở xuống " Bạn có thể giúp tôi bằng cách đưa ra ví dụ về một thiết bị như vậy không? Đọc tài liệu I2C cũ, tôi chỉ có thể tìm thấy đề cập đến mức tối thiểu 3V I2C Vih cố định cho các thiết bị 5V cũ. Cảm ơn.
SamGibson

2
@SamGibson: Các thiết bị có mức đầu vào liên quan đến VDD có thể cần phải hoạt động từ các điện áp nằm trong một phạm vi nhất định của nhau. Chúng gần nhau đến mức nào tùy thuộc vào mức điện áp có liên quan đến VDD. Bảng dữ liệu Microchip cho PIC16F877 (phần 5V được chọn tùy ý) liệt kê V (IH) cho các chân bình thường của nó là 0,25VDD + 0,8V, mặc dù đối với các đầu vào Kích hoạt Schmitt của nó, nó sẽ cao hơn nhiều. Ở VDD = 5.2V, đầu vào bình thường sẽ có V (IH) được chỉ định là 2.1 volt; Tôi không thấy thông số kỹ thuật cho phần cứng I2C V (IH), mặc dù biểu đồ hiệu suất điển hình cho thấy nó nằm giữa đầu vào bình thường và ST.
supercat

24

Vào thời xưa, các trình điều khiển TTL tốt hơn nhiều trong việc kéo tín hiệu xuống hơn là kéo nó lên. Do đó, các giao thức như I2C, nhưng cũng có các dòng ngắt, thiết lập lại và các giao thức khác, tất cả đều được thực hiện bằng cách sử dụng kéo lên với kéo xuống phân tán.


8
Trong thời hiện đại tốt hơn, điều tương tự vẫn đúng vì đây là một tài sản nội tại của chất bán dẫn. Ngày nay, nó không tốn nhiều tiền để có được một bóng bán dẫn kéo mạnh hơn để xử lý cùng một dòng điện.
Arsenal

2
Tôi đã nói rằng với CMOS, việc đến gần với điện áp đường sắt cũng dễ dàng hơn nhiều. Một "vấn đề" khác mà TTL đang phải vật lộn. (Có lẽ chúng ta nên tính mình may mắn vì điều đó cho phép 3V3 CMOS giao tiếp với TTL)
Oldfart

14

Sử dụng mặt đất dễ dàng hơn như một tài liệu tham khảo chung giữa các hệ thống con có thể có điện áp cung cấp khác nhau. Nếu bạn sử dụng bóng bán dẫn PNP để kéo lên điện áp cung cấp, tất cả các hệ thống con sẽ phải được kết nối với cùng một nguồn cung cấp.


8

Câu trả lời tốt có rất nhiều ở đây, nhưng cũng có một lý do khác.

Nếu trạng thái không hoạt động của xe buýt ở dưới đất, không có cách nào để biết xe buýt có được kết nối hay chỉ treo trong không gian.

Việc kéo lên được đặt tại thiết bị chính là điều bình thường. Nô lệ thường không có một pull-up. Điều này là do dòng kéo xuống sẽ được yêu cầu để xác nhận mức thấp sẽ tăng theo số lượng thiết bị được kết nối với xe buýt.

Một nô lệ, khi cắm vào xe buýt, sau đó có thể phát hiện ra rằng đường dây được kéo lên cao (Giả sử nó không được sử dụng) và biết rằng xe buýt thực sự ở đó và yên tĩnh. Đó sẽ không phải là trường hợp với một chiếc xe buýt thiên vị mặt đất.


Để phát hiện xe buýt bị kéo lên cao, một nô lệ phải kéo nó xuống thấp ngay từ đầu. Tôi không chắc tại sao một quy trình tương tự sẽ không thể thực hiện được với cực tính ngược lại.
Dmitry Grigoryev

@DmitryGrigoryev tại sao nó cần phải kéo một cái gì đó đã cao thấp?
Trevor_G

5

Nếu tôi hiểu chính xác câu hỏi, một khía cạnh là:

  • Tại sao bạn sử dụng điện trở kéo lên và bóng bán dẫn NPN thay vì điện trở kéo xuống và bóng bán dẫn PNP?

Trước hết bạn cần lưu ý rằng bạn không sử dụng bóng bán dẫn lưỡng cực (NPN, PNP) mà là MOSFET (tồn tại trong bốn biến thể khác nhau).

Các thiết bị sử dụng biến thể " pull-up và NPN " sử dụng MOSFET cải tiến kênh n . Bởi vì nguồn của MOSFET này được kết nối với mặt đất, điện áp nguồn cổng (điều khiển dòng điện) bằng với điện áp giữa cổng và mặt đất. Vì vậy, MOSFET có thể được điều khiển bằng điện áp trong khoảng từ 0 đến Vdd.

Sẽ có ba khả năng để thực hiện biến thể " kéo xuống và PNP ":

  • Sử dụng MOSFET cải tiến kênh p

    Trên một MOSFET kênh p IC NMOS hoặc CMOS có đặc tính tương đương (điện trở, v.v.) đòi hỏi nhiều không gian hơn so với MOSFET kênh n.

    Trong không gian vi điện tử là tiền nên tránh các MOSFET kênh p nếu có thể.

  • Sử dụng MOSFET tăng cường kênh n

    Điều này đòi hỏi đầu ra của mạch logic điều khiển bóng bán dẫn phải có điện áp "THẤP" của điện áp cung cấp (ví dụ + 5V) và điện áp "CAO" trên điện áp cung cấp (ví dụ + 10V khi phần còn lại của mạch được cung cấp với + 5V).

    Lý do: Điện áp nguồn-mặt đất sẽ là Vdd khi MOSFET đang tiến hành. Điện áp nguồn cổng phải dương nên điện áp giữa cổng và mặt đất thậm chí phải cao hơn.

    Bạn sẽ cần hai nguồn cung cấp điện áp - và một mạch chuyển đầu ra của mạch logic từ 0 ... + 5V sang + 5V ... + 10V ...

  • Sử dụng MOSFET suy giảm kênh n

    Thật không may, tôi không thể nói với bạn nhiều về giải pháp này. Tuy nhiên, tôi đã tìm thấy một số trang sử dụng Google nói rằng các MOSFET cạn kiệt khó sản xuất hơn các MOSFET nâng cao và chúng được tránh vì lý do này.

    Tôi biết từ các thiết bị điện tử công suất (không phải vi điện tử) rằng biến thể "hai nguồn cung cấp năng lượng" được mô tả ở trên thậm chí còn được ưa chuộng hơn các MOSFET cạn kiệt. (Nhưng tôi không thể nói cho bạn tại sao.)

    EDIT Sử dụng MOSFET suy giảm kênh n, bạn có thể sẽ cần một điện áp âm (ví dụ -5V), do đó bạn cũng sẽ cần hai điện áp cung cấp ...


0

Ngoài ra còn có thêm một lợi ích nữa khi có các đường dữ liệu chung và kéo lên (qua việc có VCC chung và kéo xuống):

Ngay cả khi ý định ban đầu là kết nối các thiết bị trên cùng một PCB chỉ trong khoảng vài inch, thì nó đã thành công đủ rồi nên giờ đây không có gì lạ khi có một vài dòng feets và kết nối "thiết bị" có thể là máy tính hoặc thứ gì đó tương đương sự phức tạp, với một số thiết bị có nguồn năng lượng riêng (có chất lượng khác nhau, nói rằng bạn kết nối một cái gì đó cắm tường với một cái gì đó chạy bằng pin). Sẽ tốt hơn nếu kết nối hoạt động "ít nhất là tốt" ngay cả trong điều kiện không lý tưởng và không có thông số kỹ thuật.

Và nhiều thiết bị được kết nối như vậy có thể được kết nối bằng cách nào đó cũng bằng các phương tiện khác, sau đó chỉ giao tiếp I2C. Thông thường khi kết nối các thiết bị với nhau, bạn kết nối nó với common ground- đôi khi là một phần của các chức năng khác, đôi khi chỉ vì nó được gắn trên vỏ kim loại và các thiết bị cũng được kết nối với vỏ (hoặc với bộ làm mát thông thường hoặc một cái gì đó tương tự) hoặc có thể được bảo vệ cáp với lá chắn nối đất bên trong - cũng kết nối các căn cứ.

Nếu bạn cũng kết nối trực tiếp các đường dây điện (VCC) của các thiết bị đó, bạn sẽ gặp vấn đề khi các đường dây đó có điện áp khác nhau một cách tự nhiên (chắc chắn, nó có thể nói là 5V ở đây và ở đó, nhưng tùy thuộc vào dung sai xây dựng và một phần của nguồn điện cũng có thể là 4,9V hoặc 5,2V hoặc thậm chí thay đổi, nếu nó chạy bằng pin và đôi khi chạy một số động cơ, làm cho công suất giảm và tăng theo thời gian).

Trong trường hợp như vậy, có hiệu quả ngắn mạch giữa các nguồn năng lượng của một phần Volt và tùy thuộc vào nguồn (và điện trở của các cách), có thể có dòng điện tương đối cao dẫn đến không chỉ lãng phí năng lượng và tăng nhiệt, mà thậm chí có thể gây hại ( hoặc rút ngắn cuộc sống) của một số nguồn đó. Cái nào không tốt.

Có mặt bằng chung và pull-up tránh được các vấn đề như vậy - mặt đất là điện trở nối đất và pullup chỉ cho phép dòng điện chéo thực sự nhỏ ngay cả khi VCC khác rất nhiều so với các thiết bị.


1
Điều này về cơ bản giống như câu trả lời của Dave Tweed.
Janka

-2

Bạn không cần phải gửi quá nhiều năng lượng qua chip, nếu nó kéo lên.

Bởi vì con chip không lái bất cứ thứ gì, nó chỉ tạo ra một đoạn ngắn để đưa xe buýt về 0 và mở một để đưa nó về 1.

Nếu nó bị kéo xuống, bạn sẽ phải truyền năng lượng qua chip để lái xe buýt tới 1. Nếu xe buýt xảy ra sự cố ngắn, đó có thể là rất nhiều năng lượng bạn lái qua con chip đó để cố gắng đẩy nó lên tới 1.

Tuyên bố miễn trừ trách nhiệm: Tôi là một EE khá tệ hại vào thời điểm này.


3
Chào mừng đến với EE.SE. " Bạn không cần phải gửi quá nhiều năng lượng qua chip, nếu nó kéo lên. " Nếu điện trở kéo lên và kéo xuống có cùng kích thước thì dòng điện sẽ giống nhau. Kéo lên sẽ yêu cầu dòng điện được lấy từ chip điều khiển và chìm trong chip lái xe. Kéo xuống sẽ yêu cầu dòng điện được lấy từ chip lái xe và bị chìm bởi chip điều khiển. Một sự vô tình ngắn có thể là V + hoặc mặt đất.
Transitor
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.