tpgf 发表于 2024-4-9 13:22

【MM32F5270开发板试用】依靠SPI_SD,移植FatFs文件系统

一、优化背景
在测试的过程中,发现播放音频卡顿十分卡顿,经过排除后发现,在官方适配的SPI是软件SPI。想到我们的整体流程是从SD卡开始,源头就卡了,何来最大吞吐率 。

二、优化过程
1、开启时钟,在clock_init.c中

/* SPI3. */
    RCC_EnableAPB1Periphs(RCC_APB1_PERIPH_SPI3, true);
    RCC_ResetAPB1Periphs(RCC_APB1_PERIPH_SPI3);


2、引脚设置,在pin_init.c中

/* PC12 - GPIO output: SPI3_MOSI. */
    gpio_init.Pins= GPIO_PIN_12;
    gpio_init.PinMode= GPIO_PinMode_AF_PushPull;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &gpio_init);
    GPIO_PinAFConf(GPIOC, gpio_init.Pins, GPIO_AF_6);

    /* PC11 - GPIO input: SPI3_MISO. */
    gpio_init.Pins= GPIO_PIN_11;
    gpio_init.PinMode= GPIO_PinMode_In_Floating;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &gpio_init);
    GPIO_PinAFConf(GPIOC, gpio_init.Pins, GPIO_AF_6);

    /* PC10 - GPIO output: SPI3_SCK. */
    gpio_init.Pins= GPIO_PIN_10;
    gpio_init.PinMode= GPIO_PinMode_AF_PushPull;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &gpio_init);
    GPIO_PinAFConf(GPIOC, gpio_init.Pins, GPIO_AF_6);

    /* PA15 - GPIO output: SPI3_CS. */
    gpio_init.Pins= GPIO_PIN_15;
    gpio_init.PinMode= GPIO_PinMode_AF_PushPull;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &gpio_init);
    GPIO_PinAFConf(GPIOA, gpio_init.Pins, GPIO_AF_6);



3、修改sdspi_port.c文件

/*
* Copyright 2022 MindMotion Microelectronics Co., Ltd.
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/


#include "board_init.h"
#include "sdspi.h"
#include "hal_spi.h"

/* pins:
* tx : PC12/SPI_MOSI
* rx : PC8/SPI0_MISO
* clk: PC12/SPI
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_47569031/article/details/127404146

chenqianqian 发表于 2024-4-9 19:57

嵌入式文件系统主要还是FatFS
页: [1]
查看完整版本: 【MM32F5270开发板试用】依靠SPI_SD,移植FatFs文件系统