您是否推荐使用SunSPOT的TTL,SPI或I2C

时间:2009-01-27 03:21:17

标签: sunspot i2c spi ttl

我开始尝试与某些外部组件(Skyetek M1 Mini或M1 RFID扫描仪)连接,而不是支持以下协议TTL,SPI或I2C。我想知道你会推荐哪一条路线。现场运行的应用需要大量的处理时间(连续运行的手势匹配算法)并且资源相当昂贵。

非常感谢有关该主题的任何链接或来源。

我发现有用的链接:

TTL:

感谢您的帮助。


编辑:

如果它有助于我尝试与之交互的设备是Skyetek M1M1 mini。平台/ CPU是Sun SunSPOT

2 个答案:

答案 0 :(得分:4)

TTL是指UART(外设自动接收/发送串行流)还是bitbanging(手动设置/复位/切换位)?

我可能会推荐SPI。这是一个相对简单的协议,在主人方面,如果必须,你可以咬它。 (但更容易使用内置SPI外设。)SPI主机发出时钟线(SCLK)和数据线(MOSI =主输出从机输入),其中数据位在时钟的指定边沿有效线;它从从机接收数据线(MISO =从机输出中的主机),其中数据位在时钟线的指定边沿有效。如果你有多个从设备,那么技术通常是为每个从设备提供一个芯片选择(CS)线;如果CS为低电平则有问题的从机是有效的,否则它应该忽略时钟/数据信号而不会干扰MISO线。如果您的微控制器输出端口引脚短路并且您需要一些额外的SPI,SPI很简单,甚至可以使用HC594或HC595输出寄存器(将MOSI连接到SER,SCLK连接到SCK,CS连接到RCK)。如果您有超过3个SPI器件,请考虑使用HC138作为解码器,从一组地址位和微处理器的主芯片选择线产生单独的器件CS线。 (因为一次只有一条CS线应该是低的)

I2C很痛苦。它的主要优点是你可以在一堆外设之间共享2线(+电源和地)。但是你必须处理地址争用和其他一些事情。它也比SPI慢,并且具有开路集电极线,因此其功耗+抗噪性与上拉电阻(或电流源)所用的相关。

UART可以是最快的解决方案。 SPI具有与往返传播时间相关的速度限制,因为双方使用相同的时钟信号。 (信号路径=主机改变SCLK引脚,从机看到它并通过改变MISO引脚响应,然后主机在下一个SCLK边沿使用MISO信号,因此来自从机的信号应该到达)在UART中,输入和输出比特流除非高级协议用于UART端点A向UART端点B发送命令,等待B响应,然后发送下一个命令,否则延迟并不意味着您的吞吐量会降低。真正快速的串行流应考虑使用LVDS来保持信号完整性。但是与SPI相比,解析UART字节是一种痛苦;在SPI中有明显分隔的数据包,而在UART中,您处理的是无限制的串行流,任何打包都必须通过解析数据本身来完成。

编辑:另一个带UART的加,有时处理器可以自动处理大型发送/接收缓冲区,这样你的程序就可以排队一大串字节来发送,然后解析一堆接收到的字节当你想要的时候。硬件可以处理发送/接收每个字节的即时性,并使您的程序免于担心在程序执行其他操作时丢失的单个字节。

答案 1 :(得分:1)

杰森的回答更详细,但我认为我会增加我的简短经验。

我使用SkyTek M1 Micro RFID读/写模块连接到TTL上的BASIC Stamp。我从来没有遇到任何问题,设置比我选择I2C时要简单得多。

它只需要微控制器按照SkyeTek协议发送简单的串行TTL命令。我把它安装在我的面包板上大约5分钟就完成了。