본문 바로가기

Develop Knowledge/STM32F4 by ChrisP

11강. SDIO + FATFS 파일입출력

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

 

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

 

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

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

www.inflearn.com

 

자세한 설명은 강의에서 볼 수 있습니다. 여기서는 간단히만 짚고 넘아가겠습니다.

 

- 회로도

없음

- CubeMX 설정

SDIO -> SD 4 bits Wide bus

SDIO 에서는...

DMA Settings -> Add -> SDIO_RX, SDIO_TX

NVIC Settings -> SDIO global interrupt 활성화

 

MiddleWare -> FATFS -> SD Card

FATFS 에서는...

Set Defines -> USE_LFN -> Enabled with static working buffer on the BSS

Advanced Settings -> Use DMA Template -> Enabled (DMA 사용시만 활성화)
Platform Settings -> Detect_SDIO -> PC7

 

 

- 소스코드

CLCD.c
0.01MB
CLCD.h
0.00MB

	CLCD_GPIO_Init();
	CLCD_Init();
	CLCD_Clear();

	uint8_t str[20];
	BYTE buf[32] = "Hello world";	// file copy buffer
	uint32_t bw, br;
	/************* 1. FS관련 초기화("0:/"드라이브 할당) ***********/
	if((retSD = f_mount(&SDFatFS, &SDPath[0], 1)) == FR_OK)
	{
		sprintf(str, "f_mount OK %d", retSD); //ff.h에 정의되어있음.
		CLCD_Puts(0, 0, str);
	}
	else
	{
		sprintf(str, "f_mount failed %d", retSD); //ff.h에 정의되어있음.
		CLCD_Puts(0, 0, str);
	}
	/*****************************************************/

//	/************** 2. 파일 생성 및 쓰기 **********************/
//	if((retSD = f_open(&SDFile, "0:/M-HIVE.txt", FA_CREATE_NEW | FA_WRITE)) == FR_OK)
//	{
//		sprintf(buf, "Hello world");
//		f_write(&SDFile, buf, sizeof(buf), &bw);
//
//		sprintf(str, "%d bytes", bw);
//		CLCD_Puts(0, 0, str);
//
//		f_close(&SDFile);
//	}
//	else
//	{
//		sprintf(str, "error %d\n", retSD);
//		CLCD_Puts(0, 0, str);
//	}
//	/**************************************************/

	/****************** 3. 파일 열고 읽기 *******************/
	if((retSD = f_open(&SDFile, "0:/ChrisP.txt", FA_OPEN_EXISTING | FA_READ)) == FR_OK)
	{
		CLCD_Clear();

		f_read(&SDFile, buf, 32, &br);
		sprintf(str, "%s", buf);
		CLCD_Puts(0, 0, str);

		sprintf(str, "%d bytes", br);
		CLCD_Puts(0, 1, str);
	}
	else
	{
		sprintf(str, "open error %d\n", retSD);
		CLCD_Puts(0, 0, str);
	}
	/*************************************************/

 

 

 

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

12강. ETH, 13강. CAN 통신, 글의 끝  (0) 2023.02.05
10강. SPI 통신 (VS1003 음성코덱)  (0) 2023.02.04
9강. I2C 통신  (0) 2023.02.03
8강. DAC  (0) 2023.02.03
7강. ADC with DMA  (0) 2023.02.03