최대 I2C 버스 길이?


38

두 개의 I2C 장치 (I2C 마스터-> I2C 슬레이브)를 연결하는 데 사용할 수있는 최대 케이블 길이는 얼마입니까?

예, I2C는 보드 내 통신용으로 설계되었습니다. 데모를 지원하기 위해 여러 I2C 슬레이브에 공통 I2C 버스를 사용하는 "디자인 목표"를 맡았습니다.

명확성을 위해 100 kHz의 표준 I2C 버스 속도를 가정합니다.


1
최대 길이는 길이에 의해 도입 된 정전 용량으로 재생됩니다. 커패시턴스가 너무 커서 속도에 영향을 줄 수 있습니다. 따라서 항상 그렇습니다.
Gustavo Litovsky

@GustavoLitovsky 커패시턴스에 대해 정확합니다. 또한 사용되는 케이블 유형에 따라 다릅니다 (차폐 대 비 차폐). 나는 일반적인 지침에 가장 관심이 있습니다.
Nate

2
@Nate Guideline : 400pF의 최대 네트 버스 커패시턴스. (질문과 관련이 있음 : 자란 I2C 버스의 회고록 )
Nick Alexeev

1
I2C = 통합 회로 버스. 그것은 박스들 사이의 장거리를 위해 설계되지 않았으며, 확실히 400kHz가 아닙니다.
Spehro Pefhany

1
계산을 제외하고 개인적인 경험을 포기하고 싶었습니다. 나는 약 3 피트의 비 차폐 와이어를 사용하여 개발 보드에서 I2C-USB 변환기로 데모를 진행했습니다. 예쁘지 않았지만 90 %의 시간 동안 효과가있었습니다.
mcmiln

답변:


16

빠른 모드 및 저항 풀업의 경우이 NXP 문서 I2C- 버스 사양 및 사용 설명서 에 따라 커패시턴스가 200pF 미만이어야합니다 .

전류 소스 풀업을 사용하면 저항이 아닌 400pF로 이동할 수 있습니다.

와이어가 20pF / 30cm이고 다른 50pF의 스트레이 및 입력 커패시턴스가있는 경우 케이블 길이는 2.25m로 제한됩니다. 다른 가정은 다른 숫자로 이어질 것입니다.


1
@KrunalDesai 위에 링크 된 NXP 문서에 구체적으로 언급되어 있습니다. I2C 버스 사양 및 사용 설명서
Spehro Pefhany

1
실제 예를 들어, Nintendo Wii의 "Wiimote"는 400kHz I2C ( wiibrew.org/wiki/Wiimote/Extension_Controllers )를 사용 하여 Nunchuk ( wiibrew.org/wiki/Wiimote/Extension_Controllers/Nunchuck ) 와 같은 주변 장치와 통신 합니다. 보시다시피, 약 1m의 케이블이 있습니다. 패시브 익스텐더는 1m ( amazon.com/Extension-Cable-Wii-Nunchuck-Nintendo/dp/B0039OEV9K )를 추가로 판매하기 때문에 팔리고 있지만 그 한계는 2.25m 한도 내에 있습니다.
Rob Starling

16

10,25 및 100m와 같은 미친 소리 길이는 완벽하게 가능하며 물건을 빨리 정리해야 할 때 자주 방법을 사용합니다 (I2C가 아니라 UART 사용). 그러나 최선의 방법은 아닙니다.

핵심은 입력 전압 임계 값을 아는 것입니다. 접지 리드의 전압 강하가 이보다 훨씬 낮은 지 확인하십시오. 그렇지 않으면 접지 전위가 높은 트랜스미터가 전압을 충분히 낮출 수 없습니다. 접지 오프셋 허용 오차 부족 IMHO는 RS485를 사용하거나 트랜시버를 사용하는 가장 큰 이유입니다 (CAN을 통한 I2C는 몇 가지 애플리케이션 노트에 언급되어 있음).

이상적으로 모든 장치에는 자체 벽면 사마귀 및 배터리가 있으며 장치 사이의 접지선을 통해 전원이 공급되지 않습니다.

그러나 CAT5를 예로 들어 보겠습니다. CAT5는 52pf / m보다 높거나 CAT5가 아닙니다.

52pf 케이블 100m의 정전 용량은 5200pf 또는 5.2nf입니다.

5.2n 곱하기 20kohms (풀업)는 약 104 마이크로 초의 시간 상수를 제공합니다. 속도가 약 10kHz 정도로 제한됩니다.

2.2kohm 풀업을 사용하면 100kHz에 도달 할 수 있습니다.

