代码之家  ›  专栏  ›  技术社区  ›  smaclell

你推荐带太阳黑子的TTL、SPI或I2c吗

  •  0
  • smaclell  · 技术社区  · 16 年前

    我开始尝试与一些外部组件(Skyetek M1 Mini或M1 RFID扫描仪)接口,这些组件不支持以下协议TTL、SPI或I2C。我想知道您会推荐哪种路由。在现场运行的应用程序需要很长的处理时间(一种持续运行的手势匹配算法),而且资源相当昂贵。

    任何有关这一主题的链接或来源都将非常感谢。

    我发现的有用链接:

    TTL:

    谢谢你的帮助。


    编辑:

    如果它能帮助我尝试连接的设备是Skyetek M1 M1 mini . 平台/CPU是太阳 SunSPOT .

    2 回复  |  直到 13 年前
        1
  •  4
  •   Jason S    16 年前

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

    我可能会推荐SPI。这是一个相对简单的协议,在主协议方面,如果必须这样做的话,你可以尝试一下。(但使用内置SPI外设要容易得多。)SPI主设备发送一条时钟线(SCLK)和一条数据线(mosi=master-out-slave-in),其中数据位在时钟线的指定边缘上有效;它从从设备接收一条数据线(miso=master-in-slave-out),其中数据位在时钟线的指定边缘上有效。如果您有多个从系统,则该技术通常为每个从系统提供一条芯片选择(CS)线路;如果CS较低,则相关的从系统处于活动状态,否则应忽略时钟/数据信号,而不干扰MISO线路。SPI很简单,甚至可以使用HC594或HC595输出寄存器(将mosi连接到ser,sclk连接到sck,cs连接到rck),如果您的微控制器在输出端口的管脚上短路,并且您需要一些额外的管脚。如果您有3个以上的SPI设备,请考虑使用HC138作为解码器,从一组地址位生成单个设备的CS线,并从微处理器生成主芯片选择线。(因为一次只能有一条CS线处于低位)

    I2C是一种痛苦。它的主要优点是,您可以在一组外围设备之间共享的2条电线(电源和接地)中完成所有工作。但是您必须处理地址争用和其他一些事情。它也比SPI慢,并且有开放的集电极线,所以它的功耗+抗噪声性与你使用的上拉电阻(或电流源)有关。

    UART可能是最快的解决方案。SPI具有与往返传播时间相关的速度限制,因为双方使用相同的时钟信号。(信号路径=master更改sclk pin,slave看到它并通过更改miso pin作出响应,然后master在下一个sclk边缘上使用miso信号,因此slave的信号应该在那时到达)在UART中,传入和传出比特流是独立的,延迟并不意味着除非高级协议要让UART端点A向UART端点B发送命令,请等待B响应,然后发送下一个命令。真正快速的串行流应该考虑使用 LVDS 保持信号完整性。但是与SPI相比,解析UART字节是一种痛苦;在SPI中有明显分隔的数据包,而在UART中,您处理的是不受限制的串行流,任何数据包化都必须通过解析数据本身来完成。

    编辑:另一个使用UART的优点是,有时处理器可以自动处理大型发送/接收缓冲区,这样您的程序就可以将要发送的大量字节排队,然后在您希望的时候解析一堆接收的字节。硬件可以处理发送/接收每个单独字节的即时性,并使程序不必担心在程序执行其他操作时丢失的单个字节。

        2
  •  1
  •   Kyle Lowry    16 年前

    杰森的回答更详细,但我想我会加上我的简短经验。

    我使用了一个SkytekM1微型射频识别读/写模块,通过TTL连接到一个基本邮票。我从来没有遇到过任何问题,而且设置比我选择I2c时要简单得多。

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