어떤 I2C 주소를 선택해야합니까?


16

이제 I2C 주소를 직접 확보하려면 I2C 사람들에게 돈을 지불해야합니다. 그러나 나는 이것을하고 싶지 않습니다.

프로젝트의 슬레이브 및 마스터 MCU에 어떤 주소를 선택해야하는지 조언을 구하고 있습니다. 보드에는 EEPROM도 있습니다. 따라서 EEPROM의 주소 사용을 피할 것입니다. 마스터가 자이로 및 가속도계 및 추가 메모리 장치를 포함한 광범위한 센서에 연결되도록 계획하고 있습니다. 비워 두어야 할 주소 블록이 있습니까? 마스터에 0x00을 사용하고 슬레이브에 0x01을 사용하려고 생각했습니다. 왜냐하면 거의 사용되지 않는 것 같습니다.

또 다른 질문 : 동일한 버스에서 10 비트 장치와 7 비트 장치를 혼합하는 것은 나쁜 생각입니까? MCU가 10 비트 주소 지정과 통신 할 수 있지만 센서에는 7 비트 주소 만 사용하는 가능성을 고려하고있었습니다.


1
@ W5VO. 그러나 SD 카드 바로 옆에있는 사람들은 3,000 달러 만 원합니다.
Thomas O

1
@ThomasO, 식별자와 같은 예약 된 주소를 얻기 위해 지불 할 필요가 없습니다. 장치를 만들기 위해 지불 할 필요가 없으며 서비스를 판매합니다. SDcard는 지적 재산을 집행하고 있으며,이를 수행하거나 다른 기술을 선택하도록 지시 할 수 있습니다.
Kortuk

1
@ ThomasO, 나는이 경우 지불하고있는 것이 있다는 것을 지적하고있었습니다. 또한 실제 제품에는 2 천 개가 많지 않습니다.
Kortuk

1
@Thomas O $ 3,000는 실제로 제품에 매우 합리적입니다. 이것은 제품을 만드는 모든 회사의 버킷 감소입니다.
Kellenjb

2
@reemrevnivek, 그러나 특허권자는 오픈 하드웨어가이를 사용할 수 없게하고이 수수료를 지불하도록 요구합니다. 특허권자로서 그 권리를가집니다. 법이 바뀔 때까지 저는 이것이 분명하다는 것을 확신합니다. 저는 특허와 저작권을 점검하고 싶지만, 그것이 될 때까지 좋은 아이디어를 가진 엔지니어들을 보호하고 보상하는 방법입니다.
Kortuk

답변:


13

먼저 0x00과 0x01을 사용하지 마십시오. 예약되어 있습니다! I2C 버스 사양 의 표 3 에는 예약 된 주소와 그 이유가 나와 있습니다.

슬레이브 가산기 R / W 설명
 0000 000 0 일반 통화 주소
 0000 000 1 START 바이트
 0000 001 X CBUS 주소
 0000 010 X 다른 버스 형식으로 예약 됨
 0000 011 X 향후 사용을 위해 예약 됨
 0000 1XX X Hs 모드 마스터 코드
 1111 1XX 1 장치 ID
 1111 0XX X 10 비트 슬레이브 어드레싱

또한 에지 전환이없고 오류 조건 일 수 있으므로 디버깅하기가 어렵 기 때문에 0x00을 사용하지 않아야합니다.

그 외에는 "단지 구성 가능"이라고 말하고 싶습니다. 다양한 센서를 연결하려면 NXP에 주소를 지불하거나 주소를 조정할 수 있습니다. 소스 코드를 배포하려면 소프트웨어 수정이 분명해야합니다. 선택한 주소의 1 비트 또는 2 비트 (디지털 핀의 솔더 점퍼)를 토글하는 하드웨어 옵션은 저렴하고 쉽습니다. 또는 A / D 핀에 점퍼가 연결된 저항의 래더 네트워크는 하드웨어를 완벽하게 제어 할 수 있습니다.


