当前位置: 首页 新闻资讯 行业新闻

内存高容量换成低容量注意事项

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

问题描述:之前用的是2GByte的拔插式TF卡,现在换成128MB的SDNAND,主控是STM32F407,SDNAND焊在转接板上再用读卡器插在电脑上正常识别出SDNAND盘符,容量信息,但把SDNAND贴在自己的主板上,容量却显示为32MB!

原因分析:TF卡高容量换到低容量程序代码是不同的,这是程序出现了BUG,需要注意下。

解决方法:需要去检查自己写的代码,检查SDNAD块调试出来的数量对不对,SDNAND每个块的大小是512MByte。以下是一个使用STM32与SDNAND芯片通信的示例代码:

SDNAND128MB容量格式化图片.png

C
#include "stm32f10x.h"  
#include "sdio.h"  
#include "sd.h"  
 
#define BLOCK_SIZE 512 // 每个块的字节数  
 
void SD_Init(void)  
{  
    SDIO_InitTypeDef SDIO_InitStructure;  
 
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SDIO, ENABLE); // 使能 SDIO 时钟  
 
    SDIO_InitStructure.SDIO_ClockDiv = SDIO_ClockDiv_2; // SDIO 时钟频率为 25MHz  
    SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_4Bit; // SDIO 总线宽度为 4bit  
    SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disabled; // SDIO 硬件流控制禁用  
    SDIO_InitStructure.SDIO_ClockPowerManagement = SDIO_ClockPowerManagement_Enabled; // SDIO 时钟电源管理启用  
    SDIO_InitStructure.SDIO_Mode = SDIO_Mode_SD; // SDIO 模式为 SD 卡模式  
    SDIO_InitStructure.SDIO_DataTimeOut = SDIO_DataTimeOut_512; // SDIO 数据超时时间为 512 个时序  
    SDIO_InitStructure.SDIO_CLKWakeUp = SDIO_CLKWakeUp_Disabled; // SDIO 启用 CLKWakeUp 禁用  
    SDIO_InitStructure.SDIO_PowerUpAfterHS = SDIO_PowerUpAfterHS_Disabled; // SDIO 启用 PowerUpAfterHS 禁用  
    SDIO_InitStructure.SDIO_DriverStrength = SDIO_DriverStrength_Strong; // SDIO 启用 DriverStrength 禁用  
    SDIO_InitStructure.SDIO_pwrControl = SDIO_pwrControl_Enabled; // SDIO 启用 pwrControl 禁用  
    SDIO_Init(&SDIO_InitStructure); // 初始化 SDIO 控制器  
}  
 
void SD_CardDetect(void)  
{  
    if (sdio. CardInfo.RCA == 0) { // 如果 RCA 为 0,则说明没有插入 SD 卡  
        return;  
    }  
 
    // 初始化 SD 卡驱动器并检查 SD 卡是否存在  
    if (sdio.SDCardState == CardState_NotInserted) { // 如果卡未插入,则返回错误状态码  
        return;  
    } else if (sdio.SDCardState == CardState_Inserted) { // 如果卡已插入,则初始化 SD 卡驱动器并准备进行通信  
        sdio.PowerState = PowerState_ON; // 使能 SD 卡控制器电源  
        sdio.CardType = SDIO_MemoryMappedCard; // 设置为内存映射模式  
        sdio.DriveMode = SDIO_DriveMode_High; // 使能高速模式  
        sdio.CSize = SDIO_DataBlockSize512; // 设置块大小为 512 字节  
        sdio.ReadWaitTimeout = SDIO_ReadWaitTimeout_2; // 设置读取超时时间为 2 个时序  
        sdio.WriteProtection = SDIO_WriteProtection_Disable; // 关闭写保护功能  
        sdio.BlockSize = BLOCK_SIZE; // 设置块大小为 512 字节(因为每个块的大小是固定的,所以需要设置)  
        sdio.TransferDirection = SDIO_TransferDirection_MemoryToCard; // 设置传输方向为从内存到卡  
        sdio.SendCmd(SDMMC_CmdSel明确的卡类型 | SDIO_SendCommand, CmdSend); // 发送命令到卡

SDNAND128MB格式化成功图片.png

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


上一篇:sd nand stm32

下一篇:SDNAND有那些品牌

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

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

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

电话:176-6539-0767

Q Q:135-0379-986

邮箱:1350379986@qq.com

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

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