Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Shared Folder
- context switch
- ubuntu
- HDR
- context
- memcmp
- usb2.0
- fscanf
- 문자형 디바이스 파일
- sprintf
- layouts
- fprintf
- interrupt handler
- pagefile.sys
- 환경 변수
- gparted
- DMA
- 디스크 축소
- 멀티프로세싱
- 디스크립터
- 젠킨스
- 프레임버퍼
- 속도저하
- makefile
- intents
- sscanf
- interrupt context
- 소캣
- jenkins
- activities
Archives
- Today
- Total
do{학습}while
SPI(Sierial Perpheral Interface) 본문
SPI는 마이컴과 주변 장치(센서, 디스플레이, 메모리 장치) 간에 데이터를 교환하기 위한 고속 동기식 직렬 통신 프로토콜입니다.
SPI의 주요 특징
고속
- SPI는 MHz부터 수십 MHz까지 클럭 속도에 데이터 송수신이 가능합니다.
- Full-Duplex 방식으로 동시에 데이터 송수신이 가능합니다.
동기식
- 클럭 신호에 따라 데이터 전송 및 명령 수행되는 통신 방식을 의미합니다.
직렬
- 클럭 신호 한 주기(1 tick)에 1비트를 전송할 수 있습니다.
- 반대 개념 : 병렬 = 한 주기에 여러 비트의 데이터를 전송할 수 있습니다.
마스터-슬레이브
- SPI는 하나의 마스터, 여러개의 슬레이브 간에 통신합니다.
- 마스터 : 통신 타이밍을 맞추기 위한 클럭을 생성합니다.
- 슬레이브 : 타이밍에 따라 데이터를 송수신 합니다.
SPI 신호 라인

SCLK(Serial Clock)
- 마스터가 생성하는 클럭 신호로 슬레이브와 통신 속도를 동기화합니다.
MOSI(Master Out Slave In)
- 마스터가 슬레이브에게 데이터를 전송하는 데이터 라인입니다.
MISO(Master In Slave Out)
- 슬레이브가 마스터에게 데이터를 전송하는 데이터 라인입니다.
CS(Chip Select) 또는 SS(Slave Select)
- 특정 슬레이브 장치를 활성화하는 신호
- 일반적으로 슬레이브를 선택할땐 Active Low 상태에서 선택 됩니다.
데이터 전송 방식

COPI = Controller Out Peripheral In
CIPO = Controller In Peripheral Out
SCK 핀에서 클럭을 생성한다고 언급했다. 생성된 클럭에서 위에 이미지에서는 rising edge 타이밍에 맞춰 데이터를 전송합니다.
SPI는 직렬 통신 프로토콜이기 때문에 rising edge에서 1bit만 전송하는 것을 확인할 수 있습니다.
1(Master) : N(Slave) 연결

위에 그림에서 볼 수 있듯이 SPI통신은 하나의 Master에서 여러개의 Slave를 연결할 수 있습니다. 하지만! 연결하고 싶은 슬레이브 갯수만큼 SS핀이 존재해야합니다.