串行通信ppt课件.ppt_第1页
串行通信ppt课件.ppt_第2页
串行通信ppt课件.ppt_第3页
串行通信ppt课件.ppt_第4页
串行通信ppt课件.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第10章串行通信 10 1基本概念10 2可编程串行通信接口芯片NS825010 3可编程串行通信接口芯片8251A 2 10 1基本概念 10 1 1串行通信与并行通信 并行通信是指利用多根传输线将多位数据同时进行传送 1字节的数据通过8条传输线同时发送 由于并行通信方式使用的线路多 一般用在如计算机与打印机等距离短 数据量大的场合 串行通信是指利用一条传输线将数据一位一位地按顺序分时传输 当传送一字节的数据时 8位数据通过一条线分8个时间段发出 发出顺序一般是由低位到高位 3 1 数据帧格式 10 1 2异步串行通信 异步传送是计算机通信中常用的串行通信方式 异步是指发送端和接收端不使用共同的时钟 也不在数据中传送同步信号 在这种方式下 收方与发方之间必须约定数据帧格式和波特率 4 2 波特率 BaudRate 波特率是衡量串行数据传送速度的参数 是指单位时间内传送二进制数据的位数 以位 秒为单位 或bps bit s 也称为波特 例题10 1 设数据帧为1位起始位 1位终止位 7位数据位 1位奇偶校验位 传送的波特率为1200 波特 用7位数据位代表一个字符 求最高字符传送速度 解 1200 位 秒 10 位 120 字符 例题10 2 设数据帧为1位起始位 2位终止位 8位数据位 1位奇偶校验位 要求每秒传送字符数大于1000字节 则波特率应大于多少波特 解 12 位 秒 1000 12000 字符 波特率应大于12000位 秒 5 同步传送时 无需起始位 停止位 每一帧包含较多的数据 在每一帧开始处使用1 2个同步字符以表示一帧的开始 10 1 3同步串行通信 6 1 单工2 半双工3 全双工 10 1 4串行通信中的数据传送模式 7 10 1 5信号的调制和解调 8 最初RS 232C串行接口的设计目的是用于连接调制解调器 目前 RS 232C已成为数据终端设备DTE 例如计算机 与数据通信设备DCE 例如调制解调器 的标淮接口 利用RS 233C接口不仅可以实现远距离通信 也可以近距离连接两台微机或电子设备 10 1 6串行接口标准RS 232C 9 1 RS 232C的引脚定义 RS 232C接口标准使用标准的25针D型连接器即DB 25 PC机已使用9针连接器取代25针连接器 10 11 TxD发送数据 串行数据的发送端 RxD接收数据 串行数据的接收端 GND信号地 为所有的信号提供一个公共的参考电平RTS请求发送 当数据终端设备准备好送出数据时 就发出有效的RTS信号 用于通知数据通信设备准备接收数据 CTS清除发送 当数据通信设备已准备好接收数据终端设备的传送数据时 发出CTS有效信号来响应RTS信号 DTR数据终端准备好 通常当数据终端设备一加电 该信号就有效 表明数据终端设备准备就绪 DSR数据装置准备好 通常表示数据通信设备 即数据装置 已接通电源连到通信线路上 并处于数据传输方式 而不是处于测试方式或断开状态 CD载波检测 当本地调制解调器接收到来自对方的载波信号时 就从该引脚向数据终端设备提供有效信号 该引脚缩写为DCD RI振铃指示 当调制解调器接收到对方的拨号信号期间 该引脚信号作为电话铃响的指示 保持有效 12 2 RS 232C的连接 计算机由RS 232C接口连接调制解调器 13 两台微机直接利用RS 232C接口进行短距离通信 14 3 RS 232C的电气特征 高电平为 3V 15V 低电平为 3V 15V 实际应用中常采用 12v或 15v 高电平表示逻辑0 用符号SPACE 空号 表示 低电平表示逻辑1 用符号MARK 传号 表示 由于RS 232C的EIA电平与微机的逻辑电平 TTL电平或CMOS电平 不兼容 所以两者间需要进行电平转换 MCl488 完成TTL电平到EIA电平的转换 和MCl489 完成EIA电平到TTL电平的转换 等芯片 15 MAX232电平转换电路如图所示 能实现两路TTL电平到EIA电平 两路EIA电平到TTL电平的转换 16 10 2通用可编程串行通信接口芯片NS8250 10 2 1NS8250概述1 基本功能 支持串行异步通信协议 支持全双工通信 数据位可选5 8位 停止位可选1 1 5或2位 可奇偶校验 具有奇偶 帧和溢出错误的检测 具有带优先级排序的中断系统 有多种中断源 发送和接收均采用双缓冲器结构 使用单一的5V电源 40脚双列直插型封装 17 2 结构其中寄存器 THR TSRRBR RSRLCRLSRDLHDLLMCRMSRIERIIR 18 1 串行数据的发送 CPU送来的并行数据存在发送保持寄存器THR中 只要发送移位寄存器TSR中没有正在发送的数据 发送保持寄存器的数据就送入TSR 与此同时 8250按照编程规定的起止式字符格式 加入起始位 奇偶校验位和停止位 从串行数据输出引脚SOUT逐位输出 因为THR TSR采用双缓冲寄存器结构 所以在TSR进行串行发送的同时 CPU可以向8250提供下一个发送数据到THR 这样可以保证数据的连续发送 19 2 起始位的检测 必须确定起始位才能开始接收数据 即实现位同步 数据接收时钟RCLK使用16倍波特率的时钟信号 接收器用RCLK检测到串行数据输入引脚SIN由高电平变低后 连续测试8个RCLK时钟周期 若采样到的都是低电平 则确认为起始位 确认了起始位后每隔16个RCLK时钟周期对SIN输入的数据位进行采样一次 直至规定的数据格式结束 20 3 串行数据的接收 接收移位寄存器RSR对SIN引脚输入的串行数据进行移位接收 按规定的字符格式删除起始位 奇偶校验位和停止位 把移位输入的串行数据转换成并行数据 接收完一个字符后 把数据送入接收缓冲寄存器RBR 接收数据的同时 对接收数据的正确性和接收过程进行监视 如发现奇偶校验错 帧错 溢出错或接收到中止符 则在状态寄存器中置相应位 并通过中断控制逻辑请求中断 要求CPU处理 采用RSR RBR双缓冲结构 所以在CPU未读取RBR中的数据前 8250可以继续串行接收下一个数据 21 4 接收错误的处理 奇偶错误PE ParityError 若接收到的字符的 l 的个数不符合奇偶校验要求 则置这个标志 发出奇偶校验出错信息 帧错误FE FrameError 若接收到的字符格式不符合规定 如缺少停止位 则置这个标志 发出帧错误信息 溢出错误OE OverError 若接收移位寄存器接收到一个数据 在把它送至输入缓冲器时 CPU还未取走前一个数据 就会出现数据丢失 这时置溢出错误标志 22 3 8250部分引脚说明 时钟信号 时钟信号输入引脚XTALl 串行数据输入线SIN对应RxD 用于接收串行数据 串行数据输出线SOUT对应TxD 用于发送串行数据 调制解调器控制线 中断请求信号线INTRPT 处理器接口引脚 D0 D7 读 写 片选 地址线A0 A2等 23 8250的寄存器寻址 24 10 2 2寄存器详细说明 1 通信线路控制寄存器LCR 25 2 通信线路状态寄存器LSR 3 调制解调器控制寄存器MCR 26 MCR的D2D3位分别控制和脚的输出 可作为一般的输出信号使用 脚还具有中断控制作用 若脚输出低电平 允许8250的INTRPT发出中断请求信号 否则将屏蔽8250的中断请求信号 因此MCR的D3位可当作为8250的中断允许控制位 MCR的D4位可控制8250处于自测试工作状态 在自测试状态 引脚SOUT变为高 而SIN与系统分离 发送移位寄存器的数据回送到接收移位寄存器 4个控制输入信号 和系统分离 并在芯片内部与4个控制输出信号 相连 这样 发送的串行数据立即在内部被接收 循环反馈 故可用来检测8250发送和接收功能正确与否 而不必外连线 27 在自测试状态 有关接收器和发送器的中断仍起作用 调制解调器产生的中断也起作用 但调制解调器产生中断的源不是原来的4个控制输入信号 而变成内部连接的4个控制输出信号 即MCR低4位 中断是否允许 则仍由中断允许寄存器控制 若中断是允许的 则将MCR低4位的某一位置位 产生相应的中断 好像正常工作一样 4 调制解调器状态寄存器MSR 28 5 中断允许寄存器IER 29 6 中断识别寄存器IIR 30 10 2 3PC机的串行异步通信适配器 1 简介 COMl端口地址为3F8 3FFH 以IRQ4为中断请求线COM2端口地址为2F8 2FFH 以IRQ3为中断请求线基准时钟信号 XTAL 1 8432MHz 31 2 异步通信适配器的初始化编程 1 设置波特率MOVAL 80H 最高位DLAB 1MOVDX 3FBH COM1的LCR地址为3FBHOUTDX AL 写入LCR 使DLAB 1MOVAX 96 分频系数 1 8432MHz 1200 16 96MOVDX 3F8H DLL的地址为3F8HOUTDX AL 写入除数寄存器低8位MOVAL AHINCDX DLH的地址为3F9HOUTDX AL 写入除数寄存器高8位 32 2 设置通信字格式 写入LCR 设数据格式为1个起始位 7个数据位 1个停止位 1个奇校验 程序段如下 MOVAL 00001010B DLAB 0MOVDX 3FBHOUTDX AL 写LCR这段程序同时使DLAB 0 以方便后面的初始化程序 33 3 设置工作方式 写MCR 设置查询通信方式MOVAL 03h 控制为高 和为低MOVDX 3FCHOUTDX AL 写入调制解调控制寄存器 设置中断通信方式MOVAL 0Bh 控制为低 允许INTRPT产生请求MOVDX 3FCHOUTDX AL 写入调制解调控制寄存器 34 设置查询的循环测试通信方式MOVAL 13H 循环测试位设置为1MOVDX 3FCHOUTDX AL 4 设置中断允许 中断屏蔽 如果不采用中断工作方式 应设置中断允许寄存器为0 禁止所有的中断请求 否则 根据需要 允许相应的中断 不使用的中断则仍屏蔽 例如 MOVAL 0 禁止所有中断MOVDX 3F9HOUTDX AL 写入中断允许寄存器 应保证此时DLAB 0 35 例题1 下面的例子实现两台PC机之间的异步串行通信 从一台PC机键盘输入的字符将在对方PC机屏幕上显示出来 每一PC台机都使用COM2口 使用相同的程序 程序采用查询工作的方式 10 2 4应用举例 36 初始化编程时 应将03H写入调制解调器控制寄存器MCR 使环路检测位为0 初始化编程后 程序读取8250的LSR 若数据传输出错就显示一个问号 若接收到对方送来的字符就将其显示在屏幕上 若从本机键盘输入字符 就将其发送给对方 如果按下Esc键就返回DOS 本例程序不使用联络控制信号 通信时不关心调制解调器状态寄存器的内容 而只要查询通信线路状态寄存器即可 37 START MOVAL 80H 初始化编程MOVDX 2FBH 波特率OUTDX ALMOVAX 96MOVDX 2F8HOUTDX ALMOVAL AHINCDXOUTDX AL 38 MOVAL 0AH 通信字格式 LCR MOVDX 2FBHOUTDX ALMOVAL 03H 设置工作方式 MCR MOVDX 2FCHOUTDX ALSTATUS MOVDX 2FDHINAL DX 读LSRTESTAL 1EH 接收有错误否 JNZERROR 有错 则转错误处理TESTAL 01H 接收到数据吗 39 JNZRECEIVE 有 则转接收处理TESTAL 20H THR空 能输出数据 吗 JNZSTATUS 不能 则循环查询LSRMOVAH 0BH 能 检测键盘有无输入字符INT21HCMPAL 0JZSTATUS 无输入字符 则循环查询LSRMOVAH 0 有输入字符 读取字符INT16H 40 CMPAL 1BH 判是否EscJZDONE 是EscMOVDX 2F8H 否则 将字符输出给THROUTDX ALJMPSTATUS 继续查询RECEIVE MOVDX 2F8HINAL DX 从RBR读取字符ANDAL 7FH ASCII码7个数据位 保留低7位PUSHAX 保存数据MOVDL AL 在屏幕上显示该字符MOVAH 2INT21HPOPAX 恢复数据 41 CMPAL 0DHJNZSTATUS 不是 则循环MOVDL 0AH 再发0AH到屏幕MOVAH 2INT21HJMPSTATUS 继续查询ERROR MOVDX 2F8HINAL DX 读出接收有误的数据 丢掉MOVDL 显示问号MOVAH 2INT21HJMPSTATUS 继续查询DONE 返回DOS 42 例题2 PC机串行口 自发自收 例1中的程序稍作修改即可实现该操作 方法是在初始化编程中 向调制解调器控制寄存器MCR写入13H 即环路检测位为1 则8250工作于循环自测试方式 从键盘输入的字符 经8250发送后又由8250自身接收 这时 PC机后面板串行接口上无需连线 就实现了 自发自收 上述程序可用于8250芯片的自检 43 10 3通用可编程串行通信接口芯片8251A 10 3 18251A的基本功能 能以同步方式或异步方式进行工作 自动完成帧格式 在同步方式中 每个字符可定义为5 6 7或8位 可以选择进行奇校验 偶校验或不校验 内部能自动检测同步字符实现内同步或通过外部电路获得外同步 波特率为0 64K 在异步方式中 每个字符可定义为5 6 7或8位 用1位作为奇偶校验 可选择 时钟速率可用软件定义为通信波特率的1 16或64倍 能自动为每个被输出的数据增加1个起始位 并能根据软件编程为每个输出数据增加1个 1 5个或2个停止位 异步方式下 波特率为0 19 2K 44 8251A能进行出错检测 具有奇偶 溢出和帧错误等检测电路 具有独立的接收器和发送器 因此 能够以单工 半双工或全双工的方式进行通信 并且提供一些基本控制信号 可以方便地与调制解调器连接 45 10 3 28251A的结构 1 8251A的内部结构 46 2 8251A的引脚 TxD RxD 与8280功能相同 控制 数据信号 用来区分当前读写的是数据还是控制信息或状态信息 一般与地址总线的最低位A0相连 当为高电平时 选中控制端口或状态端口 为低电平时 选中数据端口 TxRDY 发送器准备好信号 高电平有效 它通知CPU 8251A的发送器已经准备好 可以接收CPU送来的数据 当8251A收到一个数据后 TxRDY信号变为低电平 47 RxRDY 接收器准备好信号 高电平有效 它表示当前8251A已经从外部设备或调制解调器上接收到一个字符 正等待CPU取走 在中断方式下 该信号可以作为中断请求信号 在查询方式下 该信号可以作为状态信号供CPU查询 当CPU从8251A的数据口读取了一个字符后 RxRDY变为低电平 表示无数据可取 当8251A又收到一个字符后 RxRDY再次变为高电平 SYNDET BD 同步和间断检测信号 SYNDET BD既可以是输入 外同步方式 又可以是输出 内同步方式 TxE 发送器空信号 高电平有效 它表示8251A发送器已空 即当一个数据发送完成后TxE变高 当CPU向8251A写入一个字符时 TxE变成低电平 48 10 3 38251A的编程命令 1 通信方式选择命令字 49 2 工作命令字 50 3 工作状态字 51 10 3 48251A初始化步骤 1 初始化编程步骤 1 芯片复位后 第一个写入奇地址端口的是方式选择命令字 约定双方的通信方式 同步 异步 数据格式 数据位和停止位长度 校验特征 同步字符特征 及传输速率 波特率系数 等参数 2 如果方式选择命令字规定了8251A工作在同步方式 那么 必须向奇地址端口写入规定的1个或2个同步字符 3 只要不是复位命令 不论同步方式还是异步方式 需向奇地址端口写入工作命令字 初始化结束后 CPU就可通过查询8251A的状态字或采用中断方式 进行正常的串行通信发送 接收工作 因为方式字 命令字及同步字均无特征标志位 且都是写入同一个端口 所以在对8251A初始化编程时 必须按一定的顺序 若改变了这种顺序 8251A就不能识别 52 2 内部复位命令 当8251A通过写入方式选择字 规定了8251A的工作方式后 可以根据对8251A工作状态的不同要求随时向控制端口输出工作命令指令字 若要改变8251A工作方式 应先使8251A芯片复位 内部复位命令字为40H IR 1 8251A芯片复位后 又可重新向8251A输出方式选择字 以改变8251A的工作方式 53 3 8251A初始化编程 1 异步方式下初始化编程要求使8251A工作在异步方式 波特率系数为16 字符长度为8位 偶校验 2个停止位 则方式选择字为 11111110B 0FEH 工作状态要求 复位出错标志 使请求发送信号有效 使数据终端准备好信号有效 发送允许TxEN有效 接收允许RxE有效 则工作命令字应为37H 假设8251A的两个端口地址分别为0C0H和0C1H 初始化编程如下 MOVAL 0FEHOUT0C1H AL 设置方式选择字MOVAL 37HOUT0C1H AL 设置命令字 54 2 同步方式下初始化编程要求8251A工作在同步方式 两个同步字符 内同步 奇校验 每个字符8位 则方式选择字应为1CH 工作状态要求 使出错标志复位 允许发送和接收 使CPU己难备好且请求发送 启动搜索同步字符 则工作命令指令应该是0B7H 又设第一个同步字符为0AAH 第二个同步字符为55H 还使用上例8251A芯片 这样要先用内部复位命令40H 使8251A复位后 再写入方式选择控制字 具体程序段如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论