Có bao nhiêu nô lệ i2c có thể hỗ trợ chủ i2c?


17

Có số lượng nô lệ i2c tối đa mà chủ i2c có thể lái không? Các yếu tố giới hạn vật lý là gì?


1
Bạn có một địa chỉ 7 bit. Điều đó có nghĩa là bạn có thể giải quyết tới 127 nô lệ.
Botnic

Cảm ơn. Có các yếu tố giới hạn vật lý như ổ đĩa hiện tại, điện dung hoặc một cái gì đó tương tự ngăn cản số lượng nô lệ lên tới 127?
user768421

1
@Botnic hoàn toàn bỏ qua các công tắc, trung tâm, bộ đệm, bộ lặp, và bất kỳ thiết bị i2c nào cho phép bạn mở rộng xe buýt.
Người qua đường

Câu trả lời:


22

Yếu tố giới hạn phần mềm là kích thước của địa chỉ được sử dụng cho các nô lệ: 7 bit hoặc 10 bit, hỗ trợ 127 và 1023 thiết bị, tương ứng. Về mặt vật lý, có hai hạn chế. Đầu tiên, kích thước vật lý của xe buýt vì xe buýt chỉ có ý nghĩa cho các hoạt động ngắn (phần liên IC). Nếu xe buýt quá lớn, có các hiệu ứng trì hoãn tải và lan truyền điện dung cần được xử lý. Thứ hai, một số thiết bị không thể hỗ trợ đầy đủ các địa chỉ I2C. Ví dụ, con quay hồi chuyển MPU6050 chỉ hỗ trợ hai địa chỉ và một số thiết bị dành địa chỉ cụ thể cho các mục đích đặc biệt.


2
Bạn có một lỗi do một. Địa chỉ 7 bit hỗ trợ 128 địa chỉ (0 đến 127). Hỗ trợ địa chỉ 10 bit 1024 địa chỉ (0 đến 1023).
CurtisHx

3
Đây không phải là một lỗi. Đó là "lỗi do 6 lỗi" vì có 7 địa chỉ dành riêng không chỉ một.
kruemi

Sơ đồ địa chỉ được quyết định bởi các thiết bị trên xe buýt, chủ hoặc nô lệ. Một số thiết bị có phạm vi địa chỉ đặt trước và địa chỉ dành riêng. Các thiết bị khác, ví dụ như nhiều bộ điều khiển vi mô, không có địa chỉ dành riêng và có thể sử dụng bất kỳ địa chỉ nào trong sơ đồ bit đã cho.
vini_i

Những con số này có phần đúng, tuy nhiên cần có một cảnh báo. Có một vài địa chỉ dành riêng như 1111 XXX và 0000 XXX. Điều này có nghĩa là 7 bit = 2 ^ 7 - 16 = 112 địa chỉ có thể sử dụng, 10 bit là đầy đủ 2 ^ 10 1024. 8 bit không (không nên là một thứ) mà nó thường bao gồm bit R / W trên 7 bit. nxp.com/docs/en/user-guide/UM10204.pdf
busfault

@busfault Tôi thừa nhận rằng địa chỉ 8 bit không thực sự là một điều. Tôi đã loại bỏ chúng khỏi câu trả lời của tôi. Hầu hết các vi điều khiển có thể chọn bỏ qua một số hoặc tất cả các địa chỉ dành riêng và sử dụng phạm vi địa chỉ đầy đủ. Tôi lưu ý trong câu trả lời của tôi rằng đây là thiết bị cụ thể.
vini_i

10

Số lượng nút tối đa bị giới hạn bởi không gian địa chỉ và cũng bởi tổng điện dung của bus là 400 pF, điều này hạn chế khoảng cách liên lạc thực tế đến vài mét.

Đọc thêm tại I²C


9

Địa chỉ giới hạn số lượng thiết bị - một số có thể sử dụng địa chỉ 10 bit (khá hiếm khi được sử dụng), điều này giới hạn số lượng địa chỉ là 1024. Có một số địa chỉ 'dành riêng'.

I2C (trái ngược với "xe buýt hai dây" hoặc bất cứ điều gì người khác muốn gọi các xe buýt tương tự), nên tuân theo tiêu chuẩn NXP (nhũ danh Philips), thông số kỹ thuật và hướng dẫn sử dụng xe buýt UM10204 I2C . Đó phải là tài liệu tham khảo chính của bạn, không phải là các diễn giải và tập hợp con khác nhau tồn tại ở nơi khác.

Số lượng thiết bị tối đa sẽ bị ảnh hưởng bởi khả năng điều khiển của đầu ra yếu nhất (từ đó xác định điện trở pullup tối thiểu), điện dung dây và đầu vào và chế độ / tần số hoạt động. Xem phần 7.2 Hoạt động trên điện dung bus tối đa cho phép nếu vượt quá điện dung tối đa:

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


7

Một bus i2c bị giới hạn chủ yếu bởi điện dung của bus (và do đó là tốc độ) và các địa chỉ thiết bị có thể truy cập. Và không gian bảng vật lý.