1
구성 가능한 주소의 경우 +1 나는 같은 버스에서 같은 것을 여러 개 가질 노예에서 이것을 보았습니다.
Kellenjb

예, 구성 가능한 주소를 생각하고있었습니다. 메뉴 시스템에서 설정을 변경하여 업데이트 할 수 있습니다. 한 가지 중요한 것은 주소를 변경하는 누군가와 마스터 MCU가 슬레이브와의 통신을 잃지 않도록 보호 장치를 추가해야하므로 주소를 재설정하는 일종의 프로토콜을 설정해야합니다 (예 : 5 초 후 통신이 없으므로 주소 재설정) .)
Thomas O

16

디자인에 적극적으로 사용하지 않을 장치를 선택하고 I2C 주소를 사용하십시오. 예를 들어, RTC가 필요하지 않은 경우 NXP PCF8563 (및 다른 RTC)에서 사용하는 0xA2 및 0xA3을 사용할 수 있습니다.


나는 이것을 매우 영리합니다.
NickHalden 2016 년

불행히도 ST STCN75 와 같은 일부 장치는 여전히 충돌합니다. TI DAC8571 또는 Microchip 24AA025E48TI ADC121C027 과 합니다.
Xcodo

10

다음은 1999 년 현재 할당 된 주소 목록입니다. http://www.nxp.com/acrobat_download2/selectionguides/SELGUIDE.PDF

그들은이 추론으로 전체 목록을 공개하지 않습니다.

Q : 현재까지 사용 된 모든 I²C- 슬레이브 주소 목록을받을 수 있습니까?

A : 아니요. NXP Semiconductors는 이전에 할당 된 모든 슬레이브 주소 목록을 발행하지 않습니다. 이는 목록이 최신 상태를 유지하고 할당 된 각 주소가 고유하다는 것을 보장 할 수있는 유일한 방법입니다. 이 목록을 사용할 수있게되면 I²C 버스 라이센스 사용자는 슬레이브 주소 자체를 선택하기 시작하고 곧 중앙 목록이 불완전 해져 주소 충돌이 발생할 수 있습니다. 잘 작동하는 것으로 입증 된 원칙은 각 라이센스 사용자가 NXP Semiconductors 내의 단일 연락처로 슬레이브 주소 요청을 보낸 다음 단일 마스터 목록을 기반으로 슬레이브 주소를 할당한다는 것입니다.

에서 http://www.nxp.com/products/interface_control/i2c/faq/

이제 모든 것이 프로젝트 내부에있을 경우 연결하려는 계획과 충돌하지 않는 한 원하는 주소 만 선택할 수있는 이유가 없습니다.


이상한 추론 : 목록이 없어서 목록을 최신 상태로 유지합니다 ... :-/
Federico Russo

간단한 추론 : ID를 할당하는 사람은 누구나 최신 목록을 갖기를 원합니다. 오래된 목록 사본이 떠 다니면 해당 목표를 손상시킬 수 있습니다.
supercat

1
@Federico 그들은 목록을 가지고 있으며 사람들이 목록을 최신 상태로 유지하기 위해 목록을 공개하도록 강요하지 않습니다. 목록이 게시 된 경우 사용하지 않는 주소를 선택하는 수많은 사람들이있을 것입니다. 그러면 누군가 해당 주소를 올바르게 예약하면 어떻게됩니까?
Kellenjb

FWIW : SELGUIDE.PDF는 인터넷 아카이브 링크에 있습니다
HiTechHiTouch

1

Kellenjb는 슬레이브 장치 주소의 전체 목록을 얻지 못한다고 말합니다.

그러나 사용할 수없는 예약 된 주소가 여러 개 있습니다 (예 : 0x00은 일반 통화 주소입니다).

리스트는 여기

7 비트 슬레이브가 I2C 표준을 준수하고 10 비트 주소를 무시하는 한 10 비트와 7 비트 주소를 혼합하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.