虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!
目录
第1节——串行通信的相关概念
●串行传送的特点
●异步通信和同步通信
●信号的调制和解调
●信息的检错与纠错
●波特率与发送/接收时钟
●串行传送
❶在一根传输线上逐位传送,既作数据线又作联络线
❷数据格式有固定的要求:异步通信和同步通信
❸传送速率需要控制:波特率
❹既适合近距离传输又适合远距离传输(MODEM支持)
❺容易出现差错
●串行传送方式
异步通信与同步通信
●异步串行通信
概念:
▶以字符为单位传送。字符作为一帧数据随机出现
▶一旦传送开始,双方以约定速率,逐个传送字符中的每一位。
特点:
▶字符随机出现:异步
▶位与位之间严格定时:同步
▶发和收双方不需严格同步和同频,允许相对延迟和频差。
●问题:如何实现串行通信的同步
▶在典型的串行通信系统中,不存在同步信号线!
▶要实现有效的串行通信,通信双方遵从软硬件约定:波特率、波特率因子、通信格式
①波特率
▶指单位时间内传送二进制数据的位数,以位/秒为单位。
▶假如每秒传送120个字符,每字符含10bit。
则波特率=10×120=1200bit/s
▶每位数据的传送时间Td = 1/1200 = 0.833ms
②波特率因子
▶发送端/接收端:发送时钟、接收时钟
▶传输线上每位数据持续长度对时钟周期的倍数:波特率因子
波特率因子 = 每位长度 / 时钟周期
1或16或32或64
③字符格式(起止式异步通信格式)
▶每个数据都由起始位、数据位、奇偶校验位和停止位组成。
●起止式异步通信格式
起始位:1位,低电平(逻辑值0)
数据位:5-8位:紧跟在起始位后面,传送的有效信息
奇偶校验位:1位,可有可无
停止位:1位,1.5位,2位;高电平。
空闲位:紧跟停止位,个数不定,高电平。
串行传送的过程
①首先约定通信格式和波特率
②传输开始后接收方检测传输线是否有起始位(电平下跳沿)
③起始位后接着是已协商好的若干数据位、校验位、停止位
④当出现停止位时表示一个字符传输的结束
⑤去掉停止位,进行奇偶校验,确认接收正确
⑥继续开始监视下一个数据传输的起始位
起止位的作用
①起始位和停止位作为联络信号被附加到传输过程中。
②一定程度消除了收发双方时钟带来的传输误差;
③缺点:降低了传输效率
●串行通信的传送方向:单工、全双工、半双工
❶单工
通信双方中,一方固定当发送方发送数据,另一方固定当接收方接收数据。
❷全双工
数据可以在两个方向上同时传送。
特点:
①使用二根传输线
②双方都具有发送器和接收器,能同时收发数据。
③适合实时的交互式的数据传送。
❸半双工
数据可以在两个方向上传送,但是不同同时进行。
特点
①一根传输线
②双方都具有发送器和接收器,但不可同时发送和接收。
③通过“收/发开关”切换发送和接收的功能
第2节——串行通信接口标准—RS232C
●调制和解调
▶传送前:数字变为模拟信号(调制:调制器, Modulate )
▶接收时:模拟还原数字信号(解调:解调器, Demodulate )
▶调制解调器(MODEM) :同时具有调制和解调两种作用
●RS — 232接口标准
▶适合于传输速率0-20Kb/s的通信
▶数据终端设备(DTE)与数据通信设备(DCE)之间的接口。
DTE:处理二进制信号的设备(计算机)。
DCE:信号匹配器,管理通信连接(MODEM)。
●RS232C
▶①接口的机械性能
▶②接口的电气特性
▶③接口的信号功能
▶④接口的连接方式
①机械特性——连接器类型和电缆长度 | |
▶DB-25针 ▶DB-9针 ♦2个数据线 ♦6个控制线 ♦1个地线 ▶电缆长度 ♦(20kb/s)直连 < 15M ♦零MODEM | |
②电气特性——EIA逻辑 | |
▶信号的逻辑定义 ♦1:-5V~-15V ♦0:+5V~+15V ♦负逻辑 ▶电平特点 ♦范围宽,电压高 ♦抑制噪声 ♦增加距离 ▶与TTL电平(0-5V)的转换 ♦TTL->EIA:MC1488 ♦EIA->TTL:MC1489 ♦TTL<-->EIA:MAX232(0-5V<-->10V<-->-10V) |
●信号功能定义
●串行通信的信号线的连接 |
❶近距离连接(<15m),不适用MODEM(调制解调器) |
♦仅使用3条线(发送线TxD,接收线RxD,信号地线SG) ♦注意:ExD和TxD的交叉连接 |
❷远距离连接(>15m)使用MODEM,交换电话线 |
♦RI:表示MODEM收到交换台的呼叫 ♦DTR:MODEM收到呼叫后给对方应答,从而建立通信链路 |
❸远距离连接(>15m)使用MODEM,专用传输线 |
♦不适用DTR(4号)和RI(9号)进行联络与控制 |
第3节——串行接口芯片8251A
●8251A的主要功能
❶串行数据←→并行数据
❷接收外设送来的串行数据→并行数据送给CPU
❸接收CPU送来的并行数据→串行数据送给外设
♦串行数据←→并行数据
♦格式化数据
♦错误检测和纠正
♦提供符合RS232C标准的信号线
❹缺乏:
♦电平适配:EIA电平←→TTL电平
♦传输速率控制
8251A的特点
♦①支持异步通信和同步通信
♦②(同步通信)可设定停止位为1位、1位办或2位
♦③(同步通信)可设定同步方式:单同步、双同步或外同步。同步字符可由用户自己设定
♦④可设定奇偶校验方式或不检验。校验位的插入、检出及检错都由芯片本身完成。
♦⑤(异步通信)可设定时钟频率:波特率的1倍、16倍或64倍
♦⑥可设定波特率:0~19.2K(异步通信),0~64K(同步通信)
♦⑦接收数据、发送数据有分开的缓冲器,可进行全双工通信
♦⑧提供与外设(MODEM)的联络信号,便于和通信线路相连接
8251A内部结构 | |
●I/O缓冲器 |
|
①接收缓冲器 ♦串口收到的数据变成并行数据后,存这里供CPU读取。 | |
②发送数据/命令缓冲器 ♦CPU送来的并行数据存放在这里,准备向外发送 ♦CPU命令存放在这里 | |
③状态缓冲器 ♦存放8251A状态供CPU查询 | |
●读/写逻辑控制 | |
接收CPU的控制信号,控制数据的传送方向 | |
●调制解调器控制 | |
提供和调制解调器的联络信号 | |
●接收器及接收控制 | |
从RxD接收串行数据,按字符格式装配成并行数据 |
●接收器的工作过程
❶从RxD逐位接收串行码,转为并行码送到DB上
❷串口允许接收后
❸接收控制电路监视RxD的电平,一旦出现低电平
❹开始采样数据位,并逐位移入接受移位寄存器中。采用重复进行,直至采样规定的停止位为止
❺将有效数据并行送入接收数据寄存器,并由奇偶检测逻辑输入数据进行奇偶校验,并根据校验结果置状态寄存器相应标志位
❻CPU读取数据
●发送器及发送控制
从CPU接收并行数据,自动加上适当的控制信号并转换成串行数据后从TxD引脚发送出去
●发送器的工作过程
❶发送器接收CPU送来的并行数据,加上起始位、奇偶校验位和停止位,转换为串行码,逐位送到TxD发送
❷CPU把要输出的数据写入发送数据寄存器
❸发送控制逻辑对数据格式化,即加上起始位、奇偶校验位和停止位等信息
❹格式化后的数据由发送移位寄存器按选定的传输速率逐位移出,由TxD逐位输出
●8251A的外部引脚和特性 | |
面向CPU的信号 面向外设(MODEM)的信号 时钟信号 | |
●面向CPU的信号 | |
①D0~D7: 双向三态数据总线 | |
②WR,RD:读,写控制信号 | |
③CS:片选信号 | |
④RESET:芯片复位 | |
⑤C/D 区分命令(含状态)或数据 与A0连接,区分两个端口 | |
●8251A的端口和读写操作 | |
●面向CPU的信号(和发送相关) | |
①TxRDY ♦输出,发送准备好,高电平有效 ♦发送寄存器空闲,以通知CPU可以送来新的数据,当CPU写入新的数据后,变低电平 ♦用法:产生中断请求信号或查询状态寄存器D0位 | |
②TxE ♦输出,发送器空,高电平有效。 ♦表示发送器的发送移位寄存器的数据发送完毕 ♦用法:产生中断请求信号或查询状态寄存器D2位 | |
●发送过程 | |
TxRDY有效→CPU写数据到8251A→8251发数据→发送完毕,TxE有效 | |
●面向CPU的信号(和接收相关) | |
①RxRDY 接收器准备好,高电平有效 | |
♦已从RxD收到字符准备送CPU ♦CPu取走数据后,RxRDY变低 ♦用法:产生中断或查询状态寄存器D1位 | |
②SYNDET/BD 同步检测信号 | |
♦同步方式:同步检测(内同步输出,外同步输入) ♦异步方式:间断检测(输出:检测到间断码输出高电平) | |
●接收过程 | |
8251接收数据→RxRDY有效→CPU读8251 | |
●面向外设的引脚(发送相关)发送数据线和相关联络信号 | |
①TxD ♦发送数据的输出线 ♦外设/Modem发来CTS=0开始发送 | |
②RTS:请求发送,输出,低电平有效 ♦通知外设/modem:DTE准备发送 ♦通知工作命令的D5位 置1实现 | |
③CTS:发送允许,输入信号,低电平有效 ♦外设/MODEM对RTS的响应:允许8251A发送数据 | |
●面向外设的引脚(接收相关):接收数据线和相关的联络信号 | |
①RxD ♦串行数据接收线 | |
②DTR:DTE准备好,输出,低有效 ♦通知外设:已准备好接收新数据 ♦通过工作命令D1位 置1实现 | |
③DSR:DCE准备好,输入,低有效 ♦DCE对DTR的响应,表示DEC已经准备好给DTR发送一个新数据 ♦查询状态字D7位获得DSR状态 | |
●时钟线 | |
①RxC:接收器时钟 ♦由外部提供,控制接收数据的速率 ♦异步方式:RxC频率可以波特率的1倍或16倍或64倍 ♦同步方式:RxC的频率与波特率相同 | |
②TxC:发送时时钟 ♦由外部提供,其频率的选择和RxC相同。实际应用中把TxC和RxC连接同一个时钟源 ♦数据在TxC的下降沿由发送器移位输出 | |
③CLK:工作时钟 ♦由外部时钟源提供。为芯片内部电路提供定时 ♦异步方式CLK频率要大于RxC或TxC频率的30倍 |
第4节——8251A操作和命令
❶方式命令字 |
●确定8251A通信方式(同步/异步)、校验方式(奇校验/偶校验/不校验)、停止位位数、数据位位数及波特率因子 ●在复位后写入,且只需写入一次 |
●方式命令 |
①D1 D0:确定8251A是工作于同步方式还是异步方式:D1D0=00:同步 ≠00:异步 D1D0的3种组合选择波特率因子(1、16或64) |
②D3 D2:确定一个数据(字符)包含的数据位数 |
③D5 D4:确定要不要校验以及奇偶校验的性质 |
④D7D6:同步时用以指定位的位数 同步时确定是内同步还是外同步,以及同步字符的个数 |
❷工作命令 |
●指定8251A进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种状态(如DTR),以便接收或发送数据 |
●格式 |
①D0:允许发送TxEN ♦D0=1:允许通过TxD线发送 ♦D0=0:禁止发送 ♦可作为发送中断屏蔽位 |
②D1:数据终端准备就绪DTR ♦D1=1:强置DTR有效(低电平),表示终端设备已准备好 ♦D1=0:强置DTR无效 |
③D2:允许接收RxE ♦D2=1:允许通过RxD线接收 ♦可作接收中断屏蔽位 |
④D3:发中止字符SBRK ♦D3=1:强迫TxD为低电平,输入连续的空号 ♦D3=0:正常操作 |
⑤D4:错误标志位复位ER ♦D4=1:使状态字中的错误标志位(PE/OE/FE)复位 ♦D4=0:错误标志不复位 |
⑥D5:请求发送RTS ♦D5=1:强迫RTS有效(低电平) ♦D5=0,不进行内部复位 |
⑦D6:内部复位IR ♦D6=1:内部复位 ♦D6=0:不进行内部复位 |
⑧D7:进入搜索方式EH(只对同步方式起作用) ♦D7=1:启动搜索同步字符 ♦D7=0:不搜索同步字符 |
●例:实现8251A复位 |
MOV DX, 309H ; 8251A命令口 MOV AL, 01000000B ;置D6=1.使内部复位 OUT DX, AL |
●例:异步通信时,允许接收,同时允许发送 |
MOV DX, 309H ; 8251A命令口 MOV AL, 00000101B ;置D2=1.D0=1,允许接收和发送 OUT DX, AL |
❸状态字 |
●作用 |
报告8251能否开始发送或接受,以及接收的数据有无错误 |
●格式 |
状态字是8251A在执行命令的过程中自动产生的,状态寄存器的某状态位 置1,表示有效 |
●出错转态位:D3~D5 |
①D3:奇偶错PE,接收器检测出奇偶错时,PE置“1” ♦PE有效并不禁止8251A工作 |
②D4:溢出错OE ♦前一字符未被CPU取走,单新字符又来了,则OE置“1” ♦OE有效并不禁止8251A工作,但溢出字符丢掉了 |
③D5:帧出错FE(只用于异步方式) ♦接收器在字符后面没有检测到停止位,则FE置“1” |
以上三个错误状态位,均由工作命令字的ER位复位 |
●例:串行通信发送数据之前需检查是否可以开始发送。D0 |
;检查状态字D0位是否置1,即查TxRDY = 1 L:MOV DX,309H ;8251A状态口 IN AL,DX AND AL,01H ;查发送器是否就绪 JZ L ;未就绪,则等待 |
●例:串行通信接收数据之前先检查是否可以开始接收。D1 |
; 查状态字的D1位是否置1,即查 RxRDY = 1? L: MOV DX, 309H ; 8251A状态口 IN AL, DX AND AL, 02H ; 查接收器是否就绪 JZ L ; 未就绪,则等待 |
●例:接收程序,检查出错信息D3~D5 |
MOV DX, 309H ; 8251A状态口 IN AL, DX TEST AL, 38H ; 0011 1000 检查D5,D4,D3三位 JNZ ERROR ; 若其中有一位为1,则出错,并转入错误处理程序 |
●8251A初始化和操作流程 |
●方式命令、工作命令、状态字之间的关系 |
♦方式命令:约定通信方式和数据格式 ♦工作命令:数据开始发送或接受 ♦状态字:提供可发送或接收的条件 |
●注意: |
♦传送数据前先初始化,确定发送方式与接收方式的通信格式 ♦由于三个字没有特征位,且方式命令字和工作命令字放入同一端口,因而要求按一定顺序写入控制字,不能颠倒。 ♦方式命令字必须跟在复位命令之后:即复位后的命令认为是方式命令 |
●例1:接收数据 |
采用查询式接收数据。异步传送,波特率因子为64,7位数据位,偶校验,1停止位。8251A端口地址208。 |
MOV DX,209H ;控制端口地址 ;波特率因子64(11),7位数据位(10),偶校验(11),1停止位(01)。 MOV AL,7BH ;01111011B:方式命令 OUT DX,AL ;接收数据(D2:1)、正常工作(D3:0)、清除错误标志(D4:1) MOV AL,14H ;00010100B:工作命令 OUT DX,AL WAIT:IN AL,DX ;读状态字 AND AL,02H ;00000010:状态字 JZ WAIT ;检查RxRDY是否为1 MOV DX,208H ;数据端口地址 IN AL,DX ;输入数据 |
●例2:发送数据 |
异步传送,波特率因子64,7位数据,偶校验,1位停止位。8251 与外设有握手信号,查询方式发送数据。端口地址208H |
MOV DX,209H ;控制端口地址 ;波特率因子为64(11),7位数据位(10),偶校验(11),1停止位(01)。 MOV AL,7BH ;01111011B:方式命令 OUT DX,AL ;发送数据(D0:1)、正常工作(D3:0)、清除错误标志(D4:1)、请求发送(D5:1) MOV AL,31H ;00110001B:工作命令 OUT DX,AL WAIT:IN AL,DX TEST AL,01H ;检查TxRDY是否为1 JZ WAIT ;(=0转WAIT) MOV DX,208H ;8251A数据端口地址 MOV AL,88H ;输出的数据送AL OUT DX,AL |
所有有疑问的人,可以推荐一个老师给你们:
搜索“慕课”,然后去主页搜索“苏曙光”,这个老师真的真的优秀!讲课从不拖泥带水,精简干练,而且条理清晰,层次分明,超级严谨的!(我不是夸张,你可以当做我是个脑残粉)他目前还没有开设“微机原理”这门课,但是他开了一门《操作原理系统》。你点进去就可以加入学习了,然后去讨论区里去问他!!!