sdcard de configuración cubemx

Uno, sd introducción

Un poco, hay tiempo para recuperarse.

Dos, interfaz sdmmc

Un poco, hay tiempo para recuperarse.

Tres, configuración cubemx

3.1 Configuración del reloj

sdmmc está configurado a 48MHz.
Inserte la descripción de la imagen aquí

3.2 Configurar el modo sd

Elija un bus de 4 bits de ancho y el reloj se divide por 4, es decir, 48 M / 4 = 12 M. El reloj está relacionado con el dispositivo y no puede exceder el reloj máximo permitido por el dispositivo.
Inserte la descripción de la imagen aquí

Cuatro, escribe el programa de prueba

4.1 Definición de macro

#define block_size 512       //sd块大小512字节
#define number_of_block  5   //测试的块数量为5  
#define test_addr  0x00002000  //要写入sd卡的地址为0x00002000

4.2 Definir la matriz de prueba y los datos de información sd

	HAL_SD_CardInfoTypeDef SDCardInfo1;//sd卡信息数据
	uint16_t write_data[block_size*number_of_block/2] = {
    
    0};//待写入sd卡的数据
	uint16_t read_data[block_size*number_of_block/2] = {
    
    0};//从sd卡读出数据
	uint16_t i;//用于遍历数组的自增量
	
	//将待写入数组初始化为累加的量
	for( i = 0;i<(block_size*number_of_block/2);i++)
	{
    
    
		write_data[i]=i;
	}

4.3 Obtener información de la tarjeta SD

	HAL_SD_GetCardInfo(&hsd1,&SDCardInfo1);//获取sd卡信息
	printf(" SD card information! \r\n");
	printf(" CardBlockSize : %d \r\n",SDCardInfo1.BlockSize);
	printf(" RCA           : %d \r\n",SDCardInfo1.RelCardAdd);
	printf(" CardType      : %d \r\n",SDCardInfo1.CardType);

4.4 Prueba de lectura y escritura

	HAL_SD_WriteBlocks(&hsd1,(uint8_t *)write_data,test_addr,number_of_block,100);
	while(HAL_SD_GetCardState(&hsd1) != HAL_SD_CARD_TRANSFER){
    
    };
	HAL_SD_ReadBlocks(&hsd1,(uint8_t *)read_data,test_addr,number_of_block,100);
	while(HAL_SD_GetCardState(&hsd1) != HAL_SD_CARD_TRANSFER){
    
    };
	for(i = 0;i<(block_size*number_of_block/2);i++)
	{
    
    
		printf("read_data[%d]:%d\r\n",i,read_data[i]);
	}

4.5 Asuntos que necesitan atención

Configure la pila del archivo de inicio; de lo contrario, la pila se desbordará.
Inserte la descripción de la imagen aquí

Cinco, resultados de la prueba

5.1 Obtener información de la tarjeta SD

Inserte la descripción de la imagen aquí

5.2 Prueba de lectura y escritura

Lea los datos escritos Si la escritura falla, la salida es 0. Los siguientes resultados indican que la prueba fue exitosa.
Inserte la descripción de la imagen aquí

Seis, rutina

Siete, enlace de referencia

Tutorial de Micro Snow Classroom

Supongo que te gusta

Origin blog.csdn.net/weixin_43810563/article/details/114900778
Recomendado
Clasificación