Tôi nên chọn địa chỉ I2C nào?


16

Bây giờ tôi biết để có một địa chỉ I2C dành riêng cho mình, bạn phải trả cho người I2C một số tiền. Nhưng tôi không muốn làm điều này.

Tôi đang xin lời khuyên về địa chỉ nào tôi nên chọn cho nô lệ và MCU chính trong dự án của mình. Cũng sẽ có một EEPROM trên bảng. Vì vậy, tôi sẽ tránh sử dụng địa chỉ của EEPROM. Tôi dự định cho chủ nhân kết nối với một loạt các cảm biến, bao gồm con quay hồi chuyển và gia tốc kế, và có lẽ các thiết bị bộ nhớ bổ sung. Có bất kỳ khối địa chỉ nào tôi nên tránh? Tôi đã nghĩ đến việc chỉ sử dụng 0x00 cho chủ và 0x01 cho nô lệ, bởi vì những thứ đó dường như hiếm khi được sử dụng.

Một câu hỏi khác: sẽ là một ý tưởng tồi khi trộn các thiết bị 10 bit và thiết bị 7 bit trên cùng một xe buýt? Tôi đã xem xét khả năng MCU của tôi giao tiếp với địa chỉ 10 bit, nhưng chỉ sử dụng địa chỉ 7 bit cho cảm biến.


1
@ W5VO. Đúng, ngay bên cạnh thẻ SD mọi người chỉ muốn $ 3.000.
Thomas O

1
@ThomasO, bạn không cần phải trả tiền cho họ để có được một địa chỉ, như một định danh, bạn không phải trả tiền này để tạo ra một thiết bị, họ đang bán một dịch vụ. SDcard họ đang thực thi quyền sở hữu trí tuệ của họ, họ có thể bảo bạn làm điều đó hoặc chọn một công nghệ khác.
Kortuk

1
@ThomasO, tôi đã đưa ra quan điểm rằng có một cái gì đó mà bạn đang trả tiền trong trường hợp này. Ngoài ra, hai ngàn không có nhiều trong một sản phẩm thực sự.
Kortuk

1
@Thomas O $ 3.000 thực sự rất hợp lý cho các sản phẩm. Đây là một giọt trong xô cho bất kỳ công ty làm sản phẩm.
Kellenjb

2
@reemrevnivek, nhưng chủ sở hữu bằng sáng chế đã chọn rằng họ muốn yêu cầu điều đó và khiến phần cứng mở không thể cho phép sử dụng và yêu cầu phải trả khoản phí này. Là người giữ bằng sáng chế, họ có quyền đó. Tôi, cho đến khi luật thay đổi, sẽ đảm bảo điều này là rõ ràng. Tôi muốn đại tu bằng sáng chế và bản quyền, nhưng cho đến khi họ, đây là cách các kỹ sư có ý tưởng tốt được bảo vệ và khen thưởng.
Kortuk

Câu trả lời:


13

Đầu tiên, đừng sử dụng 0x00 và 0x01, những thứ đó được bảo lưu! Bảng 3 của Đặc tả bus I2C liệt kê các địa chỉ dành riêng (và lý do tại sao):

Slave addr R / W Mô tả
 0000 000 0 Địa chỉ cuộc gọi chung
 0000 000 1 byte BẮT ĐẦU
 0000 001 X địa chỉ CBUS
 0000 010 X Dành cho định dạng xe buýt khác nhau
 0000 011 X Dành cho các mục đích trong tương lai
 0000 1XX X mã chế độ Hs
 1111 ID thiết bị 1XX 1
 1111 0XX X Địa chỉ nô lệ 10 bit

Bạn cũng nên tránh xa 0x00 vì điều đó không có chuyển đổi cạnh và có thể là một điều kiện lỗi (và rất khó để gỡ lỗi).

Ngoài ra, tôi sẽ nói "Chỉ cần làm cho nó có thể cấu hình được." Nếu bạn muốn có thể cắm nhiều loại cảm biến khác nhau, thì bạn có thể trả NXP cho một địa chỉ hoặc cung cấp cho nó các địa chỉ có thể điều chỉnh. Sửa đổi phần mềm nên rõ ràng nếu bạn muốn phân phối mã nguồn. Tùy chọn phần cứng để chuyển đổi một hoặc hai bit của địa chỉ đã chọn của bạn (bộ nhảy hàn trên chân kỹ thuật số) là rẻ và dễ dàng, hoặc một mạng thang điện trở với bộ nhảy được kết nối với chân A / D có thể giúp bạn kiểm soát hoàn toàn phần cứng.


