串行通信和串行接口
微机与I/O设备的接口按照数据传输方式的不同可分为:并行接口和串行接口两种。
串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传输的方式。在传输过程中,每一位数据占据一个固定的时间长度。
串行总线通信过程的显著特点是:通信线路少,布线简便易行,施工方便,结构灵活,系统间协商协议,*度及灵活度较高。由于数据线少,抗干扰能力强,所有适用于远程,费用低,适用于长距离,中低速通信。
优点:节省传输线,这是显而易见的。
缺点:数据传送效率低。与并行通信比,这也这是显而易见的。
全双工:双根传输线,数据的发送和接收采用不同的通道,能够同时发送和接收
半双工:单根传输线,数据的发送和接收采用同一的通道,不能同时发送和接收
单工:单根传输线只能在一个方向传输数据,只用作发送或只用作接收
同步通信:
一种连续串行传送数据的通信方式,一次通信只传送一帧信息。收发双方采用同一个时钟信号来定时
它们均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。
同步通信的缺点:是要求发送时钟和接收时钟保持严格的同步。
多个字符组成一个数据块(或称信息帧、信息组),在每一个数据块前附加一个或两个同步字符或标识符,最后以校验字符结束在传送过程中发送端和接收端使用同一时钟信号进行控制使每一位数据均保持位同步。同步通信一个信息帧含有多个或上千字符。
异步通信:在异步通信中有两个比较重要的指标:字符帧格式和波特率。收发双方不用统一的时钟来定时
接收端检测到传输线上发送过来的低电平逻辑"0"(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。
每个字符一位一位地传输,传输一个字符时,以起始位开始,然后传输字符本身各位,接着传输校验位,最后以停止位结束该字符的传输。
一次传输的起始位、字符各位、校验位、停止位构成一组完整的信息,称为异步通信的一个信息帧(Frame),只含一个字符。
帧与帧之间可有任意个空闲位。为了保证异步通信的正确,必须在收发双方通信前约定字符格式、传送速率、时钟和校验方式等。
传输速率
在串行通讯中,用波特率来描述数据的传输速率。即每秒钟传送的二进制位数,简写为bps
串行通信无论收发都必须有时钟脉冲信号对传送的数据进行定位和同步控制。接收时钟/发送时钟是波特率的倍数——波特率因子。
时钟频率=波特率因子*波特率
串行接口
串行接口部件4个主要寄存器:
控制寄存器
状态寄存器
数据输入寄存器
数据输出寄存器
串、并行数据转换:
输入时,串行输入并行输出移位寄存器将接收的1个字符移位得到并行数据,并将之送到数据输入寄存器
输出时,数据寄存器将接收的并行数据传输给移位寄存器,然后将其转换成串行数据
可编程串行通信接口8251A
8251A的基本性能
- 通过编程,8251A可以工作在同步方式,波特率0~ 64K,也可以工作在异步方式,波特率0~19.2K;
- 同步方式下可以用5~8位来表示字符,允许增加1位奇偶校验位,能自动检测同步字符,实现收发同步;
- 异步方式下用5~8位来表示字符,1位可选的奇偶校验位,1位启动位,根据需要可设置1、1.5或2位停止位;
- 全双工、双缓冲的发送器和接收器;
- 具有奇偶、溢出和帧错误检测功能;
- 输入输出电路为TTL电平。
8251A的发送和接收
- 异步接收方式:将RXD线上的低电平作为起始位,并开始计数。当计数到半位的传输时间,再次检测RXD,若仍未低电平,则确认收到有效起始位
- 异步发送方式:当控制寄存器中发送允许位TXEN位为1且CTS#有效,则开始发送
- 同步接收方式:8251A先搜索同步字符,将RXD线上的数据送入移位寄存器,然后将得到的字符与同步字符寄存器内容相比较。若相等,则SYNDET输出高电平表示同步字符已经找到。
- 同步发送方式:当控制寄存器中TXEN位为1且CTS#有效,则开始发送。先传送同步字符,后传送数据块。
异步接收方式
(1)检测起始位
设数据接收时钟频率是数据传输频率的16倍
(2)8251A进行常规采样并进行字符装配
每隔一字符(设16个脉冲)传输时间,对RxD进行一次采样,数据送移位寄存器移位,并进行奇偶校验和去掉停止位,得到并行数据。
(3)通知CPU接收数据
并行数据经过内部数据总线送接收数据缓冲器,并置RxRDY有效,通知CPU已收到一个数据,可以取用。
异步发送方式
(1)程序置TxEN(允许发送)有效
检测到外设送来的CTS(请求发送信号的响应信号)有效,开始发送。
(2)8251A由TxD线把串行数据送出。
8251A从CPU接收到一个数据,移位形成串行数据,再加上起始位、奇偶校验位以及停止位,由TxD把数据送出。
注:数据及起始位、校验位、停止位总是在发送时钟TxC的下降沿从8251A发出,数据传输的波特率为发送时钟频率的1、1/16或者1/64,具体决定于编程时给出的波特率因子。
同步接收方式
(1)搜索同步字符
内同步:
单同步字符
8251检测RxD线,当RxD线出现一数据位时,接收送移位寄存器移位,并与同步字符寄存器的内容比较,如不等,继续接收,比较。相等时,8251A的SYNDET引脚为高电平,表示同步已经实现。
双同步字符
检测到第一个同步字符后,再继续检测此后输入的移位寄存器的内容是否与第二个同步字符寄存器的内容相同,不同重新比较第一个同步字符;相同,则认为同步已经实现。
外同步:通过在同步输入端SYNDET加一高电位实现同步。当SYNDET端出现一个高电平,并且维持一时钟接收周期,8251A认为已经完成同步。
(2)数据的同步传输
接收器利用时钟信号对RxD采样,把收到的数据送移位寄存器。当收到的数据位达到规定的一个字符位数时,将移位寄存器的内容送输入缓冲寄存器,且发出RxRDY信号,表示收到一数据。
同步发送方式
(1)程序置TxEN(允许发送)有效
检测到外设送来的CTS(请求发送信号的响应信号)有效,开始发送。
(2)发送同步字符
根据编程要求,发送器先发送一个或两个同步字符。
(3)发送数据块
发送数据块时,发送器根据要求对数据块中的数据加上奇偶校验位或不加。