IC nhỏ nào có thể cung cấp cho pullups I2C có thể chuyển đổi?


7

Mục tiêu của tôi là thay thế một DPST trên điện trở pullup bằng một cái gì đó đơn giản, rẻ tiền và rất nhỏ có thể được kích hoạt bằng điện áp bus I2C. Tôi nghĩ rằng đây có thể là một yêu cầu đủ phổ biến để tôi tìm thấy một IC đơn giản cho nhiệm vụ này, nhưng sau nhiều giờ tìm kiếm thông qua bảng dữ liệu, tôi không tìm thấy giải pháp nào lý tưởng như ruột thịt của tôi nên tồn tại.

Câu hỏi về cách sử dụng GPIO cho Pullups có thể chuyển đổi của I2C có những điều cơ bản về điều tôi đang cố gắng đạt được trên một PCB rất nhỏ. Tôi không nhất thiết muốn sử dụng GPIO để bật và tắt pullups, mục tiêu của tôi là linh hoạt trong thiết kế để các pullups có thể được bật bởi một jumper duy nhất hoặc GPIO.

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab

Lấy cảm hứng từ Bus Pirate , hoạt động tương tự bằng CD4066BC, bộ chuyển đổi song phương Tôi tìm thấy TC7W66F, công tắc song phương kép phù hợp với mục tiêu giá cả và không gian của tôi nhưng tôi tưởng tượng ra một thứ tương tự như gói SOT-23.

Câu hỏi được đề cập ở trên có câu trả lời gợi ý sử dụng FET và tôi đã tìm thấy một số gói FET kép có nguồn được gắn với nhau có vẻ như chúng có thể hoạt động nhưng tôi chủ yếu là một người làm phần mềm và phải thừa nhận không cảm thấy thoải mái 100% khi sử dụng thứ gì đó như thế này mà không cần lời khuyên thêm, hoặc nếu nó sẽ yêu cầu các thành phần tiếp theo giết chết ham muốn không gian của tôi?


2
Có bất kỳ lý do tại sao bạn phải sử dụng tất cả các công tắc và không thể chỉ kết nối 'đỉnh' của mỗi điện trở với điểm I2C-PU của bạn?
Brhans

@brhans, hoạt động tốt khi bạn muốn pullup, khi bạn không có thì bạn thực sự có R1 + R2 trên các dòng SDA và SCL không chính xác như mong muốn.
DanSut

4
Tại sao đôi khi bạn không muốn kết nối pull-up? I2C được thiết kế khá nhiều xung quanh các pull-up luôn ở đó.
Photon

@ThePhoton PCB chứa một vài thành phần I2C và có thể được cắm vào các bo mạch khác (nơi MCU và / hoặc các công cụ I2C khác tồn tại) có thể hoặc không thể cung cấp dịch vụ kéo I2C
DanSut

1
@DanSut Bạn vẫn sẽ gặp sự cố khi một số bảng đột phá được cắm vào và mỗi bảng có điện trở kéo lên không nằm trong tầm kiểm soát của bạn. Đây là một bài viết về vấn đề này.
Nick Alexeev

Câu trả lời:


12

Tôi muốn đề xuất các BJT "thiên vị"

Các MOSFET kép có xu hướng có nhiều điện dung Drain-Source sẽ ảnh hưởng đến thời gian tăng của bus I2C của bạn. Transitor chuyển mạch BJT có xu hướng có ít hơn. Ví dụ: những cái này có Cob chỉ 3pF thường ở mức 10V (nó sẽ cao hơn 2-3 lần ở điện áp thấp, chúng không cho bạn biết và bạn phải biết) nhưng điều đó vẫn khá khiêm tốn. Thêm các điện trở pullup vào bộ thu, bộ phát vào Vdd và kết nối các chân đế với dòng / enable của bạn và bạn đã hoàn thành (một phần cộng với các điện trở, và gói chỉ có 2.0 x 2.1mm). Rất rẻ về khối lượng, và không phải lo lắng nhiều về ESD.

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

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab


Vậy tại sao không phải là MOSFE?

Họ đang kháng cự thấp hơn, phải không? Chà, các BJT bão hòa sẽ giảm 50 ~ 100mV rất có thể ở các dòng điện bạn sẽ sử dụng chúng (so sánh tốt với 4066 công tắc) và so sánh điện dung đầu ra của MOSFET FDS6312P (Coss) - thường là vài trăm pF gần 0V, đó là cao gần bằng mức tối đa 400pF cho tất cả các thiết bị trên xe buýt.

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


2
+1 để so sánh điện dung đầu ra FET với tối đa bus I2C. Làm tốt.
bitsmack

2
+1 So sánh thú vị. Chắc chắn có giá trị xem xét qua các MOSFET. Vì chúng có kích thước / pinout khá giống nhau, bạn có thể thực hiện một thiết kế và có một lựa chọn dễ dàng phù hợp nhất với yêu cầu. Cách tiếp cận này cũng sẽ loại bỏ bất kỳ điện trở kéo lên cần thiết nào làm giảm mạch xuống chỉ còn một thành phần
Tom Carpenter