Nhưng không có giới hạn trên thực sự, khi bạn tính đến bộ đệm bus, bộ mở rộng, bộ lặp, bộ tập trung, bộ ghép kênh, bộ chuyển mạch (hoặc bất kỳ tên nào khác cho một thiết bị có thể chuyển đổi giữa nhiều bus). Những cái này thêm một số chi phí i2c, như có thể có thể truy cập thông qua cùng một bus i2c. Ví dụ, PCA9548A là một công tắc bus 8 bit.

Về mặt lý thuyết, con chip đơn lẻ này có thể tăng gấp bốn lần số lượng nô lệ i2c (127 * 8). Và PCA9548A có thể được cấu hình cho tối đa 8 địa chỉ trên một xe buýt, do đó, 8 * 8 * 127 thiết bị. (toán có thể được tắt). Và đó chỉ là với thiết bị này và không nhiều hơn nữa.

Thành thật mà nói, không có giới hạn lý thuyết nếu bạn điều chỉnh cho điện dung.


5

I2C chỉ định 2 độ dài địa chỉ, 7 và 10 bit , cung cấp tối đa lý thuyết tương ứng là 128 và 1024 địa chỉ riêng biệt.

Tuy nhiên, có một vài địa chỉ dành riêng, chẳng hạn như 0x00 (cuộc gọi chung). Điều này tiếp tục giới hạn không gian địa chỉ.

Nếu bạn đang xây dựng một hệ thống mà bạn có quyền kiểm soát trực tiếp các thiết bị I2C, bạn có thể sử dụng các địa chỉ dành riêng cho mục đích sử dụng của riêng bạn, nhưng hệ thống sẽ không còn tuân thủ tiêu chuẩn I2C.

Ngoài việc đánh địa chỉ, còn có những hạn chế về xe buýt vật lý. Mỗi thiết bị trên xe buýt cần có khả năng kéo xe buýt xuống thấp trong một khoảng thời gian nhất định (tùy thuộc vào tốc độ xe buýt). Nếu xe buýt có nhiều điện dung, các thiết bị có thể không thể kéo SDA xuống đủ nhanh và việc kéo lên có thể không đưa SDA trở lại đủ nhanh.

Bây giờ, các vấn đề phần cứng có thể được khắc phục với một chút phần cứng trình điều khiển. Hiện tôi đang làm việc trên một dự án sử dụng I2C để liên lạc với các thiết bị trong phạm vi 10 mét. Xe buýt chính sử dụng 24v và mỗi bảng có một trình điều khiển giảm xuống còn 3,3v.

Trong một vỏ hạt, giới hạn vật lý của I2C có thể được khắc phục. Địa chỉ có thể được khắc phục, nhưng chỉ khi bạn có quyền kiểm soát trực tiếp trên thiết bị.


Đã gần ba năm kể từ khi bạn làm việc trên những chiếc xe buýt i2c rất dài. Họ làm việc ổn chứ?
wallyk

1
@wallyk Tôi rời công ty đó ngay sau khi đăng câu trả lời đó. Tôi sẽ nói rằng với phần cứng phù hợp, bạn có thể làm cho I2C giao tiếp qua khoảng cách xa hơn. Tuy nhiên, có những giao thức truyền thông khác được thiết kế cho khoảng cách xa và có lẽ sẽ là lựa chọn tốt hơn I2C.
CurtisHx

5

Giới hạn chính về số lượng nô lệ mà chủ nhân có thể lái xe thường đến từ các yếu tố điện như điện dung của xe buýt, rò rỉ, cường độ ổ đĩa, v.v. Nếu người ta có thể xây dựng nô lệ với điện dung không ký sinh và rò rỉ bằng 0 với dấu vết bảng điện dung bằng không, thì điện dung của xe buýt sẽ không phải là một yếu tố, nhưng trong thực tế, không có giả định nào được giữ vững.

Địa chỉ của các thiết bị "biết" về nhau, mặt khác, thực sự không phải là một vấn đề. Sẽ rất đơn giản khi thiết kế một thiết bị ngoại vi cho phép hàng tỷ chip được kết nối bằng một địa chỉ đọc và một địa chỉ ghi. Đơn giản chỉ cần xác định rằng mọi thiết bị phải có ID bốn byte duy nhất và được yêu cầu nghe địa chỉ ghi mọi lúc, nhưng phải loại bỏ mọi giao dịch có bốn byte dữ liệu được truyền đầu tiên không khớp với ID của chúng. Hơn nữa xác định rằng các thiết bị chỉ có thể phản hồi địa chỉ đọc nếu giao dịch ghi cuối cùng mà chúng nghe được khớp với địa chỉ của chúng.