1
+1 cho địa chỉ cấu hình. Tôi đã thấy điều này trên các nô lệ sẽ có một vài điều tương tự trên cùng một xe buýt.
Kellenjb

Vâng, tôi đã nghĩ về các địa chỉ cấu hình. Nó có thể được cập nhật bằng cách thay đổi cài đặt từ hệ thống menu. Một điều quan trọng là cần phải thêm các biện pháp bảo vệ để ngăn người khác thay đổi địa chỉ và MCU chính mất liên lạc với nô lệ, do đó, một số loại giao thức cần được thiết lập để đặt lại địa chỉ (ví dụ sau 5 giây không có giao tiếp nên đặt lại địa chỉ .)
Thomas O

16

Chọn một thiết bị mà bạn tích cực sẽ không sử dụng trong thiết kế của mình và sử dụng địa chỉ I2C đó. Ví dụ: nếu bạn sẽ không cần RTC, bạn có thể sử dụng 0xA2 và 0xA3, được sử dụng bởi NXP PCF8563 (và có thể là các RTC khác).


Tôi thích điều này, rất thông minh.
NickHalden

Thật không may, một số thiết bị vẫn còn xung đột, ví dụ như ST STCN75TI DAC8571 hoặc Microchip 24AA025E48TI ADC121C027 .
Xcodo

10

Dưới đây là danh sách các địa chỉ được phân bổ kể từ năm 1999: http://www.nxp.com/acrobat_doad2/selectionguides/SELGUIDE.PDF

Họ không công bố danh sách đầy đủ với lý do này:

H: Có thể nhận được danh sách tất cả các địa chỉ nô lệ I²C được sử dụng cho đến nay không?

Trả lời: Không. Chất bán dẫn NXP không phát hành danh sách này của tất cả các địa chỉ nô lệ được gán trước đó, vì đây là cách duy nhất chúng tôi có thể đảm bảo danh sách luôn cập nhật và mỗi địa chỉ được gán là duy nhất. Nếu danh sách này được cung cấp, những người có giấy phép xe buýt I²C sẽ bắt đầu tự chọn địa chỉ nô lệ và danh sách trung tâm sẽ sớm trở nên không đầy đủ, điều này có thể dẫn đến xung đột. Nguyên tắc được thiết lập, được chứng minh là hoạt động tốt, là mỗi người được cấp phép gửi một yêu cầu địa chỉ nô lệ đến một liên hệ duy nhất trong Bán dẫn NXP, sau đó họ phân bổ địa chỉ nô lệ dựa trên một danh sách chính.

Từ http://www.nxp.com/products/interface_control/i2c/faq/

Bây giờ, nếu mọi thứ sẽ là nội bộ cho dự án của bạn, không có lý do gì bạn không thể chọn bất kỳ địa chỉ nào bạn muốn miễn là nó không xung đột với bất cứ điều gì bạn dự định kết nối.


Lý do kỳ lạ: bằng cách không có danh sách, họ đảm bảo giữ cho danh sách được cập nhật ...: - /
Federico Russo

Lý luận đơn giản: họ muốn đảm bảo rằng bất kỳ ai phân bổ ID sẽ có một danh sách thực sự cập nhật; có các bản sao lỗi thời của danh sách trôi nổi xung quanh sẽ làm suy yếu mục tiêu đó.
supercat

1
@Federico Họ có một danh sách, họ chỉ không công bố nó để mọi người buộc phải thông qua chúng để đảm bảo rằng danh sách đó được cập nhật. Nếu danh sách được công bố sẽ có hàng tấn người chọn địa chỉ không sử dụng, vậy thì điều gì xảy ra khi ai đó bảo lưu đúng địa chỉ đó?
Kellenjb

FWIW: SELGUIDE.PDF nằm trong liên kết
HiTechHiTouch

1

Như Kellenjb nói rằng bạn sẽ không nhận được danh sách đầy đủ các địa chỉ thiết bị nô lệ.

Tuy nhiên, có một số địa chỉ dành riêng mà bạn không thể sử dụng (ví dụ 0x00 là địa chỉ cuộc gọi chung).

Danh sách ở đây

Trộn địa chỉ 10 và 7 bit là tốt miễn là các nô lệ 7 bit tuân theo tiêu chuẩn I2C và bỏ qua địa chỉ 10 bit.

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.