myGyro300SPI의 SPI는 4개의 신호선으로 구성된다.
- SCLK(SCK/CLK) : 클럭 신호선
- CS(FSS/SS) : chip select, frame start sequence, slave start
- DIN(MOSI) : data input, master output/slave input
- DOUT(MISO) : data output, master input/slave output
ADIS16100 데이터쉬트의 페이지 5에 있는 그림2를 보면 4개의 신호선에 대해 timing chart를 볼 수 있다.
ADIS16100 데이터쉬트에서 캡쳐한 SPI bus timing chart
SCLK는 master 즉 MCU에서 만들어 myGyro300SPI에 넣어주는 클럭 신호이다. 10kHz~20MHz 사이의 클럭을 사용하면 된다. 주로 MCU의 SPI peripheral이 자동으로 만들어 주므로 별도로 신경쓸 필요는 없다. 다만 SPI 모드를 결정함에 있어 timing chart를 주의깊게 들여다 볼 필요는 있다.
CS는 chip select 신호이며, 역시 MCU에서 생성해서 myGyro300SPI에 넣어주는 신호이다. 이 신호가 low일
때에만 myGyro300SPI가 동작한다. 보통 여러개의 SPI 장치들을 하나의 SPI 버스에 물려 같이 사용할 때 각 장치를
구분하기 위해 사용한다. SPI 버스에 myGyro300SPI 하나만 물려 있는 경우에도 꼭 상황에 맞게 CS 신호를 인가해야
한다. CS는 chip select 뿐만 아니라 SPI frame start sequence 역할도 하기 때문이다. 일반적으로
MCU의 SPI peirpheral에서 CS 신호를 자동으로 생성해 주므로 별도로 신경쓸 필요는 없다. 하지만 AVR에서는 자동
생성 되지 않으므로 별도로 만들어줘야 한다.
DIN. Data input 데이터
입력선이다. 여기에서 말하는 입력이라는 것은 myGyro300SPI를 기준으로 봤을때 입력이라는 뜻이다. 즉 MCU에서
출력하고, myGyro300SPI에서 입력하는 데이터를 말한다. SPI 규약에서 말하는 master output/slave
input 즉 MOSI에 해당하는 핀이다. 반대로 DOUT은 Data Output이다. 역시 myGyro300SPI 기준으로
output 이므로 MISO에 해당한다.
참고로 SPI에는 반듯이 1개의 master가 있어야 하고, slave는 여러개 있어도 무관하다. 일반적으로 MCU가 master 역할을 하고, myGyro300SPI와 같은 장치들이 slave가 된다.
이상 4개 신호선은 Vdrive 전원을
사용한다. myGyro300SPI는 5V 전원에서 동작하므로 3.3V와 같은 저전압 프로세서와 연결해서 사용하기 위해서는
Vdrive에 해당 전원을 연결해 사용할 수 있다. 대표적인 예로 myCortex 시리즈는 3.3V 전원을 사용하므로
Vdrive에 3.3V를 연결해서 사용해야만 한다. <VDD5V와 Vdrive의 차이 포스팅 참조>
flat cable은 적합하지 않다
SPI 연결[wikipedia에서 발췌]
이제 다시 ADIS16100의 SPI timing chart를 살펴보자. CS 핀이 high인 상태를 idle 상태라 한다. 이 상태에서는 아무런 동작도 하지 않는다. 모든 센서 동작과 SPI 통신은 CS핀이 low일때에만 이루어진다. 이처럼 CS가 low인 구간 1개를 frame이라 부른다. myGyro300SPI는 한 프레임에 16비트의 데이터를 주고받는다. 이런 경우를 16비트 프레임이라 이야기 한다.