2023. 4. 16. 16:18ㆍARM
SPI(Serial Peripheral Interface)는 주변기기와 MCU간에 통신하는 프로토콜 중 하나로, 동기형 직렬통신이다. I2C와 비슷하게 마스터와 슬레이브로 작동하며, 전이중 통신 방식이므로 I2C와 달리 데이터 송수신을 동시에 할 수 있다. 또 데이터를 주고받을 때 시프트 레지스터를 사용하기 때문에, Slave(센서들)의 회로가 간단해지는 장점이 있다.

SPI는 동기 통신이므로, 클럭에 맞춰서 데이터를 추고받는다. 이때 한쪽이 SCK(동기형 클록)이라는 신호를 생성하는데, 이 동기형 클록을 생성하는 쪽을 컨트롤러(Controller)또는 마스터(Master)라 하고, 받는 쪽을 주변장치(Peripheral) 또는 슬레이브(Slave)라고 한다.
마스터가 슬레이브에게 데이터를 보낼 때, MOSI(Master out Slave in)핀을 통해 데이터를 보내고, 데이터를 받은 슬레이브는 마스터의 Clock신호에 따라 MISO핀을 통해 신호를 보내게 된다. 이렇게 데이터를 주고받는 핀이 따로 있기 때문에, 데이터핀이 하나인 I2C와는 다르게 전이중 통신을 할 수 있다.

UART같은 비동기식 신호는 한번에 들어오는 데이터가 일정하지 않을 수 있지만, SPI는 보통 센서들과의 통신에 사용하기 때문에 정형화된 데이터를 주고받는 경우가 대부분이다. 예를 들어, SPI 온도 센서에 Read 신호를 보내면 센서는 항상 같은 신호를 보내줄 것이다.
CS은 Chip Select 신호이다. CS신호는 어떤 칩에 데이터를 보낼지, 그리고 슬레이브에 데이터를 송수신할 때 1로 떨어뜨리는 신호이다. (Active Low)

각각의 슬레이브 기기에 CS칩을 따로 연결해 데이터를 송수신할 기기의 CS를 LOW로 만들어주면, 해당 기기만 통신할 수 있게 된다.

반대로 공통된 CS신호를 사용하면, 한번에 여러 기기와 송수신할 수 있다. Shift Register
'ARM' 카테고리의 다른 글
ARM-3 Timer (0) | 2023.04.10 |
---|---|
ARM-1 (0) | 2023.04.04 |