关于串口通信介绍

串口通信:

通信有串行通信和并行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。

并行通信:通常是将数据字节的各位用多条数据线同时进行传送。

  • 优点:控制简单、传输数据快。
  • 缺点:由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。

在这里插入图片描述

串行通信:使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机,计算机与外设直间的远距离通信。

  • 优点:传输线少,长距离传送时成本低。
  • 缺点:数据的传送控制比并行通信复杂。

在这里插入图片描述

串行通信又可分为异步通信同步通信

异步通信是以字符**(构成的帧)为单位,进行传输,字符与字符之间的间隙(时间间隔)**是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“ 位间隔 ”的整数倍的关系,但同一字符内的各位之间的距离均为“ 位间隔 ”的整数倍。

在这里插入图片描述

异步通信是一种很常用的通信方式(效率较低),异步通信在发送字符时,发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接受下来。所传送地数据以字节为单位。每个字节前加上一位起始位,每个字节后面加上停止位。  优点:异步通信地好处是通信设备简单、便宜,但传输效率较低。

同步通信:

同步通信时要建立发送发时钟对接收方时钟地直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“ 位间隔 ”的整数倍,同时传送的字符间不留间隙,即保持同步关系,也保持字符同步关系。发送发对接收方的同步可以通过两种方法实现。

传输速率:

比特率是每秒钟传输二进制代码的位数。单位是:位/秒(bps)。如每秒中传送240个字符,而每个字符格式包含10位(1个起始位,1个终止位,8个数据位)这时的比特率为:

            10位 × 240个/秒 = 2400 bps

传输距离与传输速率的关系:

串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。当传输线使用每0.3m(约1英尺)有50PF的电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小当比特率超过1000bps时,最大传输距离迅速下降,如9600bps时最大距离下降到只有76m(约250英尺)

采用RS-232C接口存在的问题(电气特性):

  1. 传输距离短、传输效率低

      RS-232C总线标准受电容允许值的约束,使用时传输距离一般不要超过15米(线路条件好时也不要超过几十米)。最高传送速率为20kpbs。

      双绞线会形成分布电容,又叫寄生电容,受电气特性自动产生,因为在三极管和场效应管会自动产生,所以会影响开通与关断的速度。

      电容:两个导体产生,与两个导体间的距离成反比,与导体的面积成正比

  2. 有电平偏移

      RS-232C总线标准要求收发双方共地。通信距离较大时,收发双方的地电位差别较大。在信号地上将有比较大的地电流并产生压降。

  3. 抗干扰能力差

      RS-232C在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中,为了提高信噪比,RS-232C总线标准不得不采用比较大的电压和摆幅。

SBUF:

  在逻辑上,SBUF只有一个,它即表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H。但在物理结构上,则有两个完全独立的SBUF,一个是发送缓冲寄存器SBUF,另一个是接收缓冲寄存器SBUF。如果CPU写SBUF,数据就会被送入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收缓冲器。即CPU对SBUF的读写,实际上是分别对访问上述两个不同的寄存器。

(收) a = SBUF;   (发)SBUF =a;

串行口工作前需要对相关寄存器进行配置,设定其工作模式:

在这里插入图片描述

  1. 设定T1的工作方式(编程TMOD寄存器);
  2. 计算T1的初值,装载TH1、TL1;
  3. 启动T1(编程TCON中的TR1位);
  4. 确定串行口控制(编程SCON寄存器);
  5. 如需串行口在中断方式工作时,需进行中断设置编程IE寄存器。

在这里插入图片描述

当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的**8位定时器方式(即方式2,且TCON的 TR1 = 1,以启动定时器)。**这时溢出率取决于TH1中的计数值。

         T1 溢出率 = fosc / { 12 × [ 256 - (TH1) ] }

在这里插入图片描述

在这里插入图片描述

fosc:外部晶振(11.0595)

自动再装:TL1、TH1的赋值。 TL1从初值开始加,加到255溢出后,会自动取TH1的初值。

产生波特率误差要为0,不能有误差!

Arduino串口通讯是指使用Arduino开发板与其他设备(如电脑、传感器、执行器等)之间通过串口进行数据交互和控制。Arduino开发板内置一个串口芯片,可以通过串口与其他设备进行通讯。串口通讯是一种简单而可靠的通讯方式,常用于各种嵌入式系统和物联网设备之间的通讯。 Arduino串口通讯通常使用以下步骤: 1. 打开串口连接:在Arduino代码中,使用Serial.begin()函数打开串口连接。该函数的参数是串口的波特率,用于指定串口通讯的速率。 2. 发送数据:使用Serial.write()函数向串口发送数据。该函数的参数可以是单个字节、字节数组或字符串。在Arduino中,字符串需要使用双引号括起来。 3. 接收数据:使用Serial.available()函数检查是否有数据可用。如果有数据可用,使用Serial.read()函数读取数据。该函数返回一个字节,可以使用类型转换将其转换为其他数据类型(如整数、浮点数等)。 4. 处理数据:根据接收到的数据进行相应的处理。例如,如果接收到的是控制指令,可以根据指令控制执行器或修改系统状态。如果接收到的是传感器数据,可以将其转换为可用的数值,并进行后续处理。 5. 关闭串口连接:在程序结束时,使用Serial.end()函数关闭串口连接。该函数无需参数。 总之,Arduino串口通讯是一种简单而可靠的通讯方式,可以实现Arduino开发板与其他设备之间的数据交互和控制。在实际应用中,需要根据具体需求选择合适的通讯协议、波特率和数据格式,以确保正确的数据传输和控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值