【问题标题】:MCU - Generally speaking, How to read data from a TX pin?MCU - 一般来说,如何从 TX 引脚读取数据?
【发布时间】:2016-02-17 08:40:07
【问题描述】:

我有一个 SAML21J18A 板(来自 Atmel,带有 AVR 处理器),以及一个 SIM908 开发板。所以,这是技术规格,但我想回答一个非常普遍的问题:

当您将 MCU 的一个 GPIO 引脚连接到另一个外设上的“TX”引脚时,从该 TX 引脚读取数据的常用方法是什么?我必须使用 I2C 协议吗?随着时间的推移,我是否必须阅读 GPIO 的状态?甚至可以使用 GPIO 读取复杂数据,而不仅仅是真或假状态?

感谢您提前回答,我对这个问题有点迷茫。

【问题讨论】:

  • 什么是“tx pin”?当然,这完全取决于该引脚的作用。它是GPIO引脚吗? I2C?还有什么?
  • 就是这样,在 SIM908 上,到处都写着“GSM_TX”,但它没有提供任何有关此引脚如何通信的信息。
  • 手册上说:“用于GPS NMEA信息输出、调试和固件升级”。听起来像是制造商使用的东西?在这种情况下,他们可能不会告诉你有什么通信接口。 “如果这些引脚未使用,请保持打开状态”。
  • 无论如何这个问题对 SO 来说是题外话,你应该在electronics.stackexchange.com 发布类似的问题。
  • 我投票结束这个问题,因为它不是关于编程,而是关于硬件。

标签: embedded microcontroller gpio


【解决方案1】:

如果引脚标记为“TX”,特别是如果有相应的“RX”引脚,那么它很可能是 UART。 I2C 引脚通常标记为 DATA 和 CLock。 SPI 引脚通常标记为 MOSI/SIMO/SCLK 或 DI/DO/CLK。

可以将这些信号中的任何一个连接到 GPIO 引脚并将软件驱动程序写入“bit-bang”接口以实现协议。但是您最好将引脚连接到微控制器上适当的串行端口引脚,并让微控制器的硬件外围设备完成详细工作。

如果这个 TX 引脚确实是 UART,那么您应该将它连接到微控制器 UART 上的 RX 引脚。

【讨论】:

    【解决方案2】:

    SIM908 使用 UART 协议与主机通信。 AT 命令是模块可以理解的语言。调制解调器使用 GSM_TX 引脚向主机发送响应,而 GSM_RX 引脚用于接收来自主机的命令,在这种情况下,主机就是您的 SAM 板。您可能还会注意到板上的 GPS_TX 和 GPS_RX 引脚。

    数字 GPIO 引脚根据逻辑电平(高或低)发送/接收数据。由于标准 UART 传输由一个起始位、8 位数据和一个停止位组成(所有这些都可以表示为以特定恒定频率发送的一系列 HIGH 和 LOW),因此可以使用数字 GPIO 引脚,正确的时机,在模块和主机之间接收和传输数据;这称为位碰撞。

    然而,使用连接到板上特定引脚的内置 UART 硬件更加方便和可靠。对 UART 外设执行正确的初始化,确保选择正确的波特率,然后向模块发出“AT”开始;如果一切顺利,您应该会收到“OK”。如果您收到乱码,这意味着模块没有设置为自动波特并且您使用了错误的波特,这意味着您必须尝试从 4800 向上的所有标准波特值。如果您显示您的代码,您可以获得更好的帮助。

    【讨论】:

      【解决方案3】:

      这很可能是一个 uart pin 已经回答了。你可以用一个 gpio 引脚做什么,如果不是所有的串行协议(只有几个引脚)、uart、spi、i2c、mdio 等,你可以做大部分事情。使用所谓的 bit banging。对于输出引脚,您通常必须使用某种内部计时器来计时状态更改之间的持续时间,以便在部件外部正确计时,以满足该协议所需的任何时序规范。它使您对硬件为您所做的事情产生了一种欣赏,并且在硬件中实现起来很简单(尤其是当您希望同时进行多个不同的操作时),但在软件中却更难,因为它会消耗大量 CPU 周期,并不总是准确计时。如果您不能足够快地对状态变化进行采样和处理,例如接收 uart 信号、spi 从机等,则接收比特撞击的东西可能会更加困难。数字逻辑只有零和一状态(以及模拟中的 x 和 y 和 z,和现实生活中的 z)复杂的协议只不过是零和一状态串联或并联或两者兼而有之。

      从技术上讲,如果您具备采样率和处理能力,则可以使用 gpio 执行所有这些以及更复杂的串行协议。

      【讨论】:

        猜你喜欢
        • 2016-04-26
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        • 2012-09-03
        • 2014-04-06
        • 1970-01-01
        • 1970-01-01
        • 2013-12-26
        相关资源
        最近更新 更多