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

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

今天给大家介绍一下串口通信,以及相应的接收和发送串口通信的知识点。希望对你有帮助,也别忘了收藏这个站点。

串口是什么意思?

串口是使用串行通信的扩展接口。

串行接口简称串行口,也叫串行通信接口或串行通信接口,是一种采用串行通信方式的扩展接口。串行接口是指数据逐位的顺序传输。

其特点是通信线路简单,只需要一对传输线就可以实现双向通信,大大降低了成本。特别适合远距离通信,但传输速度较慢。

串口的应用;

常用的串口有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了。下一篇文章将介绍另外三种方式,请注意。

什么是串行通信协议?

通用串行通信协议

1.通用异步接收器/发射器。

UART是一种通用异步收发器,利用RxD和TxD实现异步全双工通信。为了保证可靠的通信,双方可以连接到公共地;因此,完整的UART通信至少需要3条线。

RxD是发送数据线,TxD是接收数据线,通信双方采用交叉互联。RxD接对方TxD,TxD接对方RxD。UART使用标准的TTL/CMOS电平(0~5V、0~3.3V、0~2.5V、0~1.8V)来表示数据,高电平表示1,低电平表示0。为了增强抗干扰能力,增加传输长度,TTL/CMOS电平可以转换成RS232电平逻辑电平,3~12V表示0,-3~-12V表示1(RS232。

1)UART平时处于空空空闲状态和逻辑1状态。

2)发送数据时,先发送起始位,即TxD被下拉并保持在1位。接收器检测到起始位的下降沿并等待1.5位后,开始逐位检测数据。

3)发送数据,一帧UART数据可以是5、6、7、8位等。,通常是8位,一个字节。数据传输是先发送低位,然后依次发送,直到最高位。

4)可以使用0或1的奇偶校验位,奇偶校验位可以是奇校验,也可以是偶校验。奇数校验:数据加校验位中1的个数为奇数;偶数奇偶校验:数据和奇偶校验位中1的数量是偶数。

5)最后,停止位(可以是1、1.5和2位)将数据线恢复到空空空闲状态。

一位时间由波特率决定。在UART通信中,波特率(一秒钟传输的符号数)等于比特率(一秒钟传输的字符数),双方使用约定的波特率进行通信。常见的波特率有4800、9600和115200。

2.I2C

与UART不同,I2C是一种同步半双工通信协议。I2C使用两条双向数据线SCL和SDA进行通信。同时,为了支持电路和逻辑,需要开漏输出和上拉电阻。常见的上拉电阻有1.8K、4.7K、1.8K;低速时,为了降低功耗,可以使用10K上拉电阻,1.8K上拉电阻的性能最好,可以满足高速应用的需要。I2C常见的通信速率有正常:100K,快速:400K,高速:3.4M I2C从机的最大数量受从机地址和最大总线电容400pF的限制。I2C的数据帧格式如下:

起始位| 7从机地址| 1读写方向位(0写,1读)| 1回复| 8数据1| 1回复1|。..| 8位数据N | 1位无响应N |停止位。

空空空闲状态:空空空闲时,SCL和SDA都为高电平。此时各器件的输出场效应晶体管处于截止状态,释放总线,总线信号被上拉电阻上拉至高电平。

开始:当SCL为高时,SDA有一个下降沿。

数据传输:数据传输以字节为单位,第一个字节表示从机地址+读写方向,后续数据格式由设备自己定义。在数据传输中,SDA只能在SCL为低电平时改变,数据在SCL的上升沿进行采样。

在发送每个字节后,接收器必须发回一个确认信号ack,但在发送完最后一个字节后,它将发回一个非确认信号NACK。

停止停止:当SCL为高时,SDA有一个上升沿。

握手机制:I2C提供了握手机制。当主人的速度太快,让从者无法满足快速通信时,从者可以拉下SCL与主人握手,从而延长SCL低的时间。(SCL的高电平由所有设备发出的最短高电平决定,而低电平由最长低电平决定)。

仲裁:SDA是线与逻辑,所以只要一端输出低,总线就是低,所以是低级优先仲裁。仲裁规则是派出大量低级主机获得总线权。

由于I2C通信的方向性,一次通信无法改变数据流的方向,因此在读取过程中需要一个伪写过程:

dummy写完之后重新启动,然后把数据流的方向改为read,就可以读取从数据内容了。

