初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2019-9-25
- 在线时间
- 16 小时
|
最近在研究正点原子的SDIO部分程序,有一些疑问困扰很久,请大神赐教
1、SD_Error SD_PowerON(void)函数中“for(i=0;i<74;i++)//多次发送,直到进入空闲状态”语句循环次数是74,有何依据?
2、SD_Error SD_PowerON(void)函数中ACMD41指令的参数为SD_VOLTAGE_WINDOW_SD | SDType,其值为0X80100000。ACMD41命令参数说明如下,由表格知,位31为保留位,但参数里位31设置为1,是何原因?位30代表主机是否支持大容量卡,若支持则设置为1,但参数里位30设置为0,,是何原因?另外,该参数中SDType的值为0,与该值或运算是出于什么考虑?该值是否可以直接设置为0X40100000(即支持大容量,电压范围为3.2-3.3)?
3、SD_Error CmdResp1Error(u8 cmd)函数中,在返回卡响应之前有“SDIO->ICR=0X5FF;//清除标记”语句,即把位0-位8、位10清零,除此之外其他位(如位9、位22、位23)未清零,有选择的将某些位清零,原因是什么?其中ICR寄存器定义如下:
4、SD_Error CmdResp7Error(void)函数中,定义了timeout值,即该值减至0时,依然没有收到卡的响应,则返回响应超时错误。但该程序中同时会判断SDIO状态寄存器的位2(命令响应超时)。两种判断超时的方法同时存在,这样做是否冗余?还是存在其他必要性?
|
|