Tôi thậm chí không bao giờ xem xét yếu tố điện dung vì vậy câu trả lời này được đánh giá cao trong việc giáo dục tôi. Các công tắc CBT3306 mà tôi đang xem không có điện dung đồ thị như thế này, vì vậy tôi có giả sử khi chúng được chế tạo bằng FET mà tôi sẽ thấy vấn đề tương tự trong cách tôi sử dụng chúng không?
DanSut

1
@DanSut Trên thực tế, chúng trông không tệ ở tất cả 6,45pF điển hình ở mức 3V, vì vậy vẫn có thể chấp nhận được ở điện áp thấp (có thể ~ 20pF). Trở kháng loạt rất thấp (5 ohms), nhưng điều đó không liên quan ở đây - không phải vậy nếu công tắc nối tiếp. Vấn đề là nhiều MOSFE kép được thiết kế để có các Rd (bật) rất thấp và mang theo dòng điện, vì vậy chúng không phù hợp. Không quá nhiều khi sử dụng MOSFE (4066 cũng là MOSFET), đó là những MOSFET lớn. Bạn có thể nghĩ về chúng như các điểm của các MOSFET nhỏ song song để điện trở giảm với 1 / n và điện dung tỷ lệ với n.
Spehro Pefhany

5

Một tùy chọn là hai MOSFET kênh P. Chúng có thể được kết nối như sau:

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab

Về cơ bản, nếu bạn sử dụng MOSFET mức logic, bạn có thể cung cấp tín hiệu EN_n (không bật) với + V volt để vô hiệu hóa các điện trở kéo lên và 0V để bật chúng. Khi bị vô hiệu hóa các điện trở về cơ bản sẽ không ở đó. Bạn sẽ có các điốt cơ thể từ các dòng I2C đến V +, nhưng chúng không gây ra vấn đề gì.

Như @bitsmack chỉ ra, bạn cũng có thể thêm một điện trở kéo lên tùy chọn (R3) trên chân EN_n để giữ cho MOSFETS bị vô hiệu hóa nếu chân bị nổi. Điều này sẽ cho phép đầu vào được mở cống - chỉ đơn giản là ngắn xuống đất để bật hoặc để nổi để tắt.

Có thể nhận được các gói rất nhỏ (SOT23-6 hoặc SOT23-5) có chứa hai MOSFET P-Ch (ví dụ: cái này ) có thể được nối dây như hình trên - thường chúng được sắp xếp theo cách làm cho việc định tuyến khá đơn giản. Về cơ bản, bạn có thể nối các cổng lại với nhau và cùng nhau tạo ra một gói 4 pin rất nhỏ. Ngay cả khi bạn ném vào điện trở kéo lên như 0603, toàn bộ mạch có thể sẽ nhỏ hơn một jumper 2x2pin 0,1 ".


@dansut Nếu bạn làm điều này, tôi khuyên bạn nên đặt một điện trở pullup từ mỗi cổng của MOSFET thành V + ... Bằng cách này, các pullups I2C sẽ không bật trước khi tín hiệu EN_n của bạn được xác nhận (tức là trước khi vi điều khiển cấu hình và xác nhận trạng thái pin của nó)
bitsmack

@bitsmack người ta sẽ làm như các cổng sẽ được kết nối trực tiếp. Tôi sẽ thêm nó vào mạch vì điều đó có nghĩa là toàn bộ sự việc có thể được kiểm soát theo kiểu cống mở.
Tom Carpenter

Vâng, rất đúng :)
bitsmack

4

Tiếp cận thực tế

Tất cả các bảng đột phá mà tôi đang cắm cùng nằm dưới sự kiểm soát của tôi [...]

Giữ cho nó đơn giản. Xé ra các điện trở kéo lên I2C từ mọi bảng đột phá mà bạn có. Cài đặt điện trở kéo lên với các giá trị hợp lý trên bảng vi điều khiển.

Mong muốn cơ bản của tôi là có thể bật PU ở nơi tôi muốn với một bước nhảy chứ không phải 2

Cố gắng giảm số lượng người nhảy từ 2 xuống còn rất nhiều việc ngoài lợi nhuận giảm dần, nếu tôi có thể tự nói như vậy.

Nếu một cách tiếp cận thực tế không hấp dẫn

Bạn có thể làm một cái gì đó dọc theo dòng của mạch kéo lên liên tục hoạt động.

hoạt động kéo lên I2C không đổi

I=VZ0.65R307

R307=R308

Bất kỳ bóng bán dẫn PNP tín hiệu nhỏ mục đích chung sẽ làm.


Trong tâm trí tôi biết rằng tôi có thể sẽ nhận được câu trả lời giống như câu trả lời thực tế của bạn - tôi đánh giá cao câu trả lời và lý luận của bạn và đó có thể là hướng cuối cùng tôi đi. Cũng cảm ơn vì đã cung cấp giải pháp thay thế, điều tra việc này chắc chắn sẽ cải thiện kiến ​​thức của tôi trong lĩnh vực này.
DanSut

1

Còn về việc sử dụng bộ tăng tốc bus I2C có kích hoạt, như LTC4300A-1 nhập mô tả hình ảnh ở đây

Điều này có thể cô lập các bộ phận của xe buýt, và có nghĩa là để làm như vậy. Nhược điểm là bạn cần pullups của bạn ở cả hai bên. Ưu điểm là bạn sẽ không phải tự hỏi!

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.