第三步:能量

SPI是一种同步全双工串行通信协议。SPI定义了四条信号线:

SCK:时钟线,由主持人提供

MISO:主要入口和出口

MOSI:进进出出。

SS:电影选择。

芯片选择信号是可选的,因此通信至少需要3条信号线。SPI在时钟的上升沿进行双向数据交换,输出时主机也会接收从机的数据。在设计中,主机和从机都需要一个移位寄存器。SPI不区分读写方向,只交换数据。如果你想读,你也必须写来交换数据。

SPI根据时钟极性和时钟相位定义了四种通信模式:

时钟极性cpol: 0:空/[k0/]空闲SCK为0,1:空空闲SCK为1。

时钟相位cpha: 0:数据在第一个时钟沿采样(可能是上升沿,可能是下降沿,与CPOL有关),1:数据在第二个时钟沿采样(可能是上升沿,可能是下降沿,与CPOL有关)。

如果在上沿采样,数据将在下沿输出,因此可以稳定地采样数据。

什么是串行通信协议,串行通信协议有哪些?

什么是串行通信?学术上的解释是通过总线在某个时间点连续发送一位数据的方法。随着弓箭手频频射箭,嗖,嗖,嗖。...

什么是串行通信协议?说白了就是串行通信使用的协议传输方式。

有多少种串行通信协议?串行通信协议包括系统间协议和系统内协议。

系统间协议:用于与两个不同设备通信的系统间协议。就像计算机和微控制器套件之间的通信一样。通过内部总线系统进行通信。常用的有UART协议、USART协议和USB协议。

内部系统协议:内部系统协议用于通信电路板上的两个设备。当使用这些系统内协议时,我们将扩展微控制器的外围设备,而不使用系统内协议。使用系统内协议将增加电路复杂性和功耗。使用系统内协议,降低了电路复杂度和功耗,降低了成本,数据访问非常安全。常见的协议包括I2C协议、SPI协议和CAN协议。

UART代表通用异步发送器和接收器。UART协议是具有两种有线协议的串行通信。数据电缆信号线标记为Rx和Tx。串行通信通常用于发送和接收信号。它通过串行端口而不是脉冲发送和接收数据。UART接收数据字节并按顺序发送位。

在嵌入式系统中,USAT协议通常被用作单片机的外设。一般来说,TTL电平直接取自芯片引脚;间接芯片转换的可能性是RS232级别。详情请参考:串行通信标准。

UART是一种半双工协议。半双工是指具有发送和接收数据的功能,但不能同时进行。大多数控制器在电路板上都有硬件UART。它使用数据线来发送和接收数据。它有一个起始位,一个8位数据和一个停止位,表示8位数据从高到低传输一个人的信号。比如:电子邮件、短信、对讲机、工业物联网传输设备串口服务器。

USART代表通用同步和异步发送器和接收器。这是一种双线协议的串行通信。数据电缆信号线标记为Rx和TX。该协议用于逐字节发送和接收数据和时钟脉冲。这是一个全双工协议,这意味着同时以不同的板速度发送和接收数据。不同的设备通过该协议与微控制器通信。比如电信。

USB代表通用串行总线。同样,它也是双线协议的串行通信。数据线和信号线标记为D+和D-。该协议用于与系统外设通信。USB协议用于串行地向主机和外围设备发送和接收数据。USB通信需要基于系统功能的驱动软件。USB设备可以在总线上传输数据,而无需来自主机的任何请求。现在,大多数设备都使用这种技术通过USB协议进行通信。像电脑一样通过USB与ARM控制器通信。USB以不同的模式传输数据。第一种是10 kbps到100 kbps的慢速模式;第二种是全速模式下500kbps到10mbps,高速模式下25mbps到400Mbps。USB线的最大长度是4米。

比如:鼠标、键盘、集线器、开关、笔驱动。

I2C代表内部集成电路。I2C只需要两根线就能把所有外设连接到微控制器上。I2C只需要两根线SDA(串行数据线)和SCL(串行时钟线)就可以在设备之间传输信息。它是从机通信协议的主机。每个从站都有一个唯一的地址。主设备发送目标从设备的地址和读/写标志。该地址与该器件开启的所有从器件相匹配,其它从器件处于禁用模式。一旦地址匹配,主机和从机将进行通信并发送和接收数据。发送方发送8位数据,接收方用1位回复进行回复。通信完成后,主站发出停止条件。

