串口输出打印数据
文章目录
- 串口输出打印数据
- 1,什么是串口通信
- 2,串口通常的应用
- 3,AIstart的串口编程
- 3-1 打印数据输出
- 3-2 打印数据输出与输入
- 4,课程资源
1,什么是串口通信
在设计程序的过程中,经常要查看程序的运行状态或交互信息,上面的课程我们说到可以用指示灯的试来告诉用户程序状态,但灯只是表过一部分的信息,并不能表达全部的内容或更细的内容,还有就是灯的亮灭不能让其它的计算机或控制器明白,这时我们的计算机之间就要有一种可以相互了解交互的机制,就像我们人类的语言一样,你讲的我能听懂,我讲的你能听懂一样。
这节课我们就来学习计算机之间的一种交互方式叫:串口通信
随着计算机系统的应用和微机网络的发展,通信功能越来越显得重要.这里所说的通信是指计算机与外界的信息交换.因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换.由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输.对于那些与计算机相距不远的人-机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍.在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各 CPU 之间的通信一般都是串行方式.所以串行接口是微机应用系统常用的接口。许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上,CPU 与接口之间仍按并行方式工作.
串口通信是一种串行异步通信,通信双方以字符帧作为数据传输单位,字符帧按位依次传输,每个位占固定的时间长度。两个字符帧之间的传输时间间隔可以是任意的,即传输完一个字符帧之后,可以间隔任意时间再传输下一个字符帧。
- 字符帧
字符帧由四个部分构成,分别是起始位、数据位、校验位以及停止位。起始位占1位,为逻辑0。数据位占5 ~ 8位,可配置。校验位占1位,可配置为奇校验、偶校验、无校验;配置为无校验时字符帧不包含校验位;配置为奇校验时,数据位中逻辑1的个数为奇数时,校验位的值为逻辑0,否则为逻辑1;配置为偶校验时,数据位中逻辑1的个数为偶数时,校验位的值为逻辑0,否则为逻辑1。停止位占1/1.5/2位,可配置,停止位的值为逻辑1。常用的字符帧格式如下图1.1所示,1位起始位、8位数据位、1位校验位、1位停止位。
- 波特率
字符帧是按位依次传输,波特率即传输字符帧时的位速率,单位为bit/s。通信双方要使用相同的波特率,常用的波特率如9600、115200。
- UART
UART是通用异步收发器(Universal Asynchronous Receiver/Transmitter)的简称,它是设备实现串口通信的核心部件。UART由发送器、接收器、波特率发生器组成,发送器由发送保持寄存器、发送移位寄存器、控制逻辑构成,接收器由接收保持寄存器、接收移位寄存器、控制逻辑构成。发送数据时,应用程序将字节数据写入发送保持寄存器,发送移位寄存器每次向右移动一位,将数据一位一位发送出去。接收数据时,每接收一位数据后,接收移位寄存器向左移动一位,直到接收一个字节数据为止,应用程序通过读取接收保持寄存器来获取接收的字节数据。波特率发生器用于产生接收和发送数据时所使用的波特率。
2,串口通常的应用
串口在我们的学习应用中,可以有多种方式,比如主板直接GPIO间的输出输入,或通过蓝牙,wifi模块,RS232模块,RS485模块再进行转发,都是可以的。
UART进行串口通信使用TTL电平。5V工作电压的MCU,使用0 ~ 0.5V表示逻辑0,2.5V ~ 5V表示逻辑1;3.3V工作电压的MCU,使用0 ~ 0.5V表示逻辑0,2.5V ~ 3.3V表示逻辑1。
注:通常5V的MUC不能与3.3V的MCU直接连接。
两个MCU进行串口通信时的硬件连接示意:
如上我们可以知道,通常串口通信只要两根线交叉连接就可以了,加上一个GND共地,但有时为了电平统一,我们在学习中通常带上供电端,那么就是5V-GND-TX-RX,这也是为什么你看到齐护的硬件中总是喜欢用4根线的原因,不但有很多传感器这样用,比如IIC的通信,超声波传感器等,当然也有很多是单线的。
3,AIstart的串口编程
在主控上通常我们把数据通过串口打印回我们的软件,方便查当数据,或通过其它的IO传送出去给其它的主控读取交互。
这节课我们先来学习如何把数据传回到我们计算机中,下节课再学习别的方式。
3-1 打印数据输出
AIstart 掌机 |
如下程序,当按键上下对应按下时,灯会亮或灭,对应的串口会把信息传回到电脑(软件右下角),注意波特率要调为115200,主控默认的串口交互用的是这个。
程序中我们看到有一个0.2秒的延时,这时防按键盘按下时打印速度多次重复,因为计算机的扫描速度是超快的,远超过我们的人类的感知,所有在应用开关时要注意这个问题,你也可以测试一下去除这个延时会发生什么。
3-2 打印数据输出与输入
AIstart Q1 |
上面我们介绍上将数据传出去,下面的方法是用软件的输入0-1来控制我们板上的灯。当串口输入1时,灯亮,当输入0时灯灭,实现在人机交互。
注:串口中输入的是字符串类型的,所以我们用了一个字符串块进行类型转换。对比的数据类型必须是同一类型。
输入0或者1点击发送,可以控制LED的开或者关。
4,课程资源
课程程序下载:【4串口打印数据】