I2C 및 SPI를 사용한 통신
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
13.0 소개
I2C(집적 회로) 및 SPI(직렬 주변 장치 인터페이스) 표준은 센서와 Arduino와 같은 마이크로 컨트롤러 간에 디지털 정보를 간단하게 전송할 수 있는 방법을 제공하기 위해 만들어졌습니다. I2C 및 SPI용 Arduino 라이브러리를 사용하면 이 두 프로토콜을 모두 쉽게 사용할 수 있습니다.
일반적으로 연결하려는 장치(예: 센서, 액추에이터, 기타 보드)에 따라 I2C와 SPI 중 어떤 것을 선택할지 결정합니다. 일부 장치는 두 가지 표준을 모두 제공하지만 일반적으로 장치 또는 칩은 둘 중 하나만 지원합니다.
SPI는 4개의 신호 연결이 필요한 반면, I2C는 2개의 신호 연결(클록과 데이터)만 있으면 Arduino에 연결할 수 있다는 장점이 있습니다. 또한 I2C를 사용하면 신호가 올바르게 수신되었다는 확인을 받을 수 있습니다. 단점은 데이터 전송 속도가 SPI보다 느리고 한 번에 한 방향으로만 데이터를 전송할 수 있어 양방향 통신이 필요한 경우 데이터 전송 속도가 더 낮아진다는 것입니다. 또한 신호의 안정적인 전송을 보장하기 위해 풀업 저항을 연결에 연결해야 합니다(풀업에 대한 자세한 내용은 5장 소개 참조). I2C 풀업 저항의 정확한 값은 사용 중인 전선의 길이와 유형 등 여러 요인에 따라 달라집니다. 일반적으로 4.7K가 가장 적합할 것입니다.
브레이크아웃 보드 또는 실드에 있는 I2C 디바이스에 연결하는 경우 제조업체에서 풀업을 포함했을 가능성이 있습니다. 확실하지 않으므로 규격서를 확인해야 합니다. 예를 들어, 그림 13-1은 풀업이 선명하게 보이는 Adafruit의 I2C HT16K33 16 x 8 LED 구동기 백팩 브레이크아웃 기판(부품 번호 1427)의 세부 사항을 보여줍니다. Adafruit는 이러한 값이 실제로 잘 작동한다는 사실을 발견했기 때문에 모든 기판에 10K 풀업이 포함되어 있습니다. 이제 이러한 브레이크아웃 기판 두 개를 연결하면 두 개의 10K 저항기를 병렬로 연결할 수 있습니다. 병렬 저항 공식( (10K*10K) / (10K+10K))을 적용하면 4.7K 값에 가까운 5K를 얻을 수 있습니다. 10K 저항으로 세 개의 장치를 연결하면 1/(1/10K + 1/10K + 1/10K) = 3.3K 이 나오며, 이는 여전히 I2C 풀업에 대해 일반적으로 허용되는 범위 내에 있습니다. I2C 풀업 저항 값에 대한 훌륭한 설명은 Nick Gammon의 글을 참조하세요.
I2C 풀업 저항을 보여주는 회로도 상세도
SPI의 장점은 더 빠른 데이터 속도로 실행되며 입력과 출력 연결이 분리되어 있어 동시에 송수신이 가능하다는 점입니다. 활성 장치를 ...