UART是通用异步收发机的缩写。听起来的,对吗?这是电子通信协议的一个例子:系统和设备如何互相传输和接收数据。

请稍等,我帮您连接设备。从照片在这里.
事实证明,UART是一个涉及大规模集成电路的电路物理部分,本质上是一个平行和串行数据线之间的转换器。也有“独立”的UART芯片,但现在它们更常出现在微控制器中。UART通过并行数据总线与微控制器或计算机系统的其余部分通信,并将其转换为串行数据流,从而可以通过单线(或可能的IR或蓝牙信号)传输到另一个UART设备。并行数据传输比串行快得多,但在硬件和功耗方面更昂贵,所以在嵌入式系统等情况下,设备之间的串行数据线通常是一个理想的折衷方案。一些UARTs有缓冲,以帮助协调平行和串行数据线之间的接收数据。
在基本的方法中,UART是一个双线系统:TX(数据传输)和RX(数据接收)。然而,通常还需要电源线和地线。这与其他协议有一点不同,因为没有时钟信号在接收器之间传输。这很好,因为它节省了数据空间。然而,发射机和接收机都有内部时钟,这些内部时钟频率需要提前指定,并相互协调,以便进行适当的通信和同步。
下面是一个例子,说明了平行数据线和串行数据线的区别。注意,串行接口只显示了一根线,但是RX需要另一根线来发送数据给TX在这里.

UART使用所谓的“开始位”和“停止位”来表示逐位数据包的开始和结束,而不是使用传输的时钟信号进行数据收集。这些位不携带任何发送/接收数据。信号线通常在逻辑高电平空闲,所以开始位通常是逻辑低电平,停止位通常是逻辑高电平。当接收器检测到电压下降,它知道开始收集数据。在数据流结束时,信号被驱动回一个高逻辑级别,以指示数据包的结束。
还有所谓的奇偶校验位,在传输之前添加到数据包中。奇偶校验位有两种:奇偶校验位和偶偶校验位。如果在数据传输中有偶数数量的逻辑高位来强制在开始位和停止位之间有奇数数量的高级逻辑位,那么奇奇奇偶校验位将处于逻辑高电平。相反,如果在数据传输中有奇数数量的逻辑级高位,则在开始位和停止位之间有偶数数量的逻辑级高位,则偶数奇偶校验位将处于逻辑级高。这是错误保护的一种松散形式,因为接收UART将期望在每个数据包的数据传输中有奇数或偶数数量的逻辑级高比特。根据具体情况,数据位在传输和改变状态时可能会损坏。例如:如果使用偶数奇偶校验位系统,逻辑级高值的数量是奇数,并且偶数奇偶校验位是高的,那么就会检测到错误,并确定数据损坏。不幸的是,UART只会做出这个判断,而不能发现哪些位被损坏了。
UART的另一个重要参数称为波特率。这是以每秒比特为单位传输/接收数据位的速率。1普通波特率为9600比特/秒,即1/9600秒/位。通信的两个UARTs的波特率必须在10%以内。
下图展示了整个数据包(也称为帧)的思想。从图片在这里.

我们对UART的研究的最后一站是讨论接收机如何从发射机采集数据,因为它们不共享一个共同的时钟信号。接收机和发射机将以相同的内部时钟频率工作,但它们在逻辑电平高低之间的切换状态几乎保证是失相的。这意味着在接收端时钟周期的任何时候,发送端开始位的下降边缘都可能发生。由于这个原因,接收器通过波特率对传输进行采样,以接近比特周期中点的位置。当时钟周期或多或少不同步时,在中点附近采样有助于防止在上升/下降边缘附近采样。例如:让我们考虑一个以传输波特率的16倍采样的接收器。当检测到起始位时,接收端将等待8个时钟周期,以接近起始位的中点。然后,接收机将等待16个时钟周期后开始数据采集,因为它将接近第一个数据位的中点。请注意,采样率越高,钻头的中点越接近,功耗越高。

现在,让我们看看一些UART信号使用数字发现和波形逻辑分析仪。我正在做一个传感器系统类的项目,我的团队想使用PmodGPS使用GPS数据。使用Arduino Uno和Digilent提供的PmodGPS库,我能够编写微控制器程序,在串行监视器上显示GPS数据(安装如图所示)。然而,正如串行监视器上的打印声明告诉我的那样,GPS传感器没有连接到任何卫星。为了确保传感器正常工作,我使用了Digital Discovery的逻辑分析仪来查看每个管脚上发生了什么,并确保它至少是正常工作的,因为它位于西雅图市中心或UW Bothell的一个巨大的砖砌建筑内,所以没有连接。
下面是Logic Analyzer窗口的屏幕截图,并为UART总线选择参数。有一个总线的所有引脚,除了地面和一个单独的UART总线。右键单击图像并在新选项卡中打开以查看更大的视图。

接线方式如下:DIN4为3DF, DIN3为RX, DIN2为TX, DIN1为1PPS, DIN0为VCC。正如预期的那样,VCC是连续的逻辑级别高,RX是连续的逻辑级别高,因为Arduino没有向PmodGPS发送数据,而TX实际上正在发送数据。3DF引脚指示用户位置定位的状态。当模块有一个固定的固定(2D或3D),这个引脚保持低,如果模块无法得到一个固定,那么引脚将切换每秒钟。我调整了时间刻度轴,发现是后者:3DF每秒钟都在切换。此外,1PPS引脚提供了与GPS时间同步的每秒一个脉冲输出。因为3DF引脚每秒钟都在切换,而1PPS引脚根本没有切换,我知道PmodGPS传感器正在工作,但在当前位置没有收到卫星信号。下面是逻辑分析仪窗口的屏幕截图波形随着时间向外缩放,可以看到3DF切换。右键单击图像并在新选项卡中打开以查看更大的视图。

的数字发现和逻辑分析仪波形帮助解决了这个问题PmodGPS传感器还在工作。我希望这对你和我来说都是有益的;现在我得想办法吸引卫星的注意。感谢你的阅读!

有用的信息,谢谢你分享这么好的信息。
我很高兴你发现这篇文章很有帮助!感谢你的阅读!
好文章!Java已经成为大型商业应用程序的主要编程语言之一。
非常有用的. .
非常有用的内容。谢谢你的分享。