STM32用一线式驱动SD NAND,SDIO的一线式驱动

这篇具有很好参考价值的文章主要介绍了STM32用一线式驱动SD NAND,SDIO的一线式驱动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SDIO的一线式和四线式
SDIO(Secure Digital Input/Output)是一种用于在嵌入式系统中连接外部设备的标准接口。在SDIO标准中,一线式和四线式是指SDIO接口的不同工作模式。
一线式(Single-Line Mode):
工作原理: 在一线式模式下,SDIO接口仅使用单个数据线进行通信。这个模式通常用于相对简单的应用,其中数据传输速度要求不是很高。
适用情境: 适用于对数据传输速度要求不高的场景,例如连接一些低速外设。
四线式(Four-Line Mode):
工作原理: 在四线式模式下,SDIO接口使用四根线进行通信,包括一个命令线、一个数据线、一个时钟线和一个电源线。这个模式支持更高的数据传输速度。
适用情境: 适用于对数据传输速度有较高要求的应用,例如连接高速外设,比如摄像头、Wi-Fi模块等。
选择一线式还是四线式取决于具体的应用需求。如果应用对速度要求不高,或者对硬件资源有限,可以选择一线式。如果需要更高的数据传输速度,特别是在连接高速外设的情况下,四线式可能更为合适。
需要注意的是,使用四线式模式可能会对系统的硬件和软件设计提出更高的要求,因为需要支持更复杂的通信协议和更高的时钟频率。
STM32的SDIO一线式驱动SD NAND
有些平台和MCU没有SDIO接口的,STM32大部分型号有SDIO接口,具体可以看芯片手册,
程序代码

SD NAND初始化
/**

  • @brief 初始化SD卡

  • @param 无

  • @retval 返回值:0 初始化正确;其他值,初始化错误
    */uint8_t sd_init(void){
    uint8_t SD_Error;

    /* 初始化时的时钟不能大于400KHZ /
    g_sdcard_handler.Instance = SDIO;
    g_sdcard_handler.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING; /
    上升沿 /
    g_sdcard_handler.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; /
    不使用bypass模式,直接用HCLK进行分频得到SDIO_CK /
    g_sdcard_handler.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; /
    空闲时不关闭时钟电源 /
    g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B; /
    1位数据线 /
    g_sdcard_handler.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE; /
    开启硬件流控 /
    g_sdcard_handler.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV; /
    SD传输时钟频率最大25MHZ */

    SD_Error = HAL_SD_Init(&g_sdcard_handler);
    if (SD_Error != HAL_OK)
    {
    return 1;
    }
    // SD_Error = HAL_SD_ConfigWideBusOperation(&g_sdcard_handler, SDIO_BUS_WIDE_4B); /* 使能宽总线模式,-O0 优化会有问题 */// if (SD_Error != HAL_OK)// {// return 2;// }

    return 0;}
    测试SD NAND的写入
    /**

  • @brief 初始化SD卡

  • @param 无

  • @retval 返回值:0 初始化正确;其他值,初始化错误
    */uint8_t sd_init(void){
    uint8_t SD_Error;

    /* 初始化时的时钟不能大于400KHZ /
    g_sdcard_handler.Instance = SDIO;
    g_sdcard_handler.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING; /
    上升沿 /
    g_sdcard_handler.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; /
    不使用bypass模式,直接用HCLK进行分频得到SDIO_CK /
    g_sdcard_handler.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; /
    空闲时不关闭时钟电源 /
    g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B; /
    1位数据线 /
    g_sdcard_handler.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE; /
    开启硬件流控 /
    g_sdcard_handler.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV; /
    SD传输时钟频率最大25MHZ */

    SD_Error = HAL_SD_Init(&g_sdcard_handler);
    if (SD_Error != HAL_OK)
    {
    return 1;
    }
    // SD_Error = HAL_SD_ConfigWideBusOperation(&g_sdcard_handler, SDIO_BUS_WIDE_4B); /* 使能宽总线模式,-O0 优化会有问题 */// if (SD_Error != HAL_OK)// {// return 2;// }

    return 0;}
    测试SD NAND的读出
    /**

  • @brief 测试SD卡的读取

  • @note 从secaddr地址开始,读取seccnt个扇区的数据

  • @param secaddr : 扇区地址

  • @param seccnt : 扇区数

  • @retval 无
    */void sd_test_read(uint32_t secaddr, uint32_t seccnt){
    uint32_t i;
    uint8_t *buf;
    uint8_t sta = 0;

    buf = mymalloc(SRAMIN, seccnt * 512); /* 申请内存,从SDRAM申请内存 /
    sta = sd_read_disk(buf, secaddr, seccnt); /
    读取secaddr扇区开始的内容 */

    if (sta == 0)
    {
    lcd_show_string(30, 170, 200, 16, 16, “USART1 Sending Data…”, BLUE);
    printf(“SECTOR %d DATA:\r\n”, secaddr);

     for (i = 0; i < seccnt * 512; i++)
     {
         printf("%x ", buf[i]); /* 打印secaddr开始的扇区数据 */
     }
    
     printf("\r\nDATA ENDED\r\n");
     lcd_show_string(30, 170, 200, 16, 16, "USART1 Send Data Over!", BLUE);
    

    }
    else
    {
    printf(“err:%d\r\n”, sta);
    lcd_show_string(30, 170, 200, 16, 16, "SD read Failure! ", BLUE);
    }

    myfree(SRAMIN, buf); /* 释放内存 */}
    实验现象