나는 장치가 구동하는 큰 용량 성 부하로 인해 180 또는 200 옴과 같은 SDL 및 SCK에 저항이 있어야한다고 들었습니다.

그러나 솔직히 I2C는 먼 거리를 갈 수는 없습니다. 일반 UART와 함께 사용되는 CAN 트랜시버 또는 RS485는 1 달러 정도의 비용으로 매우 우수한 결함 보호, ESD 저항, 속도, 거리 등을 갖춘 강력한 솔루션입니다. 접지 오프셋은 거의 상관 없습니다 데이터와 함께 전력을 자유롭게 전달할 수 있습니다.

유일한 단점은 캔 트랜시버가 70ma 전송 및 1 또는 2ma 청취에 도달 할 수 있으므로 I2C 또는 직접 TTL UART는 극도의 저전력 상황에서 유용 할 수 있지만 실제로 전송하는 데 걸리는 시간을 고려하십시오.


7

USB 센서를 만드는 회사에서 일합니다. 대부분은 I2C 센서 칩을 기반으로하며, 이러한 장치는 2 개로 분할 될 수 있으므로 CPU 부분을 한 곳에 설치하고 센서 부분을 다른 곳에 설치할 수 있습니다. 우리는 장치 CPU와 I2C 센서 사이의 I2C 연결에 대해 많은 테스트를 수행했습니다. 100kHz에서는 우수한 오류 복구 프로토콜을 사용하여 기본 와이어를 사용하여 25m에 쉽게 도달 할 수 있습니다. CAT5 케이블로 100m에 도달 할 수도있었습니다.


USB 케이블 길이 에 대해 이야기하는 것 같습니다 . OP는 원시 I2C 케이블 연결을 요청하고 있습니다. 이것은 완전히 다른 주제입니다. 내가 틀렸다면 답을 편집하면 다운 보트를 제거합니다.
DoxyLover

1
25m는 ... 심지어 USB에 대해 꽤 많이입니다
블라디미르 Cravero에

3
아니요, 호스트와 CPU 간의 USB 연결이 아니라 장치 CPU와 I2C 센서 칩 간의 I2C 연결 에 대해 이야기하고 있습니다. 예를 들면 다음과 같습니다. yoctopuce.com/EN/products/yocto-meteo/doc/…
martinm

1
I2C 및 전력에 트위스트 페어를 사용하려면 어떤 페어를 함께 트위스트 하시겠습니까? (SDA, SCL), (VCC, GND) 또는 (SDA, GND), (SCL, VCC)?
Cano64

3
이상적으로는 트위스트 페어를 전혀 사용하지 않습니다. 트위스트 페어는 밸런스 신호에 유용합니다. 다른 케이블이없는 경우 신호를 접지로 비틀어주십시오. 실제로 네 개의 와이어 만있는 경우 GND에 하나의 와이어 만 사용하기 전에 원격 끝에서 소비하는 전력량을 고려하십시오. 허용 ​​가능한 것보다 높은 접지 오프셋으로 끝날 수 있습니다. 나는 보통 한 쌍의 접지, 한 쌍의 + 5V, SDA + GND 및 SCL + GND 쌍으로 오래된 Cat5 케이블을 사용합니다 (더 높지 않습니다! 이중 실드는 필요없는 용량을 추가합니다).
Matthias Urlichs 17 년

4

IIC는 동기식 프로토콜이므로 거리 및 노이즈와 관련한 시스템 요구 사항을 충족시키기 위해 임의로 느리게 실행할 수 있습니다.

케이블을 통해 IIC를 사용하는 예 는 1990 년대 ACCESS.bus 에서 오늘날 비디오 디스플레이에서 EDID 정보 를 검색하는 데 사용되는 방법에 이르기까지 다양 합니다.


또 다른 예는 Wii Nunchuck이며, 4 피트 차폐 케이블을 사용하여 I²C를 통해 Wii Remote에 연결됩니다.
tcrosley

4

NXP의 P82B96과 같은 것을 사용하여 버스의 전압 레벨을 변경하여 훨씬 더 먼 거리를 허용 할 수 있습니다.

데이터 시트는 3m, 25m, 100m와 250m의 I2C 케이블 길이에 대한 예제가 포함되어 있습니다.

비슷한 기능을 가진 다른 칩이 있습니다.


NXP 칩의 문제점은 두 배의 와이어가 필요하다는 것입니다. 다른 아이디어가 있습니까? 내가 찾은 양방향 IC는 + 5V를 넘지 않습니다.
Matthias Urlichs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.