金牌会员
- 积分
- 2678
- 金钱
- 2678
- 注册时间
- 2018-11-8
- 在线时间
- 431 小时
|
楼主 |
发表于 2023-10-7 10:13:16
|
显示全部楼层
还有新版例程里
/**
* @brief SDMMC 时钟设置
* @param clkdiv : 时钟分频系数
* @note CK时钟 = SDIOCLK / [2 * clkdiv]; (SDIOCLK 钟一般为72Mhz)
* @retval 无
*/
static void sdmmc_clock_set(uint16_t clkdiv)
{
uint32_t tmpreg = SDIO->CLKCR;
tmpreg &= 0XFFFFFF00;
tmpreg |= clkdiv;
SDIO->CLKCR = tmpreg;
}
SDIO_CK 不是等于 SDIOCLK / [2 + clkdiv]吗 怎么变成2 * clkdiv了?
初始化传入的参数也是90
/* 用户配置区
* SDIO时钟计算公式: SDIO_CK 时钟 = SDIOCLK / [2 * clkdiv]; 其中, SDIOCLK 一般为72Mhz
* 如果出现驱动错误, 请尝试将 SDIO_TRANSFER_CLK_DIV 频率降低
*/
#define SDIO_INIT_CLK_DIV 90 /* SDIO初始化频率, 72M / (90 * 2)=400Khz, 最大400Kh */
#define SDIO_TRANSFER_CLK_DIV 3 /* SDIO传输频率,该值太小可能会导致读写文件出错 */
这里是不是有问题???
↓↓↓这是旧版例程里.h的分频系数 感觉这个才是对的
//用户配置区
//SDIO时钟计算公式:SDIO_CK时钟=SDIOCLK/[clkdiv+2];其中,SDIOCLK一般为72Mhz
//使用DMA模式的时候,传输速率可以到24Mhz,不过如果你的卡不是高速卡,可能也会出错
//出错就请降低时钟,使用查询模式的话,推荐SDIO_TRANSFER_CLK_DIV设置为3或者更大
#define SDIO_INIT_CLK_DIV 0xB2 //SDIO初始化频率,最大400Kh
#define SDIO_TRANSFER_CLK_DIV 0x04 //SDIO传输频率,该值太小可能会导致读写文件出错
|
|