前言:
计算机与计算机之间或者计算机与外部设备之间的信息交换称为通信。计算机的通信有两种方式:并行通信和串行通信。在通信的过程中,如果能够同时传送数据的所有位(位数由机器的字长决定),就称为并行通信;如果数据是逐位顺序传送,则称为串行通信。计算机与外设间的接口按照通信 方式的不同,相应地分为并行接口和串行接口。并行通信和串行通信是指接口与外部设备一侧的通信方式,与CPU之间的通信都是并行通信的。
一、并行通信
并行接口的特点:
由于多数的I/O设备,特别是系统基本的I/O设备都采用并行数据传送,因此并行接口的应用十分普遍。一般来讲,并行接口有如下特点。
(1)以数据字节或字为单位进行数据传输,两个功能模块间有多位数据同时进行数据传送,速度快、效率高。
(2)适合近距离传送。由于并行通信需要的数据线路比较多,造价高,且容易产生干扰。因此并行通信通常都用于近距离、高速数据交换的场合。
(3)并行传送中,8位、16位或4字节的数据是同时传输的,因此在并行接口与外部设备进行数据交换时,即使之需要传送一位,也是一次输入/输出8位、16位或4字节。
(4)串行传送的信息有固定格式要求,并行传送的信息不要求固定格式。
二、串行通信
串行通信是指两个功能模块只通过一条或两条数据线进行数据交换。发送方将数据分解为二进制位,一位接一位地顺序通过单条数据线发送,接收方则一位一位地从单条数据线上接收,并将其重新组装成一个数据。串行通信数据线路少,造价低,适合于远距离传送。但由于数据是一位一位传送的,故速度慢。
1.串行数据传送方式
串行通信是一位一位通过同一信号线进行数据传送的方式。按照数据流的方向可分为3种基本传送方式:全双工、半双工和单工。
如果串行通信的通路只有一条,此时发送信息和接收信息就不能同时进行,只能采用分时使用线路的方法。比如A在发送信息时,B只能接收;而当B发送信息时,则A只能接收。这种串行通信的工作方式称为半双工通信方式。
如果有两条通路,则发送信息和接收信息就可以同时进行,当A发送信息、b接收信息,b也能够同时利用另一条通路发送信息而由A接收。这种通信的方式称为全双工。
除了半双工和全双工外,还有一种单工的通信方式,它只允许一个方向传送信息,而不允许反向传输。这种方式在实际应用中较少见。
2.调制与解调
计算机在通信时发送接收的信息均是数字信号,其占用的频带很宽,约为几MHZ甚至更高;但目前长距离通信时采用的传统电话线路频带很窄,大约仅有4KHZ。直接传送必然会造成信号的严重畸变,大大降低了通信的可靠性。所以在长距离通信时,为了确保数据的正常传送,一般都要在传送之前把信号转换成适合传送的形式,传送到目的地后再恢复成原始信号。这个转换工作可利用调制解调器(MODEM)来实现。
在发送站,调制解调器把“1”和“0”的数字脉冲信号调制在载波信号上;承载了数字信号的载波信号在普通电话网络系统中传送;在目的站,调制解调器把承载了数字信息的载波信号再恢复成原来的“1”和“0”数字脉冲信号。
信号的调制方法主要有三种:调频、调幅和调相。当调制信号为数字信号时,这三种调制方法又分别称为频移键控法FSK(frequency shift keying)、幅度键控法ASK(Amplitude shift keying)和相移键控法PSK(phase shift keying)。
(1)调频就是把数字信号的“1”和”0“调制成不同频率的模拟信号,例如用1200HZ的信号表示”0“,用2400HZ的信号表示”1“。接收方根据载波信号的频率就可知道传输的信息是”1“还是”0“。
(2)调幅就是把数字信号的“1”和“0”调制成不同幅度的模拟信号,但频率保持不变。例如把载波信号的幅度大于8V时表示“0”,载波信号的幅度小于3V时表示“1”。
(3)调相就是把数字信号的“1”和“0”调制成不同相位的模拟信号,但频率和幅度均保持不变。例如把载波信号的相位为0°时表示“0”,载波信号的相位为180°时表示“1”。
3.同步通信和异步通信
串行通信的数据是逐位传送的,发送方发送的每一位都具有固定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还要确定一个信息组的开始和结束。为此,串行通信对数据格式做了严格的规定。不同的串行通信方式具有不同的数据格式。
1)同步通信
所谓同步通信,是指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步)。这就保证了通信双方在发送和接收数据时具有完全一致的定时关系。
2)异步通信
异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。
异步通信规定字符有 起始位(start bit)、数据位(data bit)、奇偶校验位(parity)、停止位(stop bits)组成。
由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。
串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口
USART (Universial Serial Asynchronous Receive Transmit)通用串行异步接受/发送,其实它就是UART。
两者都是串行口线。但不同的是,SPI总线似乎是分为SD(DATA)I和SC(CONTROL)I两种。SPI是同步的,需要额外的同步脉冲,速率可以很高,有些器件甚至超过20M。SDI有一条数据线,双向传输,方向靠命令字来区别,SPI为三线:SO、SI、SCK,SO、SI均为单向传输,其中SCK为同步时钟,其传输速率可变,可以软件模拟实现;而SCI,有两条数据线,分别是输入输出。SPI 均有一条时钟线。但是SPI如果应用与高速场合,只能在板级使用,不宜传输过远,我们平时看到的SPI和IIC一般都是芯片之间的接口,很少看到有长电缆使用。
而USART是没有时钟线,数据线有两条。波特率在收发两端分别设置,51的串口就属于这一类。UART是异步的,不需要时钟,波特率相对不高;鉴于此,uart因为格式个波特率是双方协商好的,而且速率不高,所以可以在传输线上传输,加上其他的转换还可以变成差动的传输更远距离。
而UART要达到某一固定波特率对晶振有要求,比如说24M的晶振可以用T2实现9600BAUD,但不能用T1来交替实现19200和9600BAUD。
本文出自 “分秒必争的青春” 博客,请务必保留此出处http://8599721.blog.51cto.com/8589721/1377513
串行通信数据总线 SPI UART I2C,布布扣,bubuko.com
原文:http://8599721.blog.51cto.com/8589721/1377513