使用的芯片是MK-米客方德的工业级芯片MKDV1GIL-AS,
sdio 一线 四线 区别,stm32,嵌入式硬件,单片机sdio 一线 四线 区别,stm32,嵌入式硬件,单片机

需要工程的可以联系MK-米客方德。文章来源地址https://www.toymoban.com/news/detail-796007.html

到了这里,关于STM32用一线式驱动SD NAND,SDIO的一线式驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32在SDIO模式下SD写入错误的问题

    1、问题描述 使用FAT32 f_write 多次执行写操作时,会报FR_DISK_ERR错误,而且是刚开始写不报错,写几次后会一直报错。 设断点跟踪到HAL_SD_WriteBlocks中,在调用SDMMC_CmdWriteMultiBlock时,会报SDMMC_ERROR_TX_UNDERRUN,意思 是Transmit FIFO underrun 2、原因分析 如下图所示,SDMMC开始写操作时,首

    2023年04月24日
    浏览(47)
  • STM32对SD卡的读、写、擦除操作(SDIO模式)(DMA)

    对于STM32操作SD卡来说,最重要的就算 初始化 、 写操作 、 读操作 、 擦除 这几个操作了。 对于初始化部分上一篇文章已经分析,本篇就主要分析写、读、擦除操作。 本篇函数来自于 STM32提供的例程 。参考野火的程序进行了解释,与野火函数有些不同。 这几种函数完成之后

    2023年04月08日
    浏览(51)
  • STM32CubeMX系列09——SDIO(SD卡读写、SD卡移植FATFS文件系统)

    ==== 文章汇总(有代码汇总) ==== 准备看看这方面的知识,一时间还没不清有什么区别,先补补课,不需要的跳过。 参考文章(内容来源):http://www.360doc.com/content/21/1125/22/59057945_1005908465.shtml 主要写这两个:SD卡、TF卡 共同点:SD、TF、MMC都是在MMC基础上演化发展不同的规范,

    2024年02月09日
    浏览(49)
  • STM32CubeMX教程28 SDIO - 使用FatFs文件系统读写SD卡

    正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 野火DAP仿真器 XCOM V2.6串口助手 使用STM32CubeMX软件配置STM32F407开发板 SDIO使用FatFs中间件读写4线SD卡,并实现以轮询方式读写SD卡或以DMA方式读取SD卡 FatFs文件系统相关知识请读者

    2024年02月19日
    浏览(51)
  • STM32F4X SDIO(七) 例程讲解-SD_InitializeCards & SD_GetCardInfo

    本节例程基于 野火电子的STM32F407的SD卡读写例程 进行讲解。上一节中讲解了SD卡上电过程,这节将会讲解一下SD卡的初始化过程,包括 获取SD卡的CID、CSD和SD卡RCA地址 。 CMD2的作用是 通知所有卡通过CMD线返回CID值 ,CID值包括 SD卡的识别号、制造商ID、OEMID、产品名称、版本号、

    2024年02月05日
    浏览(50)
  • stm32中的SDIO

    存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输; 电源检测单元保证SD卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位; 卡及接口控制单元控制SD卡的运行状态,它包括有8个寄存器; 接口驱动器控制S

    2024年02月19日
    浏览(70)
  • STM32F4X SDIO(四) SDIO控制器

    STM32F4X内部有一个SDIO控制器,开发者可以使用这个控制器跟SD卡进行通信,下面就来简单了解一下STM32F4X的SDIO控制器的使用。 下图为STM32F4X的SDIO控制器框图,框图可以分为以下5部分, 适配器寄存器 、 FIFO 、 控制单元 、 命令路径 、 数据路径 。 SDIO控制器时钟 STM32F4X的所有

    2024年02月07日
    浏览(55)
  • STM32使用STM32CUBEMX配置FreeRTOS+SDIO4bit+FATFS注意事项

    以STM32F429为例: 1、SDIO配置 配置为4bit模式,此配置不是最终配置,后面会在代码进行修改。 2、Fatfs配置 Set Defines 选项中的配置可以默认,最重要注意Advanced Setting 选择中的配置,如下 该界面配置默认Use dma template是默认使能的 ,并且不可以选择,只能选择使能,所以需要使

    2024年02月11日
    浏览(60)
  • CS SD NAND在STM32精英V2开发板的测试-是时候将TF卡换为SD NAND了

    前言    嵌入式项目中,比较常见的存储扩展方案是使用TF/SD卡或者EMMC或者RAW NAND,各种方案都有其优缺点,而SD NAND相对于上述方案具备很多优势,是目前嵌入式项目中存储扩展方案的一个非常不错的选择,正好一个项目在选择NAND存储方案, 恰巧论坛中联系到雷龙公司申请到了两片

    2024年02月07日
    浏览(42)
  • SDIO读写SD卡速度有多快?

    前两天测试了SPI方式读写SD卡的速度《SPI方式读写SD卡速度测试》,今天来测试一下SDIO方式的读写速度。 测试条件: 单片机:STM32F407VET6 编译环境:MDK 5.30+HAL库 SD卡:闪迪32GB/64GB TF卡 文件系统:FatFS R0.12c 之前测试中说过了,非DMA方式速度和资源利用率都不如DMA方式,所以今

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包