2

人们,

我一直看到有关如何使用 SPI 接口操作 SD 存储卡的参考资料。这不是我想要的。我需要做完全相反的事情。

我希望能够在我的“主机”(任何具有 SD 卡接口的 PC)中使用 SDIO 控制器(通过 SD 插槽)与只能“说”SPI 的设备(基本上是微控制器)通信。

如果我的理解没有太大错误,我不能简单地告诉我的 SD 控制器以原始 SPI 模式说话,但我可以教我的微控制器作为一个可以由我的主机控制的 SDIO 设备。

这样我还有两个挑战:

  1. 在我的微控制器中正确实现通用 SDIO 设备。
  2. 在主机中实施/配置正确的驱动程序,以便能够与我的设备交互。

实现 SDIO 设备似乎是遵循规范的问题。不过,主机端驱动程序是我希望我可以通过 Linux 中的用户空间驱动程序使用一些已经存在的 SDIO 内核空间驱动程序来完成的。

这就是我来寻求帮助的重点。谁能指点我任何可以帮助我完成任务的样本、文件或任何类型的资源?

4

2 回答 2

1

在 PC 端,这就是你所需要的:http: //sourceforge.net/projects/sdio-linux/

这可能对参考有用:http ://www.varsanofiev.com/inside/WritingLinuxSDIODrivers.htm (虽然,我不认为你会写驱动程序)

在微控制器方面,使用“bit-banging”来实现 SDIO 规范。

但是,首先要考虑为什么要这样做。SDIO和SPI只是串行协议,USB也是;你不想做一个 SPI-to-USB 桥接器吗?USB 在主机端更加用户友好,并且更标准/更常见。如果您确实想要一个 SPI-to-USB 桥接器,事实证明它已经存在,即SPI 快捷方式(可能还有其他选项,这只是想到的第一个选项)

编辑或者,如果主机支持 I2C(很多都支持),您可以在微型计算机上使用 I2C。实际上,检查主机支持的每个串行协议,看看你是否可以从微端轻松支持它(通过位敲打,因为微可能没有内置该协议的从模式)。RS232(带电平转换器)、I2C 和 SPI 可能是首选。我认为 SDIO 几乎是最后的选择。

于 2013-10-21T06:15:25.067 回答
0

SDIO 的规定非常严格。除非你的微控制器有一个 SDIO 块,它被设计成一个设备而不是主机,我认为这是不可能的。我知道一些实现 SDIO 设备的专用通信控制器,但我没有遇到任何通用微控制器。

您需要一个相当快的微控制器才能以高达 400 kHz 的频率对 SDIO 进行位触发初始化。如果以 180 MHz 运行 STM32F4,这只会为您提供 SDIO 时钟周期之间的微控制器周期。如果主机在初始化后将时钟速度提高到最大 25 MHz,那么 SDIO 时钟之间的周期将减少到 7 个。

从 SDIO 规范的角度来看,您链接的规范是一个简化的规范,不包括总线的信号和时序。完整的规格要大很多倍。

正如我提到的亚历克斯,可能有更好的选择来满足您的需求。如果您的 SDIO 主机支持 SPI 模式,那么大多数微控制器确实具有可以充当从机而非主机的 SPI 外设,因此这可能是没有外设的途径。如果您的数据速率足够低,一个简单的 UART 就足够了(您可以合理地在短距离内达到 1 Mbit)。

于 2013-10-22T15:05:17.650 回答