Embedded MCU-一般来说,如何从TX引脚读取数据?

Embedded MCU-一般来说,如何从TX引脚读取数据?,embedded,microcontroller,gpio,Embedded,Microcontroller,Gpio,我有一块SAML21J18A板(来自Atmel,带有AVR处理器),还有一块SIM908开发板。这是技术规格,但我想回答一个非常普遍的问题: 当您将一个MCU的GPIO引脚连接到另一个外设上的“TX”引脚时,从该TX引脚读取数据的常见方式是什么?我必须使用I2C协议吗?我是否必须阅读GPIO的状态?甚至可以用GPIO读取复杂数据,而不仅仅是真或假状态吗 感谢您提前回答,我对这个问题有点迷茫。如果pin标记为“TX”,特别是如果有相应的“RX”pin,那么它很可能是UART。I2C引脚通常标记为数

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

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

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

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

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


如果此TX引脚确实是UART,则应将其连接到微控制器UART上的RX引脚。

它很可能是已应答的UART引脚。使用gpio引脚可以做什么?如果不是所有的串行协议(只有几个引脚)、uart、spi、i2c、mdio等,您可以使用所谓的位碰撞来完成大部分工作。对于输出管脚,您通常必须使用某种类型的内部计时器来计时状态更改之间的持续时间,以便在部件外部正确计时过渡,以满足该协议所需的任何计时规范。它让人欣赏硬件为您所做的事情,而且在硬件中实现起来很简单(尤其是当您希望多个不同的硬件同时运行时),但在软件中实现起来更困难,因为它可能会消耗大量cpu周期,并且不总是精确计时。如果不能足够快地采样和处理状态变化,接收比特碰撞的数据可能会更困难,例如接收uart信号、spi从机等。数字逻辑仅为零和一状态(模拟中为x、y和z,现实生活中为z)。复杂协议只不过是串联或并联的零和一状态,或者两者兼而有之


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

SIM908使用UART协议与主机通信。AT命令是模块理解的语言。调制解调器使用GSM_TX引脚向主机发送响应,而GSM_RX引脚用于从主机接收命令,在本例中,主机是SAM板。您可能还会注意到电路板上的GPS_TX和GPS_RX引脚

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


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

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