여러 개의 I²C 포트가 필요한 이유는 무엇입니까?


19

이론적으로 그리고 7 비트 주소 지정을 통해 I²C 프로토콜을 통해 최대 127 개의 장치를 마스터에 연결할 수 있습니다. 이것은 많은 수이므로 왜 저가형 마이크로 컨트롤러 (예 : 이 PIC24 )에 둘 이상의 I²C 포트가 있습니까? 왜 필요한가요?

답변:


23

센서 허브 배열

이 시나리오에는 두 개의 I²C 버스가 있습니다. 로컬 버스메인 버스 라고합시다 . 로컬 버스의 목적은 많은 센서를 마이크로 컨트롤러 (μC)에 연결하는 것입니다. μC의 목적은 센서를 폴링하고 센서에서 정보를 수집하며 특정 이벤트를 감지하는 것입니다. 이러한 역할을하는 μC를 센서 허브 라고 합니다. 센서 허브는 고차 기능을 담당하지 않습니다. 이를위한 강력한 메인 프로세서가 있습니다. 메인 버스는 센서 허브를 메인 프로세서에 연결합니다. 따라서 센서 허브 μC는 로컬 I²C 버스의 마스터이고 I²C 메인 버스의 슬레이브입니다.

SPI 및 I²C

원래 게시물에 링크 된 PIC는 SPI와 I²C간에 핀을 공유하지 않습니다. 그러나 하드웨어 SPI 및 I²C에 동일한 핀을 사용하는 다른 PIC도 있습니다. 둘 다 동일한 MSSP 주변 장치로 구현되기 때문입니다. PIC에 두 개의 개별 MSSP 주변 장치가있는 경우 하나는 하드웨어 SPI에 사용될 수 있고 다른 하나는 하드웨어 I²C에 사용할 수 있습니다.


21

둘 이상의 버스가 필요한 가장 일반적인 이유는 다른 속도로 실행되는 장치가 있기 때문입니다. 원래 I²C는 최대 100kHz에서 실행되었습니다. 나중에 속도는 최대 400kHz로, 나중에는 1MHz 이상으로 증가했습니다.

문제는 각 장치의 주소가 I²C 프로토콜에 내장되어 있기 때문에 같은 버스에서 속도가 다른 장치 (예 : 100 kHz 및 400 kHz)가있는 경우 항상 가장 일반적인 속도로 버스를 작동시켜야합니다. 동일한 버스 (이 경우 100kHz)의 모든 장치에.

버스를 더 높은 속도 (400kHz)로 작동 시키면 저속 장치가 제대로 작동하지 않으며 고속 장치의 주소를 자체 주소로 해석하여 400kHz 장치가 다음과 같이 실패 할 수 있습니다. 잘. 그러나 처음에 버스를 100kHz로 실행 한 다음 고속 칩을 처리 한 후 버스 속도를 400kHz로 올리려고하더라도 저속 칩이 다음 중 하나를 해석하는 것은 가능할 것입니다. 고속 데이터 패킷의 주소가 잘못되어 버스의 통신을 망칠 수 있습니다. 두 경우 모두 400kHz 장치와의 교환이 끝나면 100kHz 장치는 알 수없는 상태 일 것입니다.

당신이 다른 속도로 실행하는 장치가있는 경우는, 가장 효율적인 그래서 여러 I²C 포트가 그리고 당신은 400 개 kHz의 장치에 대한 100 개 kHz의 장치, 또 다른 하나 개의 I²C의 말을 가지고, 같은 고급 수 있도록 여분의 핀을 가지고 있고, 또 다른 필요에 따라 1MHz 장치의 경우

각 장치는 별도의 칩 선택 라인을 통해 하드웨어에서 활성화 (주소 지정)되므로 SPI에는 문제가되지 않습니다. 따라서 클럭 속도는 활성화되지 않았기 때문에 동일한 버스의 다른 칩에 영향을주지 않고 선택한 칩의 속도 (10MHz, 20MHz 등)와 일치시킬 수 있습니다.


19

또한 주소가 동일한 두 장치를 지원할 수 있습니다. 그렇습니다. 대부분의 장치에서는 끈으로 주소의 맨 아래 두 비트를 선택할 수 있습니다. 최근에는 저항으로 주소의 LSB 만 설정할 수있는 4 개의 장치를 지원해야했습니다. 두 개의 포트가 있으면 추가 비용이 들지 않습니다.

어쩌면 하나는 여러 장치의 마스터가되고 다른 하나는 슬레이브 포트로 표시하기를 원할 것이므로 마스터는 버스를 잡아서 명령을 내릴 때까지 기다릴 필요가 없습니다. 시각.

이 스레드에는 다른 2 센트를 추가하는 다른 좋은 반응이있는 것처럼 보입니다.


9

속도.

두 개의 I2C 장치에 동시에 액세스해야하는 경우 상당한 충돌이 발생할 수 있습니다. 또는 하나는 다른 하나를 기다려야 할 것입니다.


9

둘째, I²C를 사용하여 더 많은 대역폭을 확보 할 수 있습니다 (동시에 2 바이트를 수신 또는 전송할 수 있음).

지속적으로 작동하는 일부 ADC가있는 경우 하나의 I²C가 항상 사용 중입니다.

주소 전환에도 시간이 걸리므로 경우에 따라 두 장치에 두 개의 포트를 사용하고 주소 변경을 피하여 시간을 절약 할 수 있습니다.


0

다른 사람들은 이것을하기 위해 많은 이유를 언급했으며, 나는 하나를 추가 할 것입니다.

5V I2C 장치와 3V3 I2C 장치가 있습니다.

예를 들어, 2 개의 I2C 포트 (하나는 5V 허용, 다른 하나는 3V3 만)가있는 3.3V 마이크로를 사용합니다.


호기심에서, 그것은 어떤 마이크로입니까?
Nick Alexeev

1
LPC4330, 매뉴얼 발췌 : "오픈 드레인 5V 허용 디지털 I / O 패드, I2C- 버스 고속 모드 플러스 사양과 호환.이 패드는 출력 기능을 제공하기 위해 외부 풀업이 필요합니다. 전원이 꺼지면 I2C 버스에 연결된 핀이 플로팅되어 I2C 라인을 방해하지 않습니다. "
peufeu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.