人民,
我经常看到关于如何使用SPI接口来操作SD存储卡的参考资料。这是而不是我想要的。我需要做的正好相反。
我希望能够使用我的“主机”中的SDIO控制器(通过SD插槽)(任何具有SD卡接口的PC机)与我的设备(基本上是微控制器)交谈,这些设备只能“说”SPI。
如果我的理解不是太错误,我不能简单地告诉我的SD控制器在原始SPI模式下说话,但我可以教我的微控制器作为一个SDIO设备,可以由我的主机控制。
这样,我仍然面临着两个挑战:
实现SDIO设备似乎是遵循等级库的问题。不过,主机端驱动程序是我希望在Linux中使用一些现有内核空间驱动程序来实现的用户空间驱动程序。
这就是我来寻求帮助的要点。有谁能为我指出任何样本、文件或任何能帮助我完成任务的资源?
发布于 2013-10-21 06:15:25
在PC端,这就是您所需要的:http://sourceforge.net/projects/sdio-linux/
这可能对参考有用:http://www.varsanofiev.com/inside/WritingLinuxSDIODrivers.htm (虽然,我认为您不会编写驱动程序)
在微控制器方面,使用“位敲击”来实现SDIO规范。
但是,首先要考虑为什么要这样做。SDIO和SPI只是串行协议,USB也是如此;你不愿意做一个SPI到USB的桥接吗?USB在主机端更方便用户使用,而且更标准/更常见。如果你真的想要一个SPI到USB的桥接器,原来它已经存在了,SPI捷径 (可能还有其他选项,这只是第一个想到的)。
如果主机支持I2C (很多支持I2C ),那么编辑或者,你可以在微上咬一口砰的I2C。实际上,查看主机支持的每一个串行协议,看看您是否可以从微端轻松地支持它(通过位敲击,因为微协议可能没有内置的从模式)。RS232 (带有电平移位器)、I2C和SPI可能是首选选择。我认为,SDIO几乎是最后的选择。
发布于 2013-10-22 15:05:17
SDIO非常严格地指定。除非您的微控制器有一个SDIO块,用于作为设备而不是主机,否则我认为这是不可能的。我知道一些实现SDIO设备的特殊用途通信控制器,但我还没有遇到任何通用的微控制器。
您需要一个相当快的微控制器,才能在高达400 kHz的情况下进行大幅度的SDIO初始化。如果以180 MHz运行一个MHz,则只给出SDIO时钟周期之间的微控制器周期。如果主机在初始化后将时钟速度提高到最大的25 MHz,那么在SDIO时钟之间就会缩短到7个周期。
从SDIO规范的角度来看,您所链接的规范是一个简化的规范,它不包括总线的信令和定时。完整的规格要大很多倍。
正如我所提到的,可能有更好的替代方案来满足您的需要。如果SDIO主机支持SPI模式,那么大多数微控制器都有SPI外围设备,它们可以充当辅助设备而不是主机,因此这可能是一种没有外围设备的途径。如果您的数据速率足够低,一个简单的UART就足够了(您可以在短距离内合理地达到1 Mbit )。
https://stackoverflow.com/questions/19281662
复制相似问题