Nếu một người muốn thêm khả năng để chủ xác định ID của tất cả các nô lệ được kết nối, người ta có thể bảo lưu một số phạm vi ID đặc biệt cho các mục đích đó. Ví dụ, người ta có thể nói rằng nếu byte ID đầu tiên là FF, thì bốn byte tiếp theo sẽ là mặt nạ và bốn byte sau đó là ID; một thiết bị sẽ được kết nối (và lấy byte ID cuối cùng) nếu phần ID của nó được chỉ định bởi mặt nạ khớp với lệnh được đưa ra trong lệnh. Điều này sẽ cho phép chủ xác định ít nhất một thiết bị sử dụng 64 giao dịch và các thiết bị bổ sung sử dụng 62 giao dịch hoặc ít hơn mỗi giao dịch. Có lẽ không phải là phương tiện nhận dạng thiết bị nhanh nhất có thể, nhưng không tệ khi cung cấp không gian tìm kiếm hàng tỷ ID thiết bị.


2

Câu trả lời ngắn: Nó phụ thuộc

Nếu bạn có các thiết bị (phổ biến) có địa chỉ 7 bit lên tới 104 Thiết bị (128 địa chỉ - địa chỉ dành riêng (0x00-0x07 và 0xF0-0xFF được bảo lưu)) (áp dụng một số giới hạn nhất định) Nếu bạn có (ít phổ biến hơn) các thiết bị hỗ trợ 10 bit giải quyết tối đa 1024 thiết bị (bạn có thể kết hợp các thiết bị 7 bit và 10 bit và tiếp cận tới 1136 thiết bị theo cách đó)

Bây giờ đến giới hạn: Hầu hết các thiết bị đơn giản chỉ có thể được cấu hình thành hai đến 8 địa chỉ khác nhau. Bạn có thể khắc phục điều này bằng cách đặt hàng các thiết bị tùy chỉnh với các địa chỉ cơ sở khác nhau (nhưng điều này thường có nghĩa là bạn đặt mua một lượng thiết bị tối thiểu) Cũng có những hạn chế về phần cứng (chủ yếu là điện dung xe buýt) nhưng điều này có thể được giải quyết bằng trình điều khiển i2c đặc biệt.

Nếu bạn muốn kết nối nhiều thiết bị ở khoảng cách lớn hơn, tôi khuyên bạn nên sử dụng bus trường! I2C được thiết kế để liên lạc bên trong một thiết bị (như TV). Tôi đang sử dụng I2C với RaspberyPi với cáp bên ngoài lên đến 50 cm (ngay cả với Phần T bạn không bao giờ nên có trong hệ thống xe buýt). Nó hoạt động tốt đáng ngạc nhiên.


0

Số lượng thiết bị kết nối với xe buýt chỉ bị giới hạn bởi tổng điện dung cho phép của bus là 400 pF. Bởi vì hầu hết các IC có giao diện I²C sử dụng công nghệ CMOS có công suất thấp, trở kháng cao, nhiều IC có thể được kết nối với bus I²C trước khi đạt được điện dung tối đa


1
Điều này không trả lời câu hỏi của OP trong một trang viên hoàn chỉnh. Cố gắng trả lời tất cả các khía cạnh của câu hỏi, ngay cả khi sử dụng các giá trị gần đúng. Chỉ định và / hoặc để lại một liên kết đến nguồn thông tin của bạn.
Sparky256

0

Với các chip ghép kênh được thêm vào (như TCA9544A) hoặc bộ đệm (như PCA9515B), bạn có thể vượt qua mọi giới hạn - cả điện dung và địa chỉ bus.

Bạn có thể đặt 3 thiết bị có địa chỉ giống hệt nhau phía sau bộ ghép kênh và chỉ chọn một trong số chúng, liên lạc với nó và sau đó chọn một thiết bị khác. Tất nhiên phần mềm trở nên phức tạp hơn.

Nếu bạn có dây dài, bạn có thể đặt một bộ đệm ở giữa và vượt qua giới hạn điện dung.


Không, bạn vẫn sẽ bị giới hạn: 4 Kênh / Bộ ghép kênh, trên mỗi kênh bạn có 4 Kênh con, sau đó bạn có các kênh con, kênh con và nhiều hơn nữa. Bạn có 3 dòng Địa chỉ trên mỗi kênhwitcher: Is 4 ^ (2 ^ 3) = 65536 kênh. Mỗi kênh bạn có 2 ^ 8 - 7 - 8 + 2 ^ 10 = 1265 Thiết bị / Kênh (Khi bạn cũng sử dụng Bộ đệm) (-7 dành cho địa chỉ dành riêng và -8 cho địa chỉ ghép kênh). 1265 * 65536 = 82903040 Thiết bị tối đa.
12431234123412341234123

Chỉnh sửa: Xin lỗi đã có lỗi: đó là 2 ^ 7 - 7 - 8 + 2 ^ 10 = 1137 Thiết bị / Kênh => 1137 * 65536 = 74514432 Thiết bị. Nhưng có thể có nhiều khả năng hơn khi bạn sử dụng IO-Expander để bật và tắt một số Bộ đệm (Sử dụng thực tế ở đâu xa nhưng khả năng về mặt lý thuyết).
12431234123412341234123
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.