华大HC32F460 SDIO TF卡实验

目录

1.实验目标

2.实验准备

3.硬件原理

4.驱动代码

5.主流程图

6.实验过程

7.实验扩展

1.实验目标

      本实验使用SDIOC一线式读取SD卡相关信息并打印到USB-UART,同时将SD卡容量显示到TFT。等待KEY1按下进入第0区块读取.将读取结果打印到USB-UART同时在TFT显示状态提示。

2.实验准备

       硬件搭建:ZW-HC32F460-BZ标准版开发板1套

       软件搭建:MDK5.22

3.硬件原理

        HC32F460开发板板载的SD卡座支持SD和SPI模式,SD模式支持1线和4线方式传输数据,SPI模式相对于SD模式速度要慢一点,本次实验采用的是SD模式实验1线方式传输数据。

4.驱动代码

【SD初始化函数】

   函数原型:   u8 Sdio_Sd_int( void )

   功能说明:   SD卡SDIO模式初始化

   输入参数:   无

   输出参数:   0为成功,其它为不成功

   特殊备注:   无

u8 Sdio_Sd_int( void )

{

       en_result_t enTestResult = Ok;   

       stc_sdcard_init_t stcCardInitCfg =

    {

        (en_sdioc_bus_width_t)SDIO_BUS_WIDTH,

        (en_sdioc_clk_freq_t)SDIO_CLK_FREQ,

        (en_sdioc_speed_mode_t)SDIO_SPEED_MODE,

        NULL,

    };

       SdioInitPins();

           MEM_ZERO_STRUCT( stcSdhandle );

       stcSdhandle.SDIOCx = SDIOC_UNIT;

       if ( Ok != SDCARD_Init( &stcSdhandle, &stcCardInitCfg ) )

    {

        enTestResult = Error;

    }

    return (u8)(enTestResult);

}

【TFT与SD卡共用脚处理函数】

   函数原型:   void SdioCmdPinFuc( en_port_func_t fuc )

   功能说明:   TFT与SD卡共用脚处理

   输入参数:   引脚功能

   输出参数:   无

   特殊备注:   无

void SdioCmdPinFuc( en_port_func_t fuc )

{

    PORT_SetFunc( (en_port_t)SDIOC_CMD_PORT, SDIOC_CMD_PIN, fuc, Disable);

}

       由于SDIOC的CMD引脚是与LCD的D2引脚共用的,所以使用相应功能时,需要切换对应的引脚功能。

【获取SD卡信息函数】

   函数原型:   void Sdio_Sd_info_printf( void )

   功能说明:   在SDIO模式下获取SD信息

   输入参数:   无

   输出参数:   无

   特殊备注:   无

void Sdio_Sd_info_printf( void )

{

    stc_sd_card_info_t *sdInfo;

    sdInfo = &stcSdhandle.stcSdCardInfo;

    SDCardInfo.CardBlockSize = sdInfo->u32BlockSize;

    SDCardInfo.CardCapacity = (long long)sdInfo->u32BlockNbr;

    SDCardInfo.CardCapacity *= SDCardInfo.CardBlockSize;

    switch( sdInfo->u32CardType )

    {

        case SDIO_STD_CAPACITY_SD_CARD_V1_1:

            DDL_Printf( "Card Type:SDSC V1.1\r\n" );

            break;

        case SDIO_STD_CAPACITY_SD_CARD_V2_0:

      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值