[STM32] 2024-01-09-STM32 7일차 _SPI
개념정리
SPI *Serial Peripheral Interface 직렬 주변기기 인터페이스 버스
주로 연산 능력이 없는 장치와 통신할떄 사용
동기식 직렬통신에 가장 기본적인 형태
SPI 통신은 기본 4개의 선을 통신
통신속도가 더빠르고 규격이 간단하다

4개의 선
- SCLK - 클럭 전송라인
- MOSI - master out slave in (슬레이브 경우 = SDI, DI)
- MOSO - master in slave out (슬레이브 경우 = SDO, DO)
- CS - Chip Select (Active Low)
데이터 시트를 보면 SPI 대신 시리얼 인터페이스 또는 데이터 인터페이스 라고 표현하기도함
I2C와 비교
I2C는 장치의 주소를 먼저 보내고 응답을 받는 방식 SPI 는 해당 절차없이 CS 핀만 Low 떨어뜨린다
전이중 통신이 가능하다 => 송수신이 동시에 할 수 있다.

IDLE 상태 통신을 안하고 있는 상태
클럭의 위성 . 클럭의 데이터 읽을떄 어느시점에서 읽을지
CPOL = IDLE 상태 Clock Polarity 클럭 극성 CPHA- 몇번쨰 엣지에서 읽을지 선택 Clock Phase 클럭 위상

개발 환경 세팅

Mode - 통신 방식 Hardware NSS Signal - ChipSelect 방식 설정 Data size - 전송 방식 First Bit - 높은비트 먼저 보냈지 늦은 비트 보낼지 선택 Prscalrer - 보내는 속도
CPOL - SPI 슬레이브 설정 참고해서 설정 CPOA - SPI 슬레이브 설정 참고해서 설정
Hardware NSS 신호는 STM32에서 SPI 통신 시 ‘Slave Select(SS)’ 핀을 하드웨어적으로 제어하는 기능으로, 마스터가 자동으로 슬레이브 선택 신호(NSS)를 관리해주는 방식입니다. 즉, 소프트웨어로 GPIO를 직접 제어하지 않고 SPI 주변장치가 NSS 핀을 알아서 Low/High로 바꿔줍니다
세부설정
-> 강의 소스 코드 절대적으로 필요 해당 강의에서는 함수 추가해서 사용한다. 통신 제어도 사용한다
HAL_SPI_TransmitReceive(&hspi2,(uint8_t)&TxData,RxData,1,10); 이런식으로 사용
소스코드 (예시)
int i =0;
while(1)
{
if(MP3_DREQ ==1)
{
if(sizeof(MP3_DATA >i))
{
VS1003_WriteData(&MP3_DATA[i]);
i + = 32;
}
else
{
}
}
}
출처
- 참고 영상강의 자료 https://www.youtube.com/watch?v=_7Ll95FITn4&list=PLUaCOzp6U-RqMo-QEJQOkVOl1Us8BNgXk&index=4&ab_channel=ChrisWonyeobPark
댓글남기기