UART波形分析

  经常遇到初学者,对单片机串行通讯出了问题不知道如何办的情况。其实最有效的调试方法是用示波器观察收发数据的波形。通过观察波形可以确定以下情况:

1、数据是否接收或发送;

2、数据是否正确;

3、波特率是否正确;

一、串行数据的格式

  异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1 位,数据位可以是5、6、7、8位,停止位可以是1、1.5、2位。起始位是一个值为0的位,对于正逻辑的TTL电平,起始位是一位时间的低电平;停止位是值为1的位,对于正逻辑的TTL电平,停止位是高电平。对于负逻辑(如RS-232电平)则相反。对于数据0xAA, 8位数据位、1位停止位传输时,它在信号线上的波形如图1(TTL电平)和图2(RS-232电平)所示。

图1、TTL电平的串行数据帧格式(0xAA)

图2、RS-232电平的串行数据帧格式(0xAA)

二、 根据波形图计算波特率

图3 波特率计算示意图

如图3,其中灰色线是示波器的时间分度线,此时假设是200ms/格。可以看了,第一个字节的10位(1位起始位,8位数据位和1位停止位)共占约1.05ms,这样可计算出其波特率约为:

10bit / 1.05ms X 1000 ≈ 9600 bit/s

如果上图中的时间轴是100ms/格,同样可以计算出波特率应是19200bit/s。

三、根据波形图判断RS-485收发数据的正确与否

  RS-485是一种半双工的串行通讯方式,485电平芯片所以要正确接收和发送数据,必需保证控制信号和数据的同步,否则要么发送数据丢失,要么接收数据可能丢失。

图4 RS-485的正确发送数据时序

图4中,发送控制信号的宽度基本与数据信号的宽度一致,所以能保证发送数据的正确和发送后及时转为接收。

图5 RS-485控制信号太短时的时序

图5中,由于控制信号关闭过早,则第二个字节的后两位将发送错误;

图6 RS-485控制信号太短时的时序

图6中,由于控制信号关闭过迟,使485芯片在发送数据后,不能及时转到接收状态,此时总线若有数据过来,则本单元将不能正确接收。

时间: 2024-08-01 00:03:06

UART波形分析的相关文章

通过波形分析方法调试UART数据收发

摘  要:本文通过对异步串行数据格式的分析,阐述通过波形分析方法调试UART数据收发的原理和方法. 经常遇到初学者,对单片机串行通讯出了问题不知道如何办的情况.其实最有效的调试方法是用示波器观察收发数据的波形.通过观察波形可以确定以下情况: 是否有数据接收或发送: 数据是否正确: 波特率是否正确: 一.串行数据的格式 异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1 位,数据位可以是5.6.7.8位,停止位可以是1.1.5.2位. 起始位是一个值为0的位,所以对于正逻辑的TTL电平

UART

A Universal Asynchronous Receiver and Transmitter (UART) in Exynos 4412 SCP provide four independent Exynos 4412 SCP 的UART提供了4个异步串口通道(ch0~3).还提供的ch4专用通道给GPS.channels with asynchronous and serial input/output (I/O) ports for general purpose (Ch0 to 3)

[tty与uart]1.Linux中tty框架与uart框架之间的调用关系剖析

转自:http://developer.51cto.com/art/201209/357501_all.htm 目录 在这期间有一个问题困扰着我,那就是来自用户空间的针对uart设备的操作意图是如何通过tty框架逐层调用到uart层的core驱动,进而又是如何调用到真实对应于设备的设备驱动的,本文中的对应设备驱动就是8250驱动,最近我想将这方面的内容搞清楚. 在说明这一方面问题之前我们先要大致了解两个基本的框架结构,tty框架和uart框架. 1.tty框架 在linux系统中,tty表示各种

嵌入式Linux裸机开发(七)——UART串口通信

嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER, 它用来传输串行数据.发送数据时, CPU 将并行数据写入UART,UAR按照一定的格式在一根电线上串 行发出:接收数据时, UART检测另一根电线的信号,将串行收集在缓冲区中, CPU 即可读取 UART 获得这些数据. 在 S5PV210中, UART提供了 4 对独立的异步串口I/O端口,

UART基础知识【转载】

1.UART原理说明 发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出:接收数据时,UART检测另一根电线上的信号,串行收集然后放在缓冲区中,CPU即可读取UART获得这些数据.UART之间以全双工方式传输数据,最精确的连线方法只有3根电线:TxD用于发送数据,RxD用于接收数据,Gnd用于给双发提供参考电平,连线如下: UART使用标准的TTL/CMOS逻辑电平(0~5v.0~3.3v.0~2.5v或0~1.8v)来表示数据,高电平表示1,低电平表示0.为了

(三) UART 串口通讯

UART  : university asynchronous receiver and transmitter UART  // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏,无法获得设备的实事数据信息,所以可以通过 UART 串口和超级终端相连,打印嵌入式设备输出信息.也可以通过串口跟踪和调试. 比如设备: 网络路由器.交换机通过串口配置, GPS接收器通过串口输出GPS接收的数据. 1.异步通信技术:发送和接收方没有同步时钟,只有数据线,但是协商好了协议,(固定频率

Tiny4412之串口(Uart)驱动编写

一:tiny4412串口驱动编写 1.串口通信简介 串口通信指串口按位(bit)发送和接收字节,串口通信的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线 接收数据.它很简单并且能够实现远距离通信.比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2 米:而对于串口而言,长度可达1200米. 串口通信所采用的通信协议为RS-232,RS-232通信方式允许简单连

linux下uart应用编程

目的:在用户空间通过读写uart设备文件,控制uart串口发送和接收数据. 在用户空间设置uart波特率.奇偶校验使能等操作是通过termios结构体和termios库函数完成,需要在应用程序中包含termios.h头文件. 一.termios结构体定义 #define NCCS 17 // 控制字符数组的长度. struct termios { unsigned long c_iflag; // 输入模式标志 unsigned long c_oflag; // 输出模式标志 unsigned

采用FPGA实现UART转SPI

应用笔记 V1.1 2015/2/10 采用FPGA实现UART转SPI ? 概述 ? 本文提供了实现UART转SPI的Verilog代码的功能描述.这份笔记将介绍UART和SPI的基本知识,代码设计的基本思路,以及代码的具体实现及其描述.本程序的具体功能在于配合AD9512_Serial_GUI完成AD9512寄存器的配置,包括读及写过程. 修订历史 以下表格展示了本文档的修订过程 日期 版本号 修订内容 2015/02/08 V1.0 初始版本,通过实际验证 2015/02/10 V1.1