I2C总线是由飞利浦半导体公司开发的。它最初的目的是提供一种简单的方法来连接CPU和外围芯片。嵌入式系统中的外围设备通常作为内存映射设备连接到微控制器。I2C只需要两根线就能把所有外设连接到微控制器上。这些活动线路称为SDA和SCL,是双向的。SDA线是串行数据线,而SCA线是串行时钟线。

I2C上拉电阻:

为什么在I2C SCL和SDA线路中使用上拉电阻?

SDA和SCL线都是开漏驱动器。

它可以将输出拉低或拉高。

为了使线路为高电平,必须提供一个上拉电阻。

SPI代表串行外设接口。它是摩托罗拉开发的串行通信协议之一。有时,SPI协议也称为4线协议。它需要四根电线MOSI,米索,SS和SCLK。用于主机和从机之间通信的SPI协议。主机首先使用该频率来配置时钟。然后,主机通过拉动按钮来选择特定的从机进行通信。选择一个特定的设备,并启动主机和特定从机之间的通信。主机一次只能选择一个从机。这是一个全双工通信协议。在位传输的情况下,不限于8位字。

CAN代表控制器局域网。这是一个串行通信协议。它需要两排CAN高(H+)和CAN低(H-)。它是由Robert bosh公司于1985年为车载网络开发的。它基于面向消息的传输协议。

70年代是汽车厂商开始推出新功能的时代,比如防抱死制动、空调制、档位控制、中控锁等等。这些功能确保了额外的布线和复杂的设计,从而增加了成本和风险。为了克服这些问题,robert bosch在20世纪80年代引入了CAN协议。这种串行通信协议在1993年由ISO11898进一步标准化。正是CAN协议彻底改变了先进传感器之间的通信。

CAN协议常用于汽车、飞机和医疗系统中的电子网络。USR-CanET200是一种CAN转以太网设备,是一种常见的产品。

什么是串行通信?

串行接口是将从CPU接收的并行数据字符转换成连续的串行数据流并发送出去,同时将接受的串行数据流转换成并行数据字符并提供给CPU的设备。

一般来说,完成这一功能的电路称为串行接口电路。

串行端口逐位发送和接收字节。虽然比逐字节并行通信慢,但串口可以用一条线发送数据,用另一条线接收数据。简单且能实现远距离通信。

扩展数据:

串行通信的结构:

串行通信是指外设与计算机之间通过数据信号线、地线和控制线逐位传输数据的一种通信方式。

这种通信方式使用的数据线较少,在远距离通信中可以节省通信成本,但其传输速度低于并行传输。

串口是计算机上非常常见的设备通信协议。大多数计算机(不包括笔记本电脑)包括两个基于RS-232的串行端口。串口也是仪器常用的通信协议。

许多GPIB兼容器件也有RS-232端口。同时,串行通信协议也可以用来获取远程采集设备的数据。

百度百科-串行通信

串口通讯和串口通讯有什么区别?

首先,串口通信和串口通信的概念是不一样的。

串行通信的概念非常简单。串行端口逐位发送和接收字节。从CPU接收的并行数据字符可以转换成连续的串行数据流并发送出去。同时,接收到的串行数据流可以转换成并行数据字符并提供给CPU设备。

串行通信技术是指通信双方一点一点进行通信,观察时序的一种通信方式。在串行通信中,数据是逐位传输的,每个数据占用固定长度的时间,这样就可以用很少的通信线路完成系统之间的信息交换。

第二,串口通信和串口通信的特点不同。

串行通信是指外设与计算机之间通过数据信号线、地线和控制线逐位传输数据的一种通信方式。这种通信方式使用较少的数据线,在远距离通信中可以节省通信费用。

显然,串行通信节省了传输线。尤其是在长途通信中,这个特性尤为重要。这也是串行通信的主要优势。

第三,串口通信和串口通信属于不同的类型。

串行通信是指逐位发送和接收数据,包括I2C和SPI。

串口通信是一种通信方式,低于以太网方式、红外方式、蓝牙方式。

百度百科-串行通信

百度百科-串行通信

以上是串行通信的介绍,以及串行通信的接收和发送。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。

以上就是由优质生活领域创作者 嘉文社百科网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~