示波器读取SCI串口数据

240 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

示波器读取SCI串口数据

串口

    通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是一种异步收发传输器。UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。

UART通信协议

    UART作为异步串口通信协议的一种,工作原理是将传输数据的每一个字符一位一位地传输。其中每一位(bit)的意义如下:

    起始位:先发出一个逻辑“0”的信号,表示传输字符开始。

    数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。

    奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以次来校验数据传送的正确性。

    停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率也就越慢。

    空闲位:处于逻辑“1”状态,表示当前线路上没有数据传输。

image.png

波形向数据转换原则

  • 空闲位是高,起始位是低,然后是串口的八位数据,然后停止位是高。最开始以低电平表示起始。 在这里插入图片描述

如图第一帧数据的读法为:0b01010101;

  • 数据从低位往高位开始发送,所以读完之后要将8位数据位重新从后向前排列。 所以上面第一帧数据实际为:0b10101010=0xAA;

实例讲解

7e4f001a4d5b4236a717dae28f53bab4.png 上图中有四帧数据,依次分别读作:

0b10000010(0x82);

0b01000010(0x42);

0b11110010(0xF2);

0b11010010(0xD2);

这并不表示它本身的数据,但将每个数据重新从后向前排列之后:

0b01000001(0x41)='A'

0b01000010(0x42)='B'

0b01001111(0x4F)='O'

0b01001011(0x4B)='K'

这样就用示波器读出了本来发送的数据。