当前位置: 首页 新闻资讯 技术问答

GD32 驱动 SDNAND 的详细指南

SD NAND-贴片式TF卡-贴片式SD卡-免费测试2025-06-206

以下是 GD32 驱动 SDNAND 的详细指南,包括 SDIO 和 SPI 两种通信方式:

SDIO 通信方式

  • 硬件连接

  • 配置 SDIO 时钟与 GPIO:使能 SDIO 和相关 GPIO 的时钟,配置 SDIO 引脚为复用功能。例如:

    • CMD:连接到 GD32 的 SD_CMD 引脚,通常为 PD2 等。

    • CLK:连接到 GD32 的 SD_CLK 引脚。

    • D0 - D3:如果使用 4 - bit 模式,D0 - D3 分别连接到 GD32 相应的 PC8 - PC11 等引脚;若使用 1 - bit 模式,只需连接 D0 引脚。

    • VCC 和 GND:确保电源电压为 3.3V(或 SDNAND 规格要求的电压),VCC 引脚并联 100nF + 10μF 电容,以稳定电源。

  • 软件驱动开发

配置 SDIO 时钟与 GPIO:使能 SDIO 和相关 GPIO 的时钟,配置 SDIO 引脚为复用功能。例如:

// 使能SDIO和GPIO时钟rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_GPIOC);rcu_periph_clock_enable(RCU_GPIOD);rcu_periph_clock_enable(RCU_SDIO);// 配置SDIO引脚复用gpio_pin_remap_config(GPIO_SDIO_REMAP, ENABLE);gpio_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12);gpio_init(GPIOD, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);

初始化 SDIO 控制器:设置 SDIO 的时钟分频、时钟旁路、时钟功率保存、总线宽度、时钟边沿和硬件流控制等参数。例如:

sdio_init_type sdio_init;sdio_clock_set(SDIO_CLK_DIV_8); // 主频200MHz时,SDIO时钟 = 200/8 = 25MHzsdio_init.clock_bypass = SDIO_CLOCK_BYPASS_DISABLE;sdio_init.clock_power_save = SDIO_CLOCK_POWER_SAVE_DISABLE;sdio_init.bus_wide = SDIO_BUS_WIDE_4B;sdio_init.clock_edge = SDIO_CLOCK_EDGE_RISING;sdio_init.hardware_flow_control = SDIO_HARDWARE_FLOW_CONTROL_ENABLE;sdio_init(SDIO, &sdio_init);
  • SDNAND 初始化:通过 SDIO 发送一系列命令来初始化 SDNAND,如复位卡(CMD0)、检查电压(CMD8)、激活 SDNAND(ACMD41)、获取卡的识别信息和 RCA(CMD2 和 CMD3)、选择卡进入传输状态(CMD7)等。

  • 读写操作:初始化成功后,使用 CMD17 读取单个数据块,使用 CMD24 写入单个数据块,每个块的大小通常为 512 字节。也可以启用 DMA 传输和设置块传输模式来提高读写效率。

SPI 通信方式

  • 硬件接线

    • SDNAND 初始化:通过 SPI 发送 SD 协议的初始化命令,如复位卡、设置模式等。由于 SPI 没有硬件协议支持,需要软件模拟 SD 协议的命令和响应流程。

    • 读写操作:模拟 SD 协议的读写命令,通过 SPI 发送数据和接收响应。在读写过程中,需要注意片选信号的控制以及数据的格式和时序。例如,在发送读命令后,等待 SDNAND 响应并通过 SPI 接收数据块;在发送写命令前,先准备好要写入的数据并通过 SPI 发送到 SDNAND。

    • CLK:连接到 GD32 的 SPI1_SCK 引脚,如 PA5。

    • DI(CMD):连接到 SPI1_MOSI 引脚,如 PA7,用于主出从入。

    • DO(DAT0):连接到 SPI1_MISO 引脚,如 PA6,用于主入从出。

    • CS:连接到一个普通 GPIO 引脚,如 PA4,作为片选信号。

  • 软件驱动开发

    • 配置 SPI 时钟与 GPIO:使能 SPI 和相关 GPIO 的时钟,配置 SPI 引脚为复用功能,并设置片选引脚为输出模式。

    • 初始化 SPI 控制器:设置 SPI 的工作模式(如 CPOL 和 CPHA)、数据位宽、时钟频率等参数。例如,对于 GD32F470,SPI 时钟最高可达 120MHz,但实际使用中需根据 SDNAND 的支持情况和稳定性进行调整。

    • SDNAND 初始化:通过 SPI 发送 SD 协议的初始化命令,如复位卡、设置模式等。由于 SPI 没有硬件协议支持,需要软件模拟 SD 协议的命令和响应流程。

    • 读写操作:模拟 SD 协议的读写命令,通过 SPI 发送数据和接收响应。在读写过程中,需要注意片选信号的控制以及数据的格式和时序。例如,在发送读命令后,等待 SDNAND 响应并通过 SPI 接收数据块;在发送写命令前,先准备好要写入的数据并通过 SPI 发送到 SDNAND。

    在实际应用中,还可以根据需要集成文件系统,如 FatFs 库,以方便对 SDNAND 进行文件级的操作。同时,进行适当的调试和优化,如检查命令响应、优化时钟设置、使用 DMA 等,以提高系统的性能和稳定性。

热门标签:SD NAND FLASH 贴片式TF卡 贴片式SD卡 SD FLASH NAND FLASH


SD NAND-贴片式TF卡-贴片式SD卡-免费测试

深圳市芯存者科技有限公司

售前咨询
售前咨询
售后服务
售后服务
联系我们

电话:176-6539-0767

Q Q:135-0379-986

邮箱:1350379986@qq.com

地址:深圳市南山区蛇口街道后海大道1021号C座C422W8

在线客服 在线客服 QQ客服 微信客服 淘宝店铺 联系我们 返回顶部