STM32 - SPI

EEC·2025년 2월 25일

STM32

목록 보기
6/9

오늘은 SPI 통신에 대해서 학습해보자.

마찬가지로 내가 사용하는 MCU에서는 SPI 통신을 지원한다.

우선 SPI가 무엇인지부터 알아보자.

SPI

SPI는 Serial Peripherals Interface의 약자이다.
MCU가 주변 장치와 데이터를 교환하기 위한 프로토콜을 의미한다.
이름에서도 알 수 있듯이 직렬 통신이며, 동기식 통신 인터페이스이다.(USART와 동일)

그렇다면 USART와 어떤 차이점이 있을까?

바로 Master-Slave 구조라는 것이다.

위 사진과 같은 구조를 마스터-슬레이브 구조라고 한다.

하나의 마스터 장치에 하나 이상(여러) 슬레이브 장치들이 연결되어 데이터를 통신한다.
마스터 장치는 통신을 제어하는 역할을 하고,
슬레이브 장치들은 이 제어 신호에 맞춰 데이터를 송, 수신한다.

따라서, 최소 4가닥의 BUS가 필요하다.

MOSI : Master Output Slave input, 마스터가 슬레이브로 데이터를 전송하기 위한 경로
MISO : Master input Slave Output, 슬레이브가 마스터로 데이터를 전송하기 위한 경로
SCLK : Serial Clock, 클럭 공급 경로(마스터로부터 슬레이브에게 공급)
SS : Slave Select, 어떤 슬레이브 장치와 통신할 건지 선택하기 위한 정보의 경로(NSS라고도 한다.)
(NSS가 Low일 경우에 클럭이 공급되며, High가 되면 MOSI, MISO가 High-z 상태가 된다.)

이 외에도 풀 이중 통신, 고속 데이터 전송 등의 특징이 있다.

  • 풀 이중 통신 : 모든 슬레이브 장치와 한번에 통신할 수 있다는 의미

간단한 구조임에도 높은 전송 속도로 많이 사용되는 인터페이스라고 한다.

SPI Parameters / registers

STM32CubeMX를 설정하면서 각 Parameter들과 register에 대해서 알아보자.

위에서 설명했듯이 SPI는 풀 이중 통신(Full-Duplex)을 지원한다.
그 외에 Half-Duplex, Receive only, transmit only 같은 여러 모드 또한 지원하는데, 각각 차이에 대해 알아보자.

Full-Duplex Master : 해당 포트를 Full-Duplex하는 Master 장치로 선언
Full-Duplex Slave : 해당 포트를 Full-Duplex하는 Slave 장치로 선언
Half-Duplex Master : 해당 포트를 Half-Duplex하는 Master 장치로 선언
Half-Duplex Slave : 해당 포트를 Half-Duplex하는 Slave 장치로 선언
Receive Only Master : 수신만 하는 Master 장치로 선언
Receive Only Slave : 수신만 하는 Slave 장치로 선언
Transmit Only Master : 송신만 하는 Master 장치로 선언
Transmit Only Slave : 송신만 하는 Slave 장치로 선언

* Full-Duplex와 Half-Duplex의 차이
두 통신 방식 모두 양방향 통신인 것은 동일하나, 마스터 장치가 모든 슬레이브 장치와 동시에 통신하냐(Full) 안하냐(Half)의 차이이다.

[Data 통신 관련 Parameter]
Motorola에서 개발한 통신 규격이기 때문에,
Frame Format은 Motorola로 고정이다.
Data Size는 8bits/16bits 선택이 가능하다.
First Bit는 MSB/LSB가 있는데,
가장 앞자리부터 데이터를 채우냐(MSB) / 뒷자리부터 데이터를 채우냐(LSB)의 차이다.


[Clock 설정 관련 Parameter]
아래 두 Parameter는 데이터 bus(MOSI, MISO)가 클럭과 동기화 하는 방법을 설정하는 요소이다.
CPOL : 클럭 신호의 기본값을 0(Low), 1(High)인 지를 결정
CPHA : 데이터를 클럭의 0(rising), 1(falling) edge에 읽을지를 결정

SPI통신을 하는 IC가 모든 Mode를 지원하면 사용하는데 어떤 모드로 해도 상관없지만 특정 Mode만 지원하는 IC도 있으니, 이를 확인해서 설정해야 하는 Parameter들이다.


[기타 Parmeter]
CRC : Cyclic Redundancy Check의 약어로, 데이터 통신 시 오류 감지를 위한 방식
NSS Signal Type : Hardware와 Software로 둘 다 제어 가능하다.


실습

현재 해당 통신을 수행할 수 있는 장치가 없다.
추후 기회가 되면 실습해보자.

profile
느리지만 확실하게

0개의 댓글