본문 바로가기

Develop Knowledge/STM32F4 by ChrisP

10강. SPI 통신 (VS1003 음성코덱)

본 단행본은 inflearn에 있는 ChrisP 강사님의 "HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌"를 정리한 글입니다.

 

강좌 바로 보기 >> https://www.inflearn.com/course/stm32f4/dashboard

 

[무료] HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌 - 인프런 | 강의

고성능 마이크로컨트롤러인 STM32F 시리즈를 처음 접하는 분들이 쉽게 시작할 수 있도록 무료 컴파일러 TrueSTUDIO 및 코드자동생성 프로그램 CubeMX 설치부터 칩 기능의 개념설명, 소스코드작성(HAL

www.inflearn.com

 

- SPI

내용은 강의에서 잘 설명해주므로, 여기서는 핵심만 보겠습니다.

 

슬레이브 입장에서는 가끔 SPI 라고 안하고, Serial Inferface, Serial Data Inferface라고 하는 경우도 있다.

 

- 회로도

없음

- CubeMX 설정

SPI2 -> Full-Duplex Master.

전이중 통신이다. 대부분 SPI는 이걸로 사용한다.

Hardware NSS Signal -> Disable.

이거는 Chip Select를 하드웨어 적으로 할건지 소프트웨어 적으로 할건지를 결정하는 항목이다.

하드웨어 적으로 할거면 'Hardware NSS Output Signal'을 선택한다. 이러면 정해진 핀에서만 Chip Select로 사용할 수 있다.

소프트웨어 적으로 할거면 'Disable'을 선택한다. 이러면 아무 핀에서나 Chip Select로 사용할 수 있다.

BP9 -> GPIO_OUTPUT

Chip Select를 위한 핀이다.

A4, A7 -> GPIO_OUTPUT,   C7 -> GPIO_INPUT

VS1003 코덱을 위한 핀이다.

 

SPI2 에서는...

Prescaler -> 8

Clock Polarity (CPOL) -> HIgh

Clock Phase (CPHA) -> 2 Edge

이것들은 통신하려는 슬레이브 장치의 데이터시트를 보고 맞추어 주어야 한다.

 

 

- 코드 생성

VS1003.c
0.01MB
VS1003.h
0.00MB
MP3Sample.h
0.72MB

  // SPI 통신 사용 방법
   /* Full-Duplex SPI 함수
   * 파라미터 : SPI 채널, Txdata 변수 주소, Rxdata 변수 주소, 데이터 길이, 타임아웃
   * HAL_SPI_TransmitReceive(&hspi2, &TxData, &RxData, 1, 10);
   */

  // VS1003 모듈 사용
  VS1003_Init();
  VS1003_SoftReset();
  
  int i=0;
  while (1)
  {
	  if(MP3_DREQ == 1)
	  {
		  if(sizeof(MP3_DATA) > i)
		  {
			  VS1003_WriteData(&MP3_DATA[i]);
			  i += 32;
		  }
		  else
		  {
			  //i=0;
		  }
	  }
  }

'Develop Knowledge > STM32F4 by ChrisP' 카테고리의 다른 글

12강. ETH, 13강. CAN 통신, 글의 끝  (0) 2023.02.05
11강. SDIO + FATFS 파일입출력  (0) 2023.02.05
9강. I2C 통신  (0) 2023.02.03
8강. DAC  (0) 2023.02.03
7강. ADC with DMA  (0) 2023.02.03