以编程方式重新启动 sdio 是否可行?

Is it feasible to programmatically power cycle sdio?

我有一个为 linux 和 windows 制作的 sdio 设备,我需要重新启动。当然,我可以手动移除并重新插入它来实现这一点,但这非常不方便,我更喜欢某种方式来完全自动化该过程。我该怎么做?是否有一些晦涩的 cmd 行实用程序? C库?此功能是否必须内置到驱动程序中?有可能吗?

我一直在 linux 上阅读有关 mmc 的信息,但在 windows 方面还没有找到太多信息。到目前为止,一切似乎都非常复杂、模糊和不透明,而不是说 USB 有很多方法可以实现这一壮举,包括精彩的 libftdi。在这一点上,sdio 似乎是不可能的,但这对我来说似乎很奇怪。

不是以任何通用方式。 SDIO 接口有一个VDD 电源引脚,具体实现可能提供外部电源控制。如果电路板是您自己的设计,那么您可以像 this example 中那样实现它(尽管请阅读问题和答案,因为显示的设计存在缺陷)。然后,您将通过 GPIO 控制电源。

SDIO 规范确实提供了可以实现您需要的“重置”命令。有多种重置类型:

  • CMD0 - GO_IDLE_STATE
  • CMD15 - GO_INACTIVE_STATE
  • CMD52(对于 I/O 不是 存储卡)- 将 1 写入 CCCR I/O 中止 RES 位