|
| 使用的是stm32F407驱动一个32G的tf卡,使用的SPI模式。第一次上电时,卡识别初始化能通过,但是再keil调试时复位,再运行到初始化这里。卡识别初始化一直过不了。这个时候拔插一次tf卡,再次初始化就能通过。这是什么原因?怎么解决? 初始化代码部分: uint8_t SD_Initialize(void) { uint8_t r1; // 存放SD卡的返回值 uint16_t retry; // 用来进行超时计数 uint8_t buf[4]; SD_Type = 0; //默认无卡 if (r1 == 0X01) { if (SD_SendCmd(CMD8, 0x1AA, 0x87) == 1) //SD V2.0 { for (i = 0; i < 4; i++)buf[i] = SD_SPI_ReadWriteByte(0XFF); //Get trailing return value of R7 resp if (buf[2] == 0X01 && buf[3] == 0XAA) //卡是否支持2.7~3.6V { retry = 0XFFFE; do { r1=SD_SendCmd(CMD55, 0, 0X01); //发送CMD55 r1 = SD_SendCmd(CMD41, 0x40000000, 0X01); //发送CMD41 } while (r1 && retry--); if (retry && SD_SendCmd(CMD58, 0, 0X01) == 0) //鉴别SD2.0卡版本开始 { for (i = 0; i < 4; i++)buf[i] = SD_SPI_ReadWriteByte(0XFF); //得到OCR值 if (buf[0] & 0x40)SD_Type = SD_TYPE_V2HC; //检查CCS else SD_Type = SD_TYPE_V2; } } } else //SD V1.x/ MMC V3 { SD_SendCmd(CMD55, 0, 0X01); //发送CMD55 r1 = SD_SendCmd(CMD41, 0, 0X01); //发送CMD41 if (r1 <= 1) { SD_Type = SD_TYPE_V1; retry = 0XFFFE; do //等待退出IDLE模式 { SD_SendCmd(CMD55, 0, 0X01); //发送CMD55 r1 = SD_SendCmd(CMD41, 0, 0X01); //发送CMD41 } while (r1 && retry--); } else { SD_Type = SD_TYPE_MMC; //MMC V3 retry = 0XFFFE; do //等待退出IDLE模式 { r1 = SD_SendCmd(CMD1, 0, 0X01); //发送CMD1 } while (r1 && retry--); } if (retry == 0 || SD_SendCmd(CMD16, 512, 0X01) != 0)SD_Type = SD_TYPE_ERR; //错误的卡 } } SD_DisSelect();//取消片选 if (SD_Type)return 0; else if (r1)return r1; return 0xaa;//其他错误 } 发送CMD8时,响应值正常。CMD55也正常响应。ACMD41返回值一直是0x01(r1 = SD_SendCmd(CMD41, 0x40000000, 0X01); //发送CMD41)。 if (buf[2] == 0X01 && buf[3] == 0XAA) //卡是否支持2.7~3.6V { retry = 0XFFFE; do { SD_SendCmd(CMD55, 0, 0X01); //发送CMD55 r1 = SD_SendCmd(CMD41, 0x40000000, 0X01); //发送CMD41 }while (r1 && retry--); |
为什么STM32H7的DMA第一次启动延时较长?
STM32F407 USB 发送数据 上位机接受不到
请问我的CubeMX为什么初始界面没有ai选项,进去之后也没有addnetwork?
ST Motor Control Workbench卡在如图界面,生成不了代码
SDIO 标致位 没有变
程序卡死在USB_EPStartXfer这里
SDIO 初始化 死在 __HAL_RCC_SDIO_CLK_ENABLE语句上
我现在使用STM32F446ZET6芯片,外挂了16m的片外SDRAM。想把程序在SDRAM中运行,一直尝试没有成功,希望得到帮助,是否有相关的例子或参考的文档
MotorControl Workbench 6.4.1 生成 FOC 项目代码后运行死机。
3.3v单片机能刷写1.8v的spi flash吗?
微信公众号
手机版
也试过直接冷启动(直接上电不通过调试器),连续初始化两次,第一次初始化通过,第二次的初始化就直接失败了。