각종 CHIP

PCF8574 IC 알아보기

원원 2022. 9. 24. 11:57

안녕하세요. 오늘은 PCF8574에 대해 알아보겠습니다.

PCF8574란 I2C 통신을 통해서 입력 or 출력 8개를 사용할 수 있는 IC입니다. I/O가 부족할 때 사용하면 됩니다.

대표적인 사용예로는 아래의 그림과 같은 CLCD를 제어하려면 7핀(4비트모드) or 11(8비트모드)핀이 필요합니다. 4비트모드를 사용한다면 PCF8574 1개를 사용해서 I2C통신을 통해 CLCD를 제어할 수 있습니다.

 

 

*회로구성

제가 사용한 모델은 PCF8574P로써 DIP16타입입니다.

핀배치입니다.
A0~A2 : IC의 address설정
P0~P7 : I/O
SDA,SCL : I2C
VDD,VSS : 전원
INT : 인터럽트핀(통신할때 인터럽트가 발생한다는데 이 글이서는 인터럽트는 테스트하지 않습니다)

테스트를위해 보드를 만들었습니다. I2C통신을 하면서 P0~P7에 파형이 어떻게 측정되나 애날라이저로 보겠습니다. 참고로 I2C통신은 ATMEGA128을 사용합니다.

 

*ADDRESS설정

A0~A2핀에 LOW or HIGH를 입력하면 address가 설정됩니다. 저는 A0~A2를 모두 LOW로 설정했습니다

 

 

*SDA, SCL 라인설정

ATMEGA128에서 software 풀업저항을 사용해서 따로 저항은 연결 안했습니다. 그리고 통신속도는 100kHz입니다.

 

 

*OUTPUT

위의 프로토콜대로 I2C통신을 하면 됩니다.데이터ACK신호때 출력상태가 변합니다.

0x01 출력을 한 모습입니다. 초기에 HIGH상태에서 I2C 통신때 P0은 HIGH로, 나머지는 LOW로 변한 모습입니다.

0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80을 순서대로 보낸 파형입니다. 순서대로 P0~P7핀이 HIGH로 변했습니다.

 

 

*INPUT

위의 프로토콜대로 I2C통신을 하면 됩니다. DATA는 P0~P7의 상태입니다.

초기 입력했을때 파형입니다. 이제 P0핀에 LOW / P7핀에 LOW를 넣어서 READ해보겠습니다.

P0,P7에 LOW를 넣었으므로 0x7E = 0b01111110정상적으로 읽었습니다.

 

*특이사항

P0~P7에 아무것도 연결을 안 하고 WRITE로 0x08를 하고 READ를 하면 0x08가 나옵니다. 여기에서 P0핀에 HIGH를 넣고 READ를 하면 0x09가 나옵니다. 여기에서 P0핀에있는 HIGH를 제거하고 READ를하면 0x08이 나옵니다.
결론적으로 WRITE를 한 핀의 상태 =>  하드웨어적 핀의상태 => READ 하면 나오는 값입니다.