精华内容
下载资源
问答
  • 串口通信基本概念(一)——串行与并行通信,同步与异步通信 一、串口通信简介 串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,...

    一、串口通信简介

    串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

    串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发数据。串行通讯可以进一步分为单工、半双工和全双工三种。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。它们的主要区别在于其各自的电平范围不相同。

    二、串行和并行通信

    刚说到串口通信是通过接口进行串行通讯。那么什么是串行通讯呢?

    1 串行通信:

    串行通信:计算机与I/O设备之间,同一时刻,只能传输一个bit位的信号。传输数据按顺序依次一bit位接一bit位进行传输,通常数据在一根数据线或一对差分线上传输。

    比如,当传输1字节信息时,并行通讯有8根信号线实现同时传输,假如耗时为1T,而串行是在一根信号线上,把数据排成一行、一位一位传输,需要传8次,因此耗时为8T。因此可总结出二者的特性:

    2 并行通信:

    并行通信是和串行通信相对的数据传输的方式。

    并行通信:计算机与I/O设备之间,通过多条传输线,可以同时传输多个bit位的信号。

    • 并行通讯的效率高,但是成本高、对信号线路要求高,一般应用于快速设备之间近距离传输,譬如CPU 与存储设备、存储器与存储器、主机与打印机等都采用并行通讯。

    • 串行通讯效率较低,但是对信号线路要求低,抗干扰能力强,同时成本也相对较低,一般用于计算机与计算机、计算机与外设之间远距离通讯。

    3 串口通信和串行通信的区别

    串口通信和串行通信的区别在于:串行通信是一种概念,串口通信是一种具体的通信手段。

    串行通信是一种概念,是指一比特一比特的收发数据,相对于并行通信可同时传输多个bit位而言。包括一般的的串口通信、I2C、SPI等等。

    串口通信是外设和计算机间的一种通信手段,是相对于以太网通信等通信手段而言的。

    二者一个是一种概念,一个是一种实际的通信方式。

    三、同步和异步通信

    在设备之间传送数据,不管是同步通信还是异步通信,都是为了保证数据被正确的发送和接收,即发送方和接收方的“同步”。即接收方可以确定什么时候发送方开始或者结束发送数据以及每一个数据单位(例如bit,字符)的开始和结束的位置,这样接收方才能在正确的时间对发送方的数据进行采样,以接收正确的数据,否则接收到的数据就是错误的。

    根据“同步方式”的不同,由此分出两种同步信号得方法:
    (1)同步通信(比特位同步)
    (2)异步通信(字符间同步,字符内比特位异步)

    同步通信会利用一根额外的信号线,其实也就是时钟信号线,它往往是发送设备提供的时钟信号,发送设备和接收设备在发送设备提供的同一时钟频率下完成同步。(实际上,基本所有的并行通信采用同步通信。)

    异步通信没有额外的一根信号线用于同步,接收者和发送者使用各自的时钟信号,接收者根据与发送者按事先约定的规来确定数据发送的开始与结束以及数据单位的持续时间。例如异步串行通信中,一般接收双方会确定一致的停止位,数据位的个数、波特率的大小以及是否采用奇偶校验位。接收方可以根据这些信息推测出准确的数据采样时间以接收正确的数据。如果是同步通信则不需要这些额外的用于同步的数据位(开始位,结束位,奇偶校验位)。

    1 同步通信

    同步通信要求发送和接收双方在进行数据传输时,保持完全的同步,因此,要求发收双方必须使用同频同相的同步时钟信号。只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后在同步时钟的控制下逐位发送/接收。这样,信息传输完全可以确定传输过程中每1位的位置。因此同步通信是一种比特同步通信技术。

    如下图所示:
    在这里插入图片描述

    同步通信是一种连续传送数据的通信方式,一次通信传送一帧数据,每个信息帧用同步字符作为开始,字符间不加标识位。(这里的数据帧比异步通信中的字符帧要大得多,通常含有若干个数据字符)。当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。

    同步通信以数据帧为单位,其格式包括:同步字符+数据+校验字符CRC。

    (a)单同步数据帧结构

    同步字符数据字符1数据字符2数据字符3数据字符nCRC1CRC1

    (b)双同步数据帧结构

    同步字符1同步字符2数据字符1数据字符2数据字符nCRC1CRC1

    没有数据发送时,接收方要时刻做好接收数据的准备。在每组信息(通常称为帧)传输的开始,发送方先发送一个或两个特殊字符,该字符称为同步字符。当接收方收到同步字符,并和发送方达到同步后,就可以以固定的节奏一个字符接一个字符地发送一大块数据,而不再需要用起始位和停止位了,这样可以明显地提高数据的传输速率。同步通信更加适合对速度要求高的传输,对时序的要求很高,当然对硬件要求也更高。

    在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5~8位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,收发双方用一个时钟进行协调,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符,这样就可以确定传输中每一位的位置。接收数据时,接收方利用同步字符使内部时钟与发送方保持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,供CPU读取,直至收到结束符为止。

    2 异步通信

    异步通信是按字符帧传输的,相对于同步通信,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的,接收方并不知道数据什么时候会到达,因此接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,时间间隔可以是任意的,在一字符帧中的所有比特是连续发送的。

    发送端不需要在发送字符之前和接收端进行协调(不需要先进行比特同步)。接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。内部处理器在完成了相应的操作后,通过一个回调的机制,以便通知发送端发送的字符已经得到了回复。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的字符间同步,字符内比特位异步)

    因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。通信双方需要对采用的信息格式(字符的位数、停止位的位数、有无校验位及校验方式等)和数据的传输速率作相同的约定。接收方是在数据的起始位和停止位的帮助下实现字符传送时的同步。这种传输通常是很小的分组,比如一个字符为一组,为这个组配备起始位和结束位。所以这种传输方式的效率是比较低的,毕竟额外加入了很多的辅助位作为负载,常用在低速的传输中。

    在这里插入图片描述
    异步通信以字符为单位,其格式包括:起始位+数据+奇偶校验位+停止位。
    以起止式异步协议为例,如下图所示
    在这里插入图片描述
      起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位"开始,以"停止位"结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位低电平起始位(逻辑值0),字符本身由5-8位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿。由此就可以标志一个字符传输的起始。而根据起始位和停止位也就很容易的实现了字符的界定和同步。
      如上图中所示,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。
      
    (1)起始位:发送数据时,先发持续一个bit时间的逻辑”0”信号,表示字符传输的开始,接收端可根据起始位使自己的接收时钟与发送方的数据同步。

    (2)数据位:起始位后是数据位,异步传送规定低位在前,高位在后,数据位的位数一般可以是5~8位。

    (3)奇偶校验位:奇偶位紧跟在数据最高位之后,占用一位(也可省去)。加上这一位后,使得逻辑“1”信号的位数得到偶校验或奇校验,以此来校验数据传送的正确性。
      如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位;如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。举例来说,假设传输的数据位为01001100,如果是奇校验,则奇校验位为0(要确保总共有奇数个1),如果是偶校验,则偶校验位为1(要确保总共有偶数个1)。
      由此可见,奇偶校验位仅是对数据进行简单的置逻辑高位或逻辑低位,不会对数据进行实质的判断,这样做的好处是接收设备能够知道一个位的状态,有可能判断是否有噪声干扰了通信以及传输的数据是否同步。

    (4)停止位:数据发送完后,再发1位、1.5位、2位的高电平(逻辑”1”信号)代表停止位,表示一帧数据结束,同时为接收下一帧数据做准备。

    (5)空闲位:在没有数据发送时,即下一帧的起始位“0”到来之前,数据线保持默认的“1”状态,即由高电平来填充。

    异步通信字符帧格式总结如下表:

    逻辑信号数据位数
    起始位01位
    数据位0或15~8位
    校验位0或11位或无
    停止位11位,1.5位或2位
    空闲位1任意数量

    :位数的本质含义是信号持续的时间,故可有分数位,如停止位1.5位,1.5是它的长度,即停止位的电平保持1.5个单位时间长度。一个单位时间就是波特率的倒数,例如波特率为9600bps,则一个单位时间长为1/9600s,1.5个停止位,即停止位电平保持1.5/9600s。

    3 同步通信和异步通信比较

    (1)同步通信要求接收端时钟频率和发送端时钟频率一致;异步通信时不要求接收端时钟和发送端时钟同步。

    (2)同步通信数据传输是以字节块(多个字节)传输的;异步通信数据传输是以字符(一个字节)传输的。

    (3)同步通信传输效率高,但复杂、要求高,双方时钟的允许误差较小;异步通信传输效率低,但简单、要求低,双方时钟可允许一定误差。

    (4)同步通信的字节传输是没有间隔的发送端发送连续的比特流;异步通信字节传送的间隔是任意的,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。

    同步通信和异步通信的差异总结如下表:

    同步通信异步通信
    传送单位信息帧(由若干字符组成的数据块)字符(由若干bit组成)
    单位格式同步字符+数据+校验字符CRC起始位+数据位+奇偶校验位+停止位
    传送间隔一个数据块(信息帧)内,字符与字符间无间隔相邻两字符之间隔任意长
    时钟信号时序要求高,使用同频同相的时钟线路时序要求较低,使用各自的时钟信号
    优点效率高简单,要求低
    缺点复杂,要求高效率低(传送一个字符,要增加约20%的附加信息位)
    展开全文
  • 串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。...

    描述

    串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

    串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。

    串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;

    而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

    串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。

    串口是计算机上一种非常通用的设备通信协议。大多数计算机(不包括笔记本电脑)包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

    RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。

    串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。

    a4fc0f022c38426775b5fe52796224ed.png

    串口通信的用途

    串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。

    串口通信程序框图串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。

    串口是计算机上一种非常通用的设备通信协议。大多数计算机(不包括笔记本电脑)包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

    RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。

    打开APP阅读更多精彩内容

    点击阅读全文

    展开全文
  • 什么是计算机通信计算机通信基本原理并行与串行通信方式异步通信和同步通信 什么是计算机通信 计算机通信是指计算机个计算机之间或计算机与终端之间进行信息传递的方式。 通信并行和串行两种方式。在单片机系统...

    什么是计算机通信

    计算机通信是指计算机个计算机之间或计算机与终端之间进行信息传递的方式。

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

    计算机通信基本原理

    计算机通信的基本原理是将电信号转换为逻辑信号,其转换方式是将高低电平表示为二进制数中的1和0, 再通过不同的二进制序列来表示所有的信息。

    并行与串行通信方式

    并行通信串行通信
    并行通信通常是将数据字节的各位用多余数据线同时进行传输。如下图1所示,在8位数据总线通信系统,一次送8位数据(1个字节),将需要8根数据线。这是方式仅适合短距离数据传输,如比较老式的打印机就是通过并口方式与计算机连接。并行通信控制简单、传输速度快。由于传输线较多,长距离传送是成本高而且收发的各位同时接收存在困难。串行通信是使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机、计算机之间、计算机与外设之间的远距离通信。如下图2
    并行通信特点:并行通信控制简单、传输速度快。由于传输线较多,长距离传送是成本高而且收发的各位同时接收存在困难。串行通信特点:传输线少,长距离传送时成本低,但数据传送控制比并行通信复杂。

    请添加图片描述
    图1(并行通信方式)
    请添加图片描述
    图2(串行通信方式)

    异步通信和同步通信

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

    1、异步通信
    发送与接收设备使用各自的时钟控制数据发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
    请添加图片描述
    异步通信是一种常用的通信方式(效率较低)异步通信在发送字符时,发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束地方加上标志位,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。
    异步通信字符信息由4部分组成:起始位、数据位、奇偶校验位和停止位
    请添加图片描述

    校验位的概念:

    1. 校验位的作用是用于校验数据的正确性
    2. 校验位可有可无
    3. 校验位用于判断传输每一个字节过程中‘1’的个数,如果‘1’的个数是是偶数,是偶校验;如果‘1’的个数是奇数,则是奇校验。
    4. 校验位用来判断数据有没有错误,不能修正错误。

    异步通信还有一个概念:波特率
    波特率(bandrate),指的是串口通信的速率,也就是串口通信每秒可以传输多少个二进制位。
    如:每秒可以传输9600个二进制位,则波特率位9600。
    常用波特率有:300、600、1200、2400、9600、19200、38400、43000、56000、57600、115200
    单片机常选择9600,高速选择115200

    异步通信的特点:不要求收发时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2-3位,用于起始位。校验位和停止位,各帧之间还有间隔,因此传输效率不高。

    在单片机与计算机之间通信时,通常采用异步串行通信方式。

    2、同步通信
    信息发送设备与接收设备需要时钟同步,两者间除数据线连接,还需要额外的时钟线连接。一般需要发送方发送数据时同时发送时钟信号,接收方根据发送方给它的时钟信号来安排自己的节奏。
    请添加图片描述

    串行通信的方式

    1. 单工,数据传输仅沿着一个方向,不能反向传输
      请添加图片描述

    2. 半双工,数据可以沿着两个方向,但需要分时进行
      请添加图片描述

    3. 全双工,数据可以同时进行双向传输
      请添加图片描述

    展开全文
  • 串口通信编程

    2021-07-18 20:23:45
    串口通信学习笔记

    一、串口通信基础知识

    1.1 串行通信与并行通信

    并行通信:在一些联络信号的控制下,一次将8位、16位或32位数据同时进行传送的通信方式。特点:通信速率高,但成本高,易受干扰。
    串行通信:只需一对传输线,数据的各位按照时间顺序一位一位地传送。特点:通信速率慢,但通信成本低,适合远距离通信。

    在这里插入图片描述

    1.2 串行通信的特点

    串行通信由于在一条传输线上既传输数据信息,又传输控制联络信息,这就需要一系列约定,从而识别条线上传送的信息流,哪一部分是数据信号,哪一部分是联络信号。

    串行通信的信息格式有异步和同步信息格式。与此对应,有异步串行通信和同步串行通信两种方式。

    1.2.1 异步传输

    在异步传输方式中,帧是数据传输单位。在通信的数据流中,帧之间异步,帧内部各位间同步。异步通信方式的“异步”主要体现在帧与帧之间通信没有严格的定时要求。在异步传输中,帧可以是连续地、一个个地发送,也可以是不连续地、随机地单独发送。
    请添加图片描述

    1.2.2 同步传输

    同步通信中,数据开始传送前用同步字符来指示(常约定1~2个),并由时钟来实现发送端和接收端的同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到一块数据传送完毕。同步传送时,字符之间没有间隙,也不要起始位和停止位,仅在数据开始时用同步字符SYNC来指示。
    在这里插入图片描述

    1.2.3 硬件握手和软件握手

    握手信号实际上是控制信号,用来控制数据的传输。通过握手信号,发送端可以得知接收端是否有数据要发送。接收端通过握手信号通知发送端它是否已经准备好了接收信号。握手信号遵循某种协议。

    当发送端和接收端处理数据的速度不一样时,可能会造成数据丢失。在传输中,如果发送端的发送速度大于接收端的接收速度,同时若接收端处理数据的速度不够快的话,那么接收端的缓冲区必定在一定时间后溢出,从而造成以后发送过来的数据不能进入缓冲区而丢失。发送端何时可以继续发送数据,何时必须暂停发送,从而让接收端有时间处理数据,称为流量控制,必须靠握手信号来解决这个问题。

    1. 硬件握手

      在硬件握手中,发送端通过将某一个导线拉到高电平或者低电平,来表示发送端可以发送数据。接收端已经准备好接收数据之后,也把某一个导线拉到高电平或者是低电平,来通知发送端,发送端一直在检测这个信号。接收端可以在任何时候把这个信号变为无效,甚至是在接收一个数据块过程中。当发送端检测到这个信号变为无效之后,就必须停止本次发送,直到这个信号变为有效为止。

    2. 软件握手

      在软件握手中,以数据线上的数据信号来代替实际的硬件电路。这种方法用在直接连接或者通过调制解调器连接的两台计算机之间进行双向通信的场合。
      对于软件握手现在已经建立了一些标准协议,其中最常用的是通信协议。通信协议是指通信双方的一种约定,约定包括对数据格式、同步方式、传输速度、传输步骤、检/纠错方式以及控制字符定义等问题进行统一规定,通信双方必须共同遵守,也叫做通信控制规程或称传输控制规程,它属于OSI七层参考模型中的数据链路层。

    1.3 串行通信基本参数

    在传输进行的过程中,双方明确传输信息的具体方式,否则双方就会没有一套共同的译码方式,从而无法了解对方所传输过来的信息的意义。因此双方为了进行通信,必须遵守一定的通信规则,这个共同的规则就是串口的初始化。

    串口的初始化必须对以下几项参数进行设置。

    1.3.1 数据传输速度

    串行通信的传输受到通信双方配备性能及通信线路的特性所控制,收发双方必须按照同样的速率进行串行通信,即收发双方采用同样的波特率。我们通常将传输速度称为波特率,指的是串行通信中每秒所传输的数据位数,单位是b/s。我们经常可以看到仪器或Modem的规格书上都写着19200 b/s、38 400 b/s,…,所指的就是传输速度。

    1.3.2 起始位与停止位

    由于异步串行传输中并没有使用同步脉冲作为基准,故接收端完全不知道发送端何时将进行数据的传输。发送端准备要开始传输数据时,发送端会在所送出的字符前后分别加上高电位的起始位(逻辑0)及低电位的停止位(逻辑1),它们分别是所谓的起始位和停止位,也就是说,当发送端要开始传输数据时,便将传输线上的电位由低电位提升至高电位,而当传输结束后,再将电位降至低电位。接收端会因起始位的触发(因电压由低电位升至高电位)而开始接收数据;并因停止位的通知(因电压维持在低电位)而明确数据的字符信号已经结束;加入了起始位及停止位才能比较容易达到多字符的接收能力。起始位固定为1位,而停止位则有1、1.5、2位等多种选择,如何选择呢?只要通信双方协议通过即可,没有强制规定。

    1.3.3 校验位

    为了预防错误的产生,使用校验位作为检查的机制。校验位是用来检查所传输数据的正确性的一种核对码,又可分成奇校验与偶校验两种,分别是检查字符码中1的数目是奇数或偶数。以偶校验为例,“A"的ASCI码是41H(十六进制),将它以二进制表示时,是01000001,其中1的数目是2,因此校验位便是0,使1的数目保持偶数;同样地,校验位是奇校验时,“A”的校验位便是1,使1的数目保持在奇数。接收端重新计算奇偶校验位,如果新的计算值正确,那么表示正常。如果新的计算值错误,那么接收端就会发出一些指示,表示此次接收的数据有误。

    1.4 串行通信的传输方式

    1.4.1 信号传输方式

    • 近距离传输时,采用按信号原样传输的基波传输。
    • 远距离传输时,使用Modem将原信号调制为高频的模拟仿号,然后通过电话网络,进行远距离传输。

    1.4.2 线路传输方式

    • 单工方式:信息只能沿一个方向传输
    • 半双工方式:同一时刻,信息只能沿一个方向传输
    • 全双工方式:通信双方都能在同一时刻发送和接受

    1.5 串口通信及其标准

    1.5.1 RS-232C标准

    RS-232C是PC与通信工业中应用最广泛的一种串行接口。它适合于数据传输速度在 0~20000 b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号电平、信号线功能、电气特性、机械特性等都作了明确的规定。

    由于RS-232C并未定义连接器的物理特性,因此,出现了 DB-25 和 DB-9 各种类型的连接器,其引脚的定义也各不相同。现在计算机上一般只提供 DB-9 连接器,都为公头。相应的连接线上的串口连接器也有公头和母头之分,见下图。请添加图片描述
    从功能上看,全部信号线从功能来看,全部信号线分为三类,即数据线(TXD,RXD)、地线(GND)和联络控制线(DSR,DTR,RI,DCD,RTS,CTS)

    当两台RS-232串口设备通信距离较近时(<15m),可以用电缆线直接将2台设备的RS-232端口连接,若通信距离较远(>15m)时,需附加调制解调器(Modem)。

    1.5.2 RS-422标准

    RS-422由RS-232发展而来,它是为了弥补RS-232的不足而提出的。为了改进RS-232抗干扰能力差、通信距离短、传输速度低等缺点,RS-422定义了一种平衡通信接口,将传输速度提高到10 Mb/s,速率低于100 kb/s时传输距离延长到4000英尺(1英尺=0.3048 m),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-428-A标准。

    1.5.3 RS-488标准

    为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-488-A标准。由于EIA提出的建议标准都是以“RS”作为前缀的,所以在通信工业领域,仍然习惯将上述标准以RS作为前缀。

    1.5.4 参数比较

    RS-232,RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。有关电气参数见下表。
    在这里插入图片描述

    1.6 个人计算机中的串口

    1.6.1 观察计算机上串口位置和几何特征

    在PC主机箱后面板上,有各种各样的接口,其中有个9针的接头区,这就是RS-232C串口。PC上的串行接口有多个名称:RS-232口、串口、通信口、COM口、异步口等。

    1.6.2 查看串口设备信息

    打开“设备管理器”。在列表中有端口COM和LPT设备信息,如图所示。
    在这里插入图片描述
    右键单击“通信端口(COM1)”,选择属性,在这里可以查看端口的低级设置,也可查看其资源。在“端口设置”选项卡中,可以看到缺省的波特率和其他设置,这些设置可以在这里改变,也可以在应用程序中很方便地修改。在“资源”选项卡中,可以看到,COM1口的地址分配信息(03F8-03FF)和中断请求号(04),如图所示。
    请添加图片描述

    二、Windows串口编程

    Windows API是由操作系统所提供的函数,这些函数可以为程序设计人员提供相当多的执行功能。Windows的API包括了串口通信的函数,因而在串口通信中使用调用API接口的方法,是实现在C中直接控制串口硬件的简便可行的解决方案。

    2.1 动态链接库与API函数

    Windows是多任务操作系统。在多任务环境中,应用程序共享内存资源,如果多个应用程序都调用库文件中相同的函数,则在链接时把该函数复制给每个应用程序,运行时在内存中生成同一函数的多个复制,造成内存资源的浪费;此外,如果修改了库中函数的代码,则必须对调用该函数的应用程序重新进行链接。因此,在Windows环境下,通常使用动态链接库(Dynamic Link Libaray,DLL)。动态链接库是一个函数库,是可被其他程序或DLL调用的函数集合组成的可执行文件模块。之所以被称为动态链接库,是因为DLL的代码并不是某个应用程序的组成部分,而是在运行时链接到应用程序中。

    动态链接分为两个阶段,即链接过程和装入过程。

    当应用程序调用动态链接库中的某个函数时,链接程序并不复制被调用函数的代码,而只是从引入库中复制一些指示信息,指出被调用函数属于哪个动态链接库(.DLL文件)。因此,在应用程序的可执行文件中,存放的不是被调用的函数的代码,而是DLL中该函数的内存地址。程序运行后,当需要调用该函数时,进入装入过程,把应用程序与DLL库一起装入内存,由Windows读入DLL中的函数并运行程序。

    可以看出,动态链接是在应用程序被装入到内存中进行的。这样,当多个应用程序调用库中的同一个函数时,不会在内存中有该函数的多个复制,而是只有一分复制,每个应用程序的可执行文件中装入的只是该函数的内存地址,程序运行时再把应用程序代码与被调用函数代码动态链接起来,从而可以节省内存资源。同时,由于DLL与应用程序分开,即使更新DLL,也不用修改已编译好的可执行文件。

    常用的动态链接库是安装在Windows目录下,随Windows软件包提供的DLL。这些动态链接库中所包含的函数就称为Windows API函数。

    2.2 与串口通信有关的API函数

    虽然串口是属于硬件层面,可Windows却将它当成一个文件来操作,因此打开串口时,就必须像打开文件那样操作。在使用完串口时,必须使用关闭文件的函数将串口关闭。

    与串口通信有关的API函数均在\Window\system32子目录下的USER.EXE动态链接库中,API中与串行通信相关的函数约有20个,本节只讨论经常使用的函数。

    2.2.1 打开串口

    Win32 中用于打开串口的API 函数为CreateFile,其原型为:

    HANDLE CreateFile (
    	LPCTSTR lpFileName, //将要打开的串口逻辑名,如COM1 或COM2
    	DWORD dwAccess, //指定串口访问的类型,可以是读取、写入或两者并列
    	DWORD dwShareMode, //指定共享属性,由于串口不能共享,该参数必须置为0
    	LPSECURITY_ATTRIBUTES lpsa, //引用安全性属性结构,缺省值为NULL
    	DWORD dwCreate, //创建标志,对串口操作该参数必须置为OPEN_EXISTING
    	DWORD dwAttrsAndFlags, //属性描述,用于指定该串口是否可进行异步操作,FILE_FLAG_OVERLAPPED:可使用异步的I/O
    	HANDLE hTemplateFile //指向模板文件的句柄,对串口而言该参数必须置为NULL
    );
    

    例如,以下程序用于以同步读写方式打开串口COM1:

    HANDLE hCom;
    DWORD dwError;
    hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (hCom == (HANDLE)0xFFFFFFFF)
    {
    	dwError = GetLastError();
    	MessageBox(dwError);
    }
    

    2.2.2 关闭串口

    利用API 函数实现串口通信时关闭串口非常简单,只需使用CreateFile 函数返回的句柄作为参数调用CloseHandle 即可:

    BOOL CloseHandle(
    	HANDLE hObject // handle to object to close
    );
    

    2.2.3 配置串口

    串口通信中,使用该数据结构存放通信参数。由于该结构包括的通信参数很多,逐个设置不方便。通常的做法是首先将串口的当前设置值读出到一个DCB结构中,然后根据需要修改该DCB结构中的某些参数,再以该结构来设置串口通信参数。

    接收缓冲区和发送缓冲区的大小可通过SetupComm 函数来设置。

    typedef struct _DCB { // dcb
    	DWORD DCBlength; // DCB结构的大小
    	DWORD BaudRate; // 通信波特率
    	DWORD fBinary: 1; // 是否允许二进制方式通信。只能设为TRUE,即使用二进制方式通信。因为WinAPI只支持二进制方式通信。若设为FALSE则通信不能正常工作。
    	DWORD fParity: 1; // 是否允许奇偶校验。若设为TRUE,则通信时执行奇偶校验检测,并且当出现奇偶校验错时,将会产生错误信息。
    	DWORD fOutxCtsFlow:1; // 指定串口输出数据时,是否使用CTS作为流控制信号。
    	DWORD fOutxDsrFlow:1; // 指定串口输出数据时,是否使用DSR作为流控制信号。
    	DWORD fDtrControl:2; // 指定DTR流控制信号的工作方式。可取的值:DTR_CONTROL_DISABLE,禁止DTR信号线,并保持禁止状态;DTR_CONTROL_ENABLE,允许DTR信号线,并保持允许状态;DTR_CONTROL_HANDSHAKE,允许DTR握手。此时不允许在程序中使用EscapeCommFunction()函数调整DTR信号线的状态。
    	DWORD fDsrSensitivity:1; // 指定通信驱动程序对DSR信号是否敏感。如果设为TRUE,则当DSR线为无效状态时,串口接收的任何数据将被忽略。
    	DWORD fTXContinueOnXoff:1; // 指定当接收缓冲区已满,并且驱动程序已经发出XoffChar字符时,发送是否停止。如果为FALSE则停止。fOutX:指定在发送串口数据时是否使用Xon/Xoff流控制。当该成员设为TRUE时,则率门在收到XofChar时传输将停止,直到接收到XonChar时,发送操作才继续进行。
    	DWORD fOutX: 1; // 指定在发送串口数据时是否使用Xon/Xoff流控制。当该成员设为TRUE时,则串口在收到XoffChar时传输将停止,直到接收到XonChar时,发送操作才继续进行。
    	DWORD fInX: 1; // finX:指定在接收审口数据时是否使用Xon/Xoff流控制。当该成员设为TRUE时,则在接收缓冲区中数据长度达到接收界限值(接收缓冲区长度与XofLim之差)时,驱动程序将发送XofrChar,以通知发送方停止发送数据。直到接收缓冲区中数据长度小于XonLim时,驱动程序才发送XonChar,以通知发送方可以继续发送数据。
    	DWORD fErrorChar: 1; // 当数据发生奇偶校验错时,指定是否用ErrorChar成员值替换该错误数据。若该成员值设为TRUE,则当fParity设为TRUE并且发生奇偶校验错时,将进行此替换操作。
    	DWORD fNull: 1; // 指定是否忽略接收数据中的空字符(ASCI1码值为0)。该成员值设为TRUE,则执行忽略的操作。
    	DWORD fRtsControl:2; // 指定RTS流控制方式。
    	DWORD fAbortOnError:1; // 指定当发生错误时,是否终止发送和接收操作。若设为TRUE,则发生通信错误时,将终止所有的发送和接收操作。此时,驱动程序不再响应任何通信操作。直到程序调用了ClearCommError()函数响应该错误,通信才恢复正常。
    	DWORD fDummy2:17; // 系统保留不使用
    	WORD wReserved; // 不使用,设为0
    	WORD XonLim; // 指定在发出Xon字符前,接收缓冲区中允许的最小字符数量。
    	WORD XoffLim; // 指定在发出Xoff字符前,接收缓冲区中允许的最大字符数量。该最大字符数量为接收缓冲区长度与XoffLim之差。
    	BYTE ByteSize; // 指定通信数据位数, 4-8
    	BYTE Parity; // 指定奇偶校验方式
    	BYTE StopBits; // 指定停止位数
    
    	char XonChar; // 指定通信时发送XON字符使用的字符值(ASCII码值)。
    	char XoffChar; // 指定通信时发送XOFF字符使用的字符值(ASCII码值)。
    	char ErrorChar; // 指定通信发生奇偶校验错误时,用于替换错误数据的字符值。
    	char EofChar; // 指定表示传输结束的字符值
    	char EvtChar; // 指定事件字符。当传输中出现该宁符时,将产生一个事件。
    	WORD wReserved1; // 系统保留不使用
    } DCB;
    

    而SetupComm 函数的原型则为:

    BOOL SetupComm(
    	HANDLE hFile, // 指向一个串口设备的句柄,该句柄由CreateFile()函数返回
    	DWORD dwInQueue, // 指示输入缓冲区大小,以字节为单位
    	DWORD dwOutQueue // 指示输出缓冲区大小,以字节为单位
    );
    

    要设置串行通信参数,首先定义一个DCB结构类型的变量。根据通信要求,设置该结构变量的数值,然后以该结构变量作为参数,执行SetCommState() 函数即可完成串口通信参数的设置。

    BOOL Setcomnstate(
    HANDLE hFile, // 指向要设置参数的串口句柄。该句柄通常是CreateFile 函数的返回值。
    LPDCB IpDCB ); //指向DCB结构变量的指针。该结构变量中存放着通信参数设置的具体数值。
    

    以下程序将串口设置为:波特率为9600,数据位数为7 位,停止位为2 位,偶校验,接收缓冲区和发送缓冲区大小均为1024 个字节,最后用PurgeComm 函数终止所有的后台读写操作并清空接收缓冲区和发送缓冲区:

    DCB dcb;
    dcb.BaudRate = 9600; //波特率为9600
    dcb.ByteSize = 7; //数据位数为7 位
    dcb.Parity = EVENPARITY; //偶校验
    dcb.StopBits = 2; //两个停止位
    dcb.fBinary = TRUE;
    dcb.fParity = TRUE;
    if (!SetCommState(hCom, &dcb))
    {
    	MessageBox("串口设置出错!");
    }
    SetupComm(hCom, 1024, 1024);
    PurgeComm(hCom, PURCE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
    

    2.2.4 超时设置

    超时设置是通过改变COMMTIMEOUTS 结构体的成员变量值来实现的,COMMTIMEOUTS 的原型为:

    typedef struct _COMMTIMEOUTS
    {
    	DWORD ReadIntervalTimeout; //定义两个字符到达的最大时间间隔,单位:毫秒
    	//当读取完一个字符后,超过了ReadIntervalTimeout,仍未读取到下一个字符,就会发生超时
    	
    	DWORD ReadTotalTimeoutMultiplier;
    	DWORD ReadTotalTimeoutConstant;
    	//其中各时间所满足的关系如下:
    	//ReadTotalTimeout = ReadTotalTimeOutMultiplier* BytesToRead + ReadTotalTimeoutConstant
    	DWORD WriteTotalTimeoutMultiplier;
    	DWORD WriteTotalTimeoutConstant;
    	
    } COMMTIMEOUTS, *LPCOMMTIMEOUTS;
    

    设置超时的函数为SetCommTimeouts,其原型中接收COMMTIMEOUTS 的指针为参数:

    BOOL SetCommTimeouts(
    	HANDLE hFile, // handle to communications device
    	LPCOMMTIMEOUTS lpCommTimeouts // pointer to comm time-out structure
    );
    

    以下程序将串口读操作的超时设定为10 毫秒:

    COMMTIMEOUTS to;
    memset(&to, 0, sizeof(to));
    to.ReadIntervalTimeout = 10;
    SetCommTimeouts(hCom, &to);
    

    2.2.5 事件设置

    在读写串口之前,需要用SetCommMask ()函数设置事件掩模来监视指定通信端口上的事件,其原型为:

    BOOL SetCommMask(
    	HANDLE hFile, //标识通信端口的句柄
    	DWORD dwEvtMask //能够使能的通信事件
    );
    

    有了Set 当然还会有Get,与SetCommMask 对应的GetCommMask()函数的原型为:

    BOOL GetCommMask(
    	HANDLE hFile, //标识通信端口的句柄
    	LPDWORD lpEvtMask // address of variable to get event mask
    );
    

    串口上可以发生的事件可以是如下事件列表中的一个或任意组合:EV_BREAK、EV_CTS、EV_DSR、EV_ERR、EV_RING、EV_RLSD、EV_RXCHAR、EV_RXFLAG、EV_TXEMPTY。

    我们可以用WaitCommEvent()函数来等待串口上我们利用SetCommMask ()函数设置的事件:

    BOOL WaitCommEvent(
    	HANDLE hFile, //标识通信端口的句柄
    	LPDWORD lpEvtMask, // address of variable for event that occurred
    	LPOVERLAPPED lpOverlapped, // address of overlapped structure
    );
    

    WaitCommEvent()函数一直阻塞,直到串口上发生我们用所SetCommMask ()函数设置的通信事件为止。一般而言,当WaitCommEvent()返回时,程序员可以由分析*lpEvtMask 而获得发生事件的类别,再进行相应的处理。

    2.2.6 读串口

    对串口进行读取所用的函数和对文件进行读取所用的函数相同,读函数原型如下:

    BOOL ReadFile(
    	HANDLE hFile, // 指向串口句柄。该句柄由CreateFile()函数返回。
    	LPVOID lpBuffer, // 指向某个缓冲区的指针。该缓冲区存放接收到的二进制数据。
    	DWORD nNumberOfBytesToRead, // 要接收的字节数。
    	LPDWORD lpNumberOfBytesRead, // 实际接收到的字节数。
    	LPOVERLAPPED lpOverlapped // 指向重叠结构变量的指针。当使用重叠操作时,必须设置该成员,否则必须设为NULL
    );
    

    2.2.7 写串口

    对串口进行写入所用的函数和对文件进行写入所用的函数相同,写函数原型如下:

    BOOL WriteFile(
    	HANDLE hFile, // 指向串口句柄。该句柄由CreateFile 函数返回。
    	LPCVOID lpBuffer, // 指向某个缓冲区的指针。该缓冲区存放待发送的二进制数据。
    	DWORD nNumberOfBytesToWrite, // 要发送的字节数。
    	LPDWORD lpNumberOfBytesWritten, // 实际发送了的字节数。
    	LPOVERLAPPED lpOverlapped // 指向重叠结构变量的指针。当使用重叠操作时,必须设置该成员,否则,必须设为NULL。
    );
    

    参考资料:

    1. 曹卫杉 . C/C++串口通信典型应用实例编程实践 . 电子工业出版社 , 2009
    2. 深入浅出VC++串口编程
    3. 龚建伟 , 熊光明 . Visual C++/Turbo C串口通信编程实践 . 电子工业出版社, 2004
    4. 张筠莉 , 刘书智 . VISUAL C++实践与提高:串口通信与工程应用篇 . 中国铁道出版社
    5. 梦小羊博客:串口通信知识总结
    展开全文
  • UART串口通信

    2021-11-10 15:35:21
    串行接口简称“串口”,即采用串行通信方式的接口。 串行通信将数据字节分成一位一位的形式,在一条数据线上逐个传送。 串行通信特点通信线路简单,但传输速度较慢。 因此,串行接口广泛应用于对数据传输速度...
  • 在计算机系统中,CPU和外部通信有两种通信方式:并行通信串行通信。而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。1、异步串行方式的特点所谓异步通信,是指数据传送以字符为单位,...
  • 文章目录前言一、计算机通信简介二、串口通信简介1、简介2、同步通信和异步通信2.1 同步通信2.2 异步通信3、串行通信的传输方式4、串口通信硬件电路5、常见接口介绍三、串口相关寄存器详解1、特殊功能寄存器SCON2、...
  • 串口通信详解

    2021-10-09 13:23:56
    串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。...
  • 计算机串口通信基础

    2021-06-24 02:48:40
    串口通信是非常重要的,首先了解下基础计算机串口通信基础随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能越越显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信...
  • 串行通信接口SCI

    2020-12-29 17:21:19
    SCI是串行通信接口。SCI是一个双线的异步串口,具有接受和发送两根信号线的异步串口。 二、SCI模块的特点 ①SCI模块具有两个引脚:发送引脚SCITXD和接收引脚SCIRXD ②SCI模块具有双缓冲接受和发送功能:接收缓冲...
  • 16 . USART 串口通信实验

    千次阅读 2021-05-21 14:54:40
    USART 串口通信实验 我们知道STM32F1 内部含有非常多的通信接口,我们就来学习下USART 串口通信。要实现的功能是:STM32F1 通过USART1 实现与PC 机对话,STM32F1 的USART1 收到PC 机发来的数据后原封不动的返回给PC ...
  • 串行通信特点:传输线少,长距离传送时成本低,且可以利用电话网等现成设备,但数据的传送控制比并行通信复杂。 并行通信: 通常是将数据字节的各位用多条数据线同时进行传送。如下图所示 并行通行特点:...
  • MSP432的串行通信

    千次阅读 2021-07-23 15:43:53
    目录数字通信基本知识组成串行通信和并行通信同步通信和异步通信异步串行通信的通用基础知识异步串行通信的格式串行通信的波特率奇偶校验串行通信传输方式术语1.全双工(Full-duplex)2.半双工(Half-duplex)3.单工...
  • 串口通信基础知识

    2021-07-13 11:05:32
    # 串口通信 在360百科里写到:串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带RS-232口。同时,串口通信协议...
  • 通信分为并行通信串行通信两种方式。 1.并行通信 并行通信通常是将数据字节的各位用多条数据线同时并行传输。 并行通信:a.控制简单 b.传输速度快 缺点:传输线多,长距离成本高。 2.串行通信 串行通信是指用一...
  • 数据通信的基本方式根据数据的传输方式可以分为串行通信与并行通信两种。 串行通信又根据数据的同步方式,分为异步传送和同步传送两种方式。或者根据数据的传输方向与时间关系,分为单工通信、半双工通信及全双工...
  • 它的特点是知识面广,内容广,难度大,更新快,在基础课和专业之间起到承前启后的重要作用,同时单片机在现代电子系统中的作用已经日渐成为最重要的智能化核心部件。是我们当代大学生步入社会参加工作的立足之本。...
  • 一文搞懂串口通信

    2021-05-19 15:22:13
    一直没明白它是什么意思,应用在什么场景,有什么特点和优点。近来又在某个文档中看到“电脑上至少配置两个RS232串口,一个RJ-45网口”,我实在拖不了了,今天一定要把它搞清楚。 研究之前我先是在网上搜了一些Qt和...
  • 51单片机——串行通信

    千次阅读 2021-08-28 23:03:37
    本文首先介绍了并行通信串行通信的概念,然后对串行通信进行详细的介绍。然后介绍了51单片机的串行通信口的结构与原理,最后介绍了串行通信的四种方式,并介绍了如何计算波特率。
  • 串行通信 传输原理:数据按位顺序传输 优点:占用引脚资源少 缺点:速度相对比较慢 如果这种情况,按照上面的例子来说的话,就需要一位一位的传输。 串行通信 按照数据传送方向可分为: 1.单工 数据传输只支持数据...
  • 串口通信知识点总结

    2021-10-30 18:50:42
    串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。 在串口通信中,常用的协议包括RS-232、RS-422和RS-485 二:串口...
  • 综合实验报告实验题目: 双机串行通信的设计与实现学生班级: 电子学生姓名:学生学号:指导教师:实验时间: 2016.9.12-2016.9.170题目:双机串行通信的设计与实现班级:电子 14-2 姓名:陈俊臣摘要串行通信是单片机的...
  • 串行通信原理

    2021-02-19 23:39:52
    一、通信接口的背景知识 1、常见的串行通信接口 ...二、STM32串口通信接口 1、UART异步通信方式引脚 2、UART异步通信方式特点 3、串口通信过程: 4、STM32串口异步通信需要定义的参数: ...
  • STM32串口通信简介

    2021-10-23 22:27:52
    一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器...
  • 串口通信基本原理

    2021-05-15 12:45:00
    常见的串行通信接口: UART异步通信方式特点: 全双工异步通信。 分数波特率发生器系统,提供精确的波特率。 -发送和接受共用的可编程波特率,最高可达...串口通信过程 STM32串口异步通信需要定义的参数: 起始位 数
  • java 串口通信

    2021-03-15 03:50:07
    背景由于最近在做一个交通雷达项目,必须要接触到串口通信,将雷达的数据不断接收并处理,摸爬滚打了几天,浅显的谈谈串口通信什么已经怎么去使用java串口通信。环境刚接触到串口通信时拿到的资料以及jar包是98年...
  • 串行通信可以分为两种类型:同步通信、异步通信.1. 异步通信特点及信息帧格式:以起止式异步协议为例,下图显示的是起止式一帧数据的格式:图1起止式异步通信特点是:一个字符一个字符地传输,每个字符一位一位地传输,...
  • 1, 485通讯与串口通讯区别跟串口通信一样的。在串口上加个485转换器好了。 可以用现成的spcomm控件等对于软件来说,485通信和串口通信是一回事,都是操作串口。这两者只是硬件上的区别而已,跟软件没关系的。所谓的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,220
精华内容 20,488
关键字:

串行通信有什么特点