본문 바로가기
WORK/HARDWARE

[Hardware] IO Port Expander (PCA9536)

by KANG Stroy 2019. 8. 6.
728x90
728x90

저가의 마이컴을 쓰다 보니 IO Port가 모자라는 현상이 생겼습니다. 그럼 그냥 한 단계 높은 칩으로 옮겨가면 되지 않겠어? 라고 하지만, 특수한 목적을 가지고 쓰다 보니 그렇게 쉽게 넘어갈 수가 없는 현상이 생겼습니다. 


사용 목적


목적은 모자라는 IO를 대체 한다는 겁니다. 인터페이스는 I2C를 이용합니다. 

간단한 LED 제어에 도움이 됩니다. 고속 동작은 사용하지 않았습니다. 


처음부터 IO 가 많은 칩을 사용했으면 좋으련만, 그렇게 할 수 없는 현실이 안타깝습니다. 그래서 생각한것이 IO 를 더 추가할 수 있는 포트 입니다. 


4포트를 이용할 수 있습니다. 순수하게 Input, Output으로 이용가능 합니다. 


많은 좋은 칩들이 있겠지만, 하드웨어 팀에서 선정한 TI 칩을 올려놓아 봅니다. 


저전류 입니다. 


아마도 이것때문에 하드웨어 팀에서 선정한거 같군요 




자료들


Datasheet 

pca9536_IO.pdf


I2C 주소는 : 0x41 입니다. 


Source ( https://github.com/nadavmatalon/PCA9536 )


PCA9536-master.zip


getMode();
Parameters:   IO0 / IO1 / IO2 / IO3
Description:  Gets the selected pin's current mode (1 = INPUT [default]/ 0 = OUTPUT) (For more info, see General Note #1 above).
Returns:        byte

getState();
Parameters:   IO0 / IO1 / IO2 / IO3
Description:  Gets the selected pin's current state (0 = LOW / 1 = HIGH [default]).
Returns:        byte

getPolarity();
Parameters:   IO0 / IO1 / IO2 / IO3
Description:  Gets the selected INPUT pin's current polarity (0 = NON-INVERTED [default] / 1 = INVERTED). Note that this is relevant only for INPUT pins. The polarity setting determinwes whether reading an INPUT pin returns its actual state or an inverted state.
Returns:        byte

setMode();
Parameters:   To set a single pin: IO0 / IO1 / IO2 / IO3, IO_INPUT [default] / IO_OUTPUT | To set all pins at once: IO_INPUT [default] / IO_OUTPUT
Description:  Sets the selected pin/s mode (INPUT / OUTPUT).
Returns:        None

setState();
Parameters:   To set a single OUTPUT pin: IO0 / IO1 / IO2 / IO3, IO_LOW / IO_HIGH [default] | To set all OUTPUT pins at once: IO_LOW / IO_HIGH [default] Description:  Sets the selected pin/s state (LOW / HIGH). Note that this is relevant only for OUTPUT pins.
Returns:        None

toggleState();
Parameters:   To toggle the state of a single OUTPUT pin: IO0 / IO1 / IO2 / IO3 | To toggle all OUTPUT pins at once: None Description:  Toggles the selected pin/s state (LOW / HIGH). Note that this is relevant only for OUTPUT pins.
Returns:        None

setPolarity();
Parameters:   To set a single INPUT pin: IO0 / IO1 / IO2 / IO3, IO_NON_INVERTED [default] / IO_INVERTED | To set all INPUT pins at once: IO_NON_INVERTED [default] / IO_INVERTED
Description:  Sets the selected pin/s polarity (NON-INVERTED / INVERTED). Note that this is relevant only for INPUT pins.
Returns:        None

reset();
Parameters:   None
Description:   Resets all 4 channels of the PCA9536 to their power-up default settings, as follows:




728x90

댓글