公司的电脑不知什么原因,上传不了附件。用SDIO,用原子的STM32F407的 实验38 SD卡实验 代码测试也初始化不成功,用STM32CubeMX生成的代码也不行,卡是金士顿 8G Class 4的TF卡,但相同的程序用很多年前买的一张512MB的卡,却可以初始化,并能正常读写数数;两个程序对512MB的卡都能正常操作(初始化、读写操作)。但公司要求产品必须能识别8G或16G的卡,你说会不会是卡的问题?但金士顿 8G Class 4的TF卡是前几天在JD上买的。都卡在这里拖了一周了本来还想在三月份把产品搞定的,又得延期了
公司的电脑不知什么原因,上传不了附件。用SDIO,用原子的STM32F407的 实验38 SD卡实验 代码测试也初始化不成功,用STM32CubeMX生成的代码也不行,卡是金士顿 8G Class 4的TF卡,但相同的程序用很多年前买的一张512MB的卡,却可以初始化,并能正常读写数数;两个程序对512MB的卡都能正常操作(初始化、读写操作)。但公司要求产品必须能识别8G或16G的卡,你说会不会是卡的问题?但金士顿 8G Class 4的TF卡是前几天在JD上买的。都卡在这里拖了一周了本来还想在三月份把产品搞定的,又得延期了
执行到下面的代码即返回
if(errorstatus==SD_OK)//SD2.0/SD 1.1,否则为MMC卡
{
//SD卡,发送ACMD41 SD_APP_OP_COND,参数为:0x80100000
while((!validvoltage)&&(count<SD_MAX_VOLT_TRIAL))
{
SDIO_CmdInitStructure.SDIO_Argument = 0x00;//发送CMD55,短响应
SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_APP_CMD; //CMD55
SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
SDIO_SendCommand(&SDIO_CmdInitStructure); //发送CMD55,短响应
errorstatus=CmdResp1Error(SD_CMD_APP_CMD); //等待R1响应
if(errorstatus!=SD_OK)
return errorstatus; //响应错误
//acmd41,命令参数由支持的电压范围及HCS位组成,HCS位置一来区分卡是SDSc还是sdhc
SDIO_CmdInitStructure.SDIO_Argument = SD_VOLTAGE_WINDOW_SD | SD_HIGH_CAPACITY | SDType; //发送ACMD41,短响应
SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SD_APP_OP_COND;
SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short; //r3
SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
SDIO_SendCommand(&SDIO_CmdInitStructure);
errorstatus=CmdResp3Error(); //等待R3响应
if(errorstatus!=SD_OK)
return errorstatus; //响应错误
response=SDIO->RESP1;; //得到响应
validvoltage=(((response>>31)==1)?1:0); //判断SD卡上电是否完成
count++;
}
公司的电脑不知什么原因,上传不了附件。用SDIO,用原子的STM32F407的 实验38 SD卡实验 代码测试也初始化不成功,用STM32CubeMX生成的代码也不行,卡是金士顿 8G Class 4的TF卡,但相同的程序用很多年前买的一张512MB的卡,却可以初始化,并能正常读写数数;两个程序对512MB的卡都能正常操作(初始化、读写操作)。但公司要求产品必须能识别8G或16G的卡,你说会不会是卡的问题?但金士顿 8G Class 4的TF卡是前几天在JD上买的。都卡在这里拖了一周了本来还想在三月份把产品搞定的,又得延期了
https://www.stmcu.org.cn/faq/index/detail/id-70858
公司的电脑不知什么原因,上传不了附件。用SDIO,用原子的STM32F407的 实验38 SD卡实验 代码测试也初始化不成功,用STM32CubeMX生成的代码也不行,卡是金士顿 8G Class 4的TF卡,但相同的程序用很多年前买的一张512MB的卡,却可以初始化,并能正常读写数数;两个程序对512MB的卡都能正常操作(初始化、读写操作)。但公司要求产品必须能识别8G或16G的卡,你说会不会是卡的问题?但金士顿 8G Class 4的TF卡是前几天在JD上买的。都卡在这里拖了一周了本来还想在三月份把产品搞定的,又得延期了
这是个好思路,我去看一下,你有没有空帮我看一下代码?
//如果不是SDHC,给定的是sector地址,将其转换成byte地址
if(SD_Type!=SD_TYPE_V2HC)
{
sector = sector<<9;
}
这是初始化中的代码吗?
能上传一下你的代码给我看一下吗?
原子的代码就有 if(CardType!=SDIO_STD_CAPACITY_SD_CARD_V1_1)lsector<<=9;
值为 SDIO_STD_CAPACITY_SD_CARD_V2_0