串口的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了串口的区别相关的知识,希望对你有一定的参考价值。

参考技术A 一UART

UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx 和Tx)就可以完成通信过程,因此也称为异步串行通信。

若加入一个合适的电平转换器,如SP3232E、SP3485,UART 还能用于RS-232、RS-485 通信,或与计算机的端口连接。UART 应用非常广泛,手机、工业控制、PC 等应用中都要用到UART。

UART使用的是异步,串行通信。

串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。

异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。

数据传送速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。

早期由于PC都带有RS-232接口,所以我们需要使用UART时,都选择RS-232。但是现在个人电脑,不光是笔记本,包括台式机都不再带有RS-232的接口,大家看到电脑主板上面没有DB9的接口。所以现在开发板都选择TTL的UART,或者直接UART转USB做在开发板上。

嵌入式里面说的串口,一般是指UART口, 但是我们经常搞不清楚它和COM口的区别,  以及RS232, TTL等关系,  实际上UART,COM指的物理接口形式(硬件), 而TTL、RS-232是指的电平标准(电信号)。

UART有4个pin(VCC, GND, RX, TX), 用的TTL电平,  低电平为0(0V),高电平为1(3.3V或以上)

COM口串口、COM口:

  COM口即串行通讯端口,简称串口。这里区别于USB的“通用串行总线”和硬盘的“SATA”。

一般我们见到的是两种物理标准。D型9针 插头 ,和 4针杜邦头 两种。

这是常见的4针串口,在电路板上常见,经常上边还带有杜邦 插针 。还有时候有第五根针,3.3V 电源 端。

由于是预留在电路板上的,协议可以有很多种,要看具体设备。

下面这个就是D型9针串口(通俗说法)。在台式电脑后边都可以看到。

这种接口的协议一般是:RS-232和RS-485,。不会是TTL电平的(除非特殊应用)。

我们一般只接出RXD TXD两针,外加GND。

TTL电平

(1)电平信号,高电平3.6~5V,低电平0V~2.4V,电平5V为逻辑正,0为逻辑负

(2)传输速率较低,在异步传输时波特率达到20Kbps或115.2Kbps

(3)传输距离有限,实际上也只能用在1 米左右

(4)RS-232 只容许一对一的通信,没构成串行总线。(不能一控多。)

这种是板上通信最常用的方式,SOC或独立的串口控制器芯片直接就提供该接口。TTL为正逻辑电平信号,电压值也较低,一般就是芯片电源电压3.3V或5V,抗干扰能力较差,所以也只是在板上短距离连接。

RS-232标准  ,

(1)电平信号负逻辑,高电平-3V~-15V,低电平+3V~+15V ,噪声容限为2V。即要求接收器能识别高于+3V的信号作为逻辑“0”,低于-3V的信号作为逻辑“1”,TTL(无法与TTL标准兼容需要电平转换器)

(2)传输速率较低,在异步传输时波特率达到20Kbps或115.2Kbps

(3)传输距离有限,最大传输距离标准值为50 米,实际上也只能用在15 米左右

(4)RS-232 只容许一对一的通信,没构成串行总线。(不能一控多。)

(5)RS-232 口一般只使用三条线,2芯接收 RXD、3芯发送TXD、5芯 信号接地GND。

RS-422标准

(1)逻辑“1”以两线间的电压差+2V~+6V表示,逻辑“0”以两线间的电压差-6V~-2V表示。(兼容TTL)

(2)最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。 

(3)RS-422的最大传输距离为4000英尺(约1219米)。

(4)RS -422支持点对多的双向通信,相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备,其余为从设备,从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终端电阻)。

(5)RS-422 口一般只使用5条线,1和6芯接收 RXD+-、4和9芯发送TXD、5芯 信号接地GND。由于RS-422 的收与发是分开的所以可以同时收和发(全双工)

(6)RS-422需要一终端电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需终端电阻,即一般在300米以下不需终端电阻。终端电阻接在传输电缆的最远端。

RS-485标准

(1)逻辑“1”以两线间的电压差+2V~+6V表示,逻辑“0”以两线间的电压差-6V~-2V表示。(兼容TTL)

(2)最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。 但是由于RS-485 常常要与PC 机的RS-232 口通信,所以实际上一般最高115.2Kbps。又由于太高的速率会使RS-485 传输距离减小,所以往往为9600bps 左右或以下

