串口通信的接收与发送 串口通信

今天给大家介绍一下串口通信,以及相应的接收和发送串口通信的知识点 。希望对你有帮助,也别忘了收藏这个站点 。
串口是什么意思?串口是使用串行通信的扩展接口 。
串行接口简称串行口,也叫串行通信接口或串行通信接口,是一种采用串行通信方式的扩展接口 。串行接口是指数据逐位的顺序传输 。
其特点是通信线路简单,只需要一对传输线就可以实现双向通信,大大降低了成本 。特别适合远距离通信,但传输速度较慢 。
串口的应用;
常用的串口有9针串口和25针串口 。当通讯距离较近(12m)时,标准RS232口(RS422,RS485较远)可直接用电缆连接 。
如果距离较远,则需要连接调制解调器或其他相关设备 。最简单也是最常用的方法是三线连接,即接地连接、数据接收连接和数据发送连接 。下面涉及到最基本的连接,就是RS232直接连接 。
串行端口通信(1)人类存在于世间,交流必不可少 。交流使人类能够相互理解,传递信息,提高生活质量 。但也需要单片机,否则单机无法形成系统,发挥更大的作用 。只有单片机和外围设备相互传递信息,相互反馈,才能有一个完善的系统 。发明了串行通信 。让我们了解一下串行通信(uart) 。
为了更好的理解串口通信,在介绍之前,我们先来看看一些概念来补充一下知识,了解一下uart的工作原理 。
串行通信有两种,一种是异步串行通信,另一种是同步串行通信 。
【串口通信的接收与发送 串口通信】异步串行通信:异步串行通信是指以一个字符(包括特定的附加电位)为数据传输单位的串行数据传输,发送方传输的字符之间的间隔不一定,其特点是数据段传输不规则 。
同步串行通信:所谓同步通信,是指发送方和接收方的时钟信号的频率和相位在约定的通信速率下始终保持一致(同步),以保证双方在发送和接收数据时具有完全一致的时序关系 。
两种串行通信的唯一区别是时间 。发送字符时,异步可以在不同的时间间隔发送,同步只能在固定的时间间隔发送 。
波特率:波特率表示每秒传输的二进制位数,是衡量数据传输速率的指标 。用单位时间内载波调制状态变化的次数来表示 。
相互通信的甲乙双方必须具有相同的波特率,否则无法成功完成串行通信 。
单片机有一个全双工串行通信端口 。全双工UART(通用异步收发器)的一个串行I/O口用于实现单片机之间或单片机与微型计算机之间的串行通信;片内振荡器和时钟产生电路、定时晶体和微调电容需要外接 。最佳振荡频率为6m-12m 。引脚rxd (p3.0)和txd (p3.1)与串行通信相关 。您可以设置波特率 。
串行端口通信与三个寄存器相关,即:
该寄存器中只有SMOD位与串行端口通信相关 。系统复位默认为SMOD=0 。当产生波特率为52的MCU定时器2时,波特率不受SMOD的影响 。使用定时器1产生波特率时,如果没有设置,默认为0,波特率正常 。设为1时,波特率加倍 。
串行端口是一个10位通用异步接口 。发送或接收一帧数据信息是10位,包括一个起始位“0”,8个数据位和一个停止位“1” 。发送数据:数据从TXD端口输出 。当数据写入发送缓冲器SBUF时,发送器开始发送 。发送一帧数据后,设置中断标志TI=1,申请中断,通知CPU可以发送下一帧数据 。接收数据:首先使REN=1(允许接收数据),串口接收来自RXD的数据 。当采样从1跳到0时,确认是起始位“0”,然后开始接收一帧数据 。当接收到一帧数据时,设置中断标志RI=1,申请中断,通知CPU从SBUF取出接收到的数据 。
溢出率就是溢出频率 。只要计算出定时器每次溢出所需的时间t,溢出率为1/t,计算出波特率为9600bps而没有波特率加倍(SMOD=0)时如何分配计数器 。在这里,因为波特率需要非常准确,否则通信会出错 。如果采用定时器工作模式1,采用手动过载,误差会很大,因为进入中断功能需要时间,累计时间会有误差 。所以这里我们用的是2,8位自动重装的工作模式 。计数器自动重新加载,无需人工干预,减少了错误 。
根据上面的公式,如果波特率不加倍,SMOD=0,工作模式2,那么就可以计算出n=8,波特率=9600,x=253,十六进制fd 。
示例1是原封不动地发送接受的数据 。采用查询方式,不需要开通串口中断和中断功能 。只要一直查询ti和ri的值,就知道数据发送和接收了 。
如有撤例1,不做详细评论 。
在串行通信中,模式1是最常用的,所以要仔细理解模式1 。串行数据不是一位一位处理的,处理了一个52单片机的模块 。只要知道接收一段数据会造成接收中断,就应该设置为0 。如果发送一条数据会造成传输中断,也应该设置为0 。把自己设为0,数据就OK了 。下一篇文章将介绍另外三种方式,请注意 。


推荐阅读