일부 경우 마이크로 컨트롤러가 핀보다 훨씬 많은 센서, 버튼 또는 LED가 훨씬 더 많은 것입니다. PCF8574는 4 개의 저속 입력 또는 출력 핀을 마이크로 컨트롤러에 추가하는 간단한 방법입니다. 구성 가능한 주소를 사용하면 몇 개의 PCF8574가 동일한 버스에 존재할 수 있으므로 두 마이크로 컨트롤러 핀이 많은 IO 핀을 관리 할 수 있습니다. 아래 에서이 칩을 활용하는 방법을 정확하게 보여 드리겠습니다.
TI PCF8574 I2C 8 비트 IO 확장기 (Mouser # 595-PCF8574N, $ 1.86)
CADSoft Eagle Library 다운로드 페이지에서 i2c.lbr 및 Micro-Phillips.lbr뿐만 아니라 i2c.lbr 의이 칩을위한 PCB 발자국을 발견했습니다. PCF8574는 2 개의 케이블 I2C 프로토콜로 관리되므로 버스 해적 범용 직렬 인터페이스를 활용 하여이 칩을 보여줍니다. 동일한 기본 작업은 모든 유형의 마이크로 컨트롤러에 적용됩니다.
개략도는 PCF8574에 대한 쉬운 테스트 회로를 보여줍니다. 여기서 데이터 시트 (PDF)가 있습니다. 우리는 5 volts로 칩을 5Volts로 전원 공급뿐만 아니라 전력뿐만 아니라지면 핀 사이에서 0.1UF 디커플링 커패시터 (C1)를 활용했습니다. R1뿐만 아니라 R2는 I2C 클럭뿐만 아니라 데이터 버스를 5Volts에서 유지합니다. 칩의 출력 기능을 테스트하도록 LED를 활용할 것입니다. P0은 LED1에 현재 제한 저항 R3 (330+ 옴)로 연결되어 있습니다. P6뿐만 아니라 P7은 이해할 수 있도록 연결되어 있으므로 칩의 입력 기능을 신속하게 테스트 할 수 있습니다.
PCF8574의 I2C 주소는 0100xxxy이며, 주소 핀 A2-0의 지정에 의해 식별되는 3 비트 (X)는 물론 체크 아웃 (1) 또는 작성 (0) 모드를 설정하는 최종 비트 (Y)를 제공합니다. 수많은 PFC8574S는 다른 주소 PIN 설정을 사용하여 I2C 버스를 공유 할 수 있습니다. 우리가 주소 핀을 접지로 연결했기 때문에 작성 주소는 01000000 (0x40)입니다.
산출
P0의 LED는 1 (ON) 또는 0 (OFF)을 작성하는 바이트의 비트 0을 작성하여 작성 주소로 컴포트합니다.
I2C> {0x40 0B00000001} <-mommand. 210 I2C 시작 조건 220 I2C 쓰기 : 0x40 GOT ACK : 예 <- 쓰기 주소 220 I2C 쓰기 : 0x01 GOT ACK : 예 <-OUTPUT 값 240 I2C 정지 조건 I2C>
{i2c 시작 조건이있는 I2C 시작, 0x40. 출력 값, 0b00000001, P0이 높게 설정뿐만 아니라 체류 비트가 낮습니다. } I2C 버스 정류장 조건을 보내 트랜잭션을 종료합니다. 해당 비트가 높게 설정되면 LED가 켜집니다.
LED를 끄려면 해당 출력 비트가 0으로 설정된 시퀀스를 반복하십시오.
I2C> {0x40 0B00000000} <- 명령 210 I2C 시작 조건 220 I2C 쓰기 : 0x40 GOT ACK : 예 <- 쓰기 주소 220 I2C 쓰기 : 0x00 GOT ACK : 예 <-OUTPUT 값 240 I2C 정지 조건 I2C>
P0이 Ground로 설정하면 LED가 꺼집니다.
입력
출력 하이로 설정된 핀은 마찬가지로 입력 (데이터 시트 페이지 1)으로 활용할 수 있습니다. 이 예에서 P6는 높이 (+5V)뿐만 아니라 P7이 낮은 (접지)로 유지되지만, 이들은 단추, 센서 또는 기타 디지털 로직 일 수 있습니다. 다른 핀은 유효한 데이터를 나타내지 않고 떠 다니는 것이뿐만 아니라 부동을 둡니다.
I2C> {0x40 0B11000000} <- 명령 210 I2C 시작 조건 220 I2C 쓰기 : 0x40 GOT ACK : 예 <- 쓰기 주소 220 I2C 쓰기 : 0xC0 GOT ACK : 예 <-OUTPUT 값 240 I2C 정지 조건 I2C>
첫째, 출력 값의 해당 비트로 1을 구성하여 선호 입력 핀을 높은 입력 핀을 설정합니다. 비트 6은뿐만 아니라 7 세트 P6뿐만 아니라 P7을 높이냅니다.
자, 우리는 핀을 체크 아웃 할 수 있습니다. 우리는 핀 값이 즉시 명확한 지 확인하기 위해 버스 해적의 출력을 바이너리 모드로 설정 하여이 작업을 수행했습니다.
I2C> {0x41 R} <- 명령 210 I2C 시작 조건 220 I2C 쓰기 : 0B01000001 ACK : 예 <-Address 230 I2C 읽기 : 0B01000000 <-pin State 240 I2C 정지 조건 I2C>
{i2c 시작 조건, 0x41은 체크 아웃 된 주소이며, r은 장치에서 1 바이트를 읽습니다. } I2C 버스 정류장 조건을 보내 트랜잭션을 종료합니다.
답장, 01000000은 입력 핀의 지정을 나타냅니다. 가장 상당한 비트는 P7이 접지에 연결되어 있기 때문에 0입니다. 다음 비트는 P6이 높게 유지되므로 다른 비트 (0)는 가비지 데이터입니다.
이것은 유일한 IO 확장기 IC에서 멀리 떨어져 있습니다. 하나의 칩을 더 많이 활용 했습니까?
놓친 모든 부품 메시지를 따라 잡는 것을 기억하지 마십시오.