(3)RS-485 接口的最大传输距离标准为1200 米(9600bps 时),实际上可达3000米。对于特定的传输线径,从发生器到负载其数据信号传输所容许的最大电缆长度是数据信号速率的函数,这个长度数据主要是受信号失真及噪声等影响所限制。

(4)RS -485支持多机通信,RS-485 接口在总线上是容许连接多达128 -256个收发器,这样用户可以利用单一的RS-485 接口方便的建立起网络。1条485总线可以带多少台设备(控制器),这个取决于控制器的通讯芯片和485转换器的通讯芯片的选型,一般有32台,64台,128台,256台几种选择,这个是理论的数字,实际应用时,根据现场环境,通讯距离等因素,负载数量达不到指标数。实际建议客户每条总线控制在80台以内。每台控制器设备必须手牵手地串下去,不可以有星型连接或者分叉。如果有星型连接或者分叉,干扰将非常大,通讯不畅,甚至通讯不上。如果您需要使用星型结构,您必须使用485中继器或485集线器。一般rs-485总线最多支持32个节点。如果使用一个特殊的485芯片,它可以达到128或256个节点,最大可以支持400个节点。

(5)RS-485口一般只使用2条线,1芯接收 A、4芯发送B、一般只需二根信号线,所以RS-485 接口均采用双绞线传输。RS-485 的国际标准并没有规定RS-485 的接口连接器标准、所以采用接线端子或者DB-9、DB-25 等连接器都可以。接线兼容RS-422,接4芯工作在全双工模式下。

(6)4种接口区别

串口发送数据——字符串发送与十六进制发送的区别

转自:http://blog.csdn.net/wityy/article/details/8234739
 串口发送数据——字符串发送与十六进制发送的区别
       
        在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。关于两者的区别,需要从计算机存储数据的格式说起。

        在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示。我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。

例如我们要发送一串数据“A852010100000000A91A”,以字符串和十六进制两种方式发送:

(1)字符串发送

         串口以字符串发送数据,首先将字符串转化为二进制,格式如下:

          0000 1010     0000 1000    0000 0110    0000 0010    0000 0000   0000 0001   0000 0000    0000 0001 

                A                   8                  5                      2                    0                1                    0                    1

 

          0000 0000     0000 0000   0000 0000    0000 0000     0000 1010    0000 1001    0000 0001    0000 1010

                          0                   0                     0                   0                    A                   9                   1                   A

         然后按照8位(串口设置数据位为8位)形式将数据发送出去。

         串口接收的数据格式如下:

              

 

编号

数据内容

编号

数据内容

0

A

8

0

1

8

9

0

2

5

10

0

3

2

11

0

4

0

12

A

5

1

13

9

6

0

14

1

7

1

15

A

 

 (2)十六进制发送数据

          串口以十六进制发送数据,首先将数据转化为:

          1010 1000     0110 0010    0000 0001     0000 0001    0000 0000    0000 0000     1010 1001     0001 1010

              0XA8            0X52               0X01             0X01              0X00           0X00                0XA9            0X1A 

         然后按照8位(串口设置数据位为8位)形式将数据发送出去。

         串口接收的数据格式如下:

 

编号

数据内容

编号

数据内容

0

A8

4

00

1

52

5

00

2

01

6

A9

3

01

7

1A

 

 

          仔细对照接收结果就很容易明白字符串发送和十六进制发送的区别了。

 

附转换:

  1. //转换每一个字符为正真的16进制数值  
  2.     char Widget::ConvertHexChar(char ch)    
  3.     {    
  4.         if((ch >= ‘0‘) && (ch <= ‘9‘))    
  5.             return ch-0x30;    
  6.         else if((ch >= ‘A‘) && (ch <= ‘F‘))    
  7.             return ch-‘A‘+10;    
  8.         else if((ch >= ‘a‘) && (ch <= ‘f‘))    
  9.             return ch-‘a‘+10;    
  10.         else return (-1);    
  11.     }    

以上是关于串口的区别的主要内容,如果未能解决你的问题,请参考以下文章

IDE 、 SATA 、串口 、并口 有啥区别

串口与并口的区别

stm32的串口1和串口2配置的区别

并口线与串口线的区别在哪?

can口和串口区别?

UART,串口,RS232,RS485等等,之间有啥联系和区别?