SDIO驱动mmcsd_go_idle函数的疑惑

发布于 2020-01-04 21:39:58

~c
rt
int32t mmcsdgoidle(struct rtmmcsdhost *host)
{
rt_int32_t err;
struct rt_mmcsd_cmd cmd;

//这里对于非SPI方式为啥还要去设置一下片选啊。
if (!controller_is_spi(host))
{
mmcsd_set_chip_select(host, MMCSD_CS_HIGH);
mmcsd_delay_ms(1);
}

rt_memset(&cmd, 0, sizeof(struct rt_mmcsd_cmd));

cmd.cmd_code = GO_IDLE_STATE;
cmd.arg = 0;
cmd.flags = RESP_SPI_R1 | RESP_NONE | CMD_BC;

err = mmcsd_send_cmd(host, &cmd, 0);

mmcsd_delay_ms(1);
//这里同样。
if (!controller_is_spi(host))
{
mmcsd_set_chip_select(host, MMCSD_CS_IGNORE);
mmcsd_delay_ms(1);
}

return err;
}
~

查看更多

关注者
0
被浏览
474
2 个回答
RTT_User1
RTT_User1 2020-01-05
感觉这是个bug。
#define controller_is_spi(host)	(host->flags & MMCSD_HOST_IS_SPI)
HappyTime
HappyTime 2020-01-06
RTT_User1 发表于 2020-1-5 15:21
感觉这是个bug。


调试过程中遇到这个问题,是不是有其他方面的考虑,现在没做SPI方式的测试,但是从代码上看是SPI方式下的片选,非SPI模式应该用不到。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览