VC串口通信技术与工程实践.docx
- 文档编号:9189882
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:22
- 大小:33.71KB
VC串口通信技术与工程实践.docx
《VC串口通信技术与工程实践.docx》由会员分享,可在线阅读,更多相关《VC串口通信技术与工程实践.docx(22页珍藏版)》请在冰点文库上搜索。
VC串口通信技术与工程实践
VC串口通信技术与工程实践
第一节:
计算机接口技术简介
常见的接口:
1、并行接口(每一次传送一个字或字节的全部代码)INTEL8255,MC6820,Z80_PIO,传送的距离比较近。
2、串行接口:
数据和控制信息是一位一位串行地传送下去,距离比较远,通常COM1使用是9针D形连接器,COM2使用是老式的DB25针连接器,
3、磁盘接口
(1)IDE接口,集成驱动器电子部件,不支持DMA数据传送,只使用标准的PCI/O端口指令来传送所有的命令,状态等
(2)EIDE接口,
4、SCSI接口。
具有多任务接口,具有总线仲裁功能。
按同步或异步方式传输数据,可分单端和差分传送方式,是智能化设备。
5、USB接口。
接口的控制方式:
(1)程序查询方式
(2)中断处理方式
(3)DMA(直接存储器存取)传送方式
数据通信:
终端与计算机之间的通信或计算机与计算机之间的通信:
用于接受和发送数据的设备称为数据终端设备DTE
用来连接与数据通信网络的设备称为数据通信设备DCE
RS_232 协议标准:
EIA_RS_232电信号规定:
在TXD和RXD上:
(数据即信息码)
逻辑1(MARK)=-3~-15V
逻辑0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制线上:
信号有效(接通,ON状态,正电压)=+3V~+15V。
信号无效(断开,OFF状态,负电压)=-3V~-15V
EIA_RS_232C与TTL转换:
EIA_RS_232C用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。
之间用集成电路转换器件如MC1488,SN75150来实现从TTL到EIA_RS_232C电平转换,MC1489,SN75154实现EIA到TTL电平转换。
MAX232实现TTL与EIA双向电平转换。
MC1488的引脚2(4,5)、(9,10)和(12,13)接TTL输入,引脚3、6、8、11输出端接EIA_RS_232C。
MC1498的1,4,10,13脚接EIA输入,而3,6,8,11脚接TTL输出。
连接器:
DB-25,DB-15和DB-9的各种类型的连接器,DB_25是PC和XT机连接。
DB-9连接器作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。
RS_232_C的接口信号:
标准接口有25条线,4条数据线,11条控制线,3条定时线,7条备用和没有定义线。
(1)联络控制信号线:
1、数据装置准备好(DSR),数据终端准备好(DTR),请求发送(RTS)用来表示DTE请求DCE发送数据,当终端要发送数据时,使信号有效。
允许发送(CTS)用来表示DCE准备接收DTE发来的数据,是对请求发送信号RTS的响应信号。
接收线信号检出(RLSD),用来表示DCE已接通通信链路,告知DTE准备接收数据。
振铃指示(RI)。
(2)数据发送与接收线
1、发送数据(TXD)通过TXD终端将串行数据发送到MODEM,(DTE_DCE)
2、接收数据(RXD)通过RXD线终端接收从MODEM发来的串行数据(DCE_DTE)。
(3)地线
1、SG,PG_信号地和保护地信号线,无方向。
RS_232串口通信基本接线方法:
当通信距离较近时(<12M 时,可以用电缆线直接连接标准RS_232端口。
RS-422定义了一种平衡通信接口,将传输速率提高到10MBIT/s,传输距离延长到4000英尺,并允许在一条平衡总线上连接最多10个接收器。
RS-422是一种单机发送、多机接收的单向、平衡传输规范。
RS_485增加多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围。
RS_422 RS_485数据信号采用差他传输方式,也称为平衡传输,发送驱动器A、B之间的正电平在+2_+6V,是一个逻辑状态,负电平在-2_-6V,是另一个逻辑状态。
接收器接收平衡线上的电平范围通常在200MV_-6V之间。
RS_422支持点对多的双向通信,接收器输入阻抗为4KQ,发端最大负载能力是10*4KQ+100Q(终接电阻)最大传输距离为4000英尺,最大传输速率为10MBITS,RS_422要一终接电阻,值约为传输电缆的特性阻抗。
RS_485电压是-7V_+12V之间,而RS_422在-7V―――+7V之间,RS_485接收器最小输入阻抗12KQ,要两个终接电阻。
(支持32个节点),采用终端匹配的总线型结构,不支持环形或星形网络。
RS_422与RS_485接地问题:
(1)共模干扰问题
(2)EMI问题即(电磁干扰问题)
IEEE1284标准为PC和外设之间的通信定义了双向通信协议,通过此PC和外设之间的双向数据传输速率可以比原来的并行端口提高20_50倍,定义了5 种数据传输模式:
正向传输模式(标准模式),两种反向传输模式(半字节模式,字节模式)两种双向传输模式(EPP模式,ECP模式)
增强型并行端口EPP协议定义了四种类型的数据操作周期:
数据写周期,数据读周期,地址写周期,地址读周期,数据周期用来向外设传输数据或从外设接受数据,地址周期用来交换设备地址、控制信息。
一个地址周期可以看成两个不同的数据周期。
扩展型并行端口(ECP)在总线命令种配置了并行适配器的相关信号,并且定义了比EPP功能更为强大的协议,通过这一协议在并行适配器上可以共存多个逻辑设备,ECP还允许在通过外设传输数据的同时进行被称为RLE的实时数据压缩。
在ECP传输模式中,还定义了数据传输和命令传输这两种PC主机和外设之间某个方向上的数据传输模式。
命令和数据都组成8位的形式通过8位DATA端口进行传输。
通过HOSTack信号可以确定DATA端口的信息流是数据或者是命令信息。
命令的类别可以通过命令字节的最高位MSB来确定。
如果最高位MSB为位1,则其余的数据位代表的是RLE计数器,如果最高位MSB数据为0,则其余的数据位代表的是通道地址,ECP数据传输模式中,通过通道不仅可能传输地址信息,同时还可能传输命令信息。
异步串口:
PC中的每一个COM或者COMM(通信)口都是由UART(通用异步接受发送器)控制的异步串行端口。
COM口可以是传统的RS_232接口,相关的诸如RS_485的接口或者是专门为内置的MODEM或者其他设备而设置的端口。
典型的UART有8250,16450和Z80SIO。
通过内部寄存器编程可以建立异步串行通信协议(数据传输速率、数据传输格式)以及UART操作方式(查询IO或者中断IO)。
UART硬件逻辑按功能可以分为4类:
系统IO总线,时钟,读写控制逻辑以及MODEM控制逻辑。
1、系统IO总线:
INS8250数据线(D0到D7)直接与CPU的数据总线的低8位相连接,是UART的数据输入和输出通道,读写操作由数据输入和输出选通线DISTR和DOSTR区分,实现UART与CPU之间的双向通信,包括数据、控制和状态信息等传送。
2、时钟:
3、读写逻辑控制:
UART和CPU之间通过一组信号线实现相互通信。
1)复位控制:
复位信号RESET有效,导致UART的输入端MR为高电平,而MR为UART的复位端,因此UART的内部寄存器数值将全部被清除。
2)芯片允许:
当CPU输出地址有效时,芯片选通脚CS2有效,而选通CS1和CS0与地址选通叫一直有效,这样就选中UART,可以对UART进行读或写操作。
3)寄存器选择:
UART内部包含10个寄存器,每个寄存器都可以单独寻址,通过输入地址的低三位选择相应的内部寄存器。
4)中断请求:
当允许UART中断,且满足中断类型条件,INTRPT将由低电平变为高电平,此时OUT2设置为有效,则将会向CPU申请中断。
5)读出数据有效:
在UART选中期间,如果DISTR有效,则CPU读出的数据有效。
假设接受缓冲寄存器中已经有一个字节在等待,则接受具体步骤:
将接收缓冲寄存器的地址放到寄存器选通输入端A2到A0上,CPU独口地址,IOR有效,使得DISTR有效,完成读操作,从接收缓冲器字节转移到数据总线的低8位D7到D0,并被CPU接收。
6)写入数据有效:
在UART选中期间,如果DOSTR有效,则CPU写入的数据有效。
CPU将跟输出数据字节放到数据总线的D7 ̄D0低8位上;发送缓冲寄存器的地址放到寄存器选通输入端的A2_A0上:
CPU写口地址,IOW有效,从而使得DOSTR有效,字节D7_DO被一如发送缓冲寄存器中。
当发送寄存器为空时,UART将跟字节经并串转换单元送到移位寄存器中。
4、MODEM控制逻辑:
INS8250中,MODEM控制逻辑完成UART与RS232之间的接口。
通过EIA驱动器驱动后的信号符合RS232标准。
其中EIA驱动器一方面完成TTL与EIA的逻辑电平转换,另一方面将信号反向,以符合RS-232C标准。
串口端口资源:
每一台PC机的每个串口人中都保留一系列的端口资源,大多数都有一个指定的的中断请求(IRQ)或者中断级别,端口被命名为COM1,COM2等。
串行接口输入输出过程描述:
串行接口包括4个主要寄存器,即控制寄存器、状态寄存器、数据输入寄存器及数据输出寄存器。
控制寄存器用来接收CPU送给此接口的各种信息,而控制信息决定接口的工作方式。
状态寄存器的各位叫状态位,每一个状态位都可以用来指示传输过程中的的某一种错误或者当前传输状态。
数据输入寄存器总是和串行输入、并行输出移位寄存配对使用。
在输入过程中,数据一位一位从外部设备进入接口的寄存器,当接收完一个数据后,数据就从移位寄存器送到输入寄存器,再等待CPU来取走。
并行端口结构:
在计算机中实现并行端口,要3个独立端口,一个输出端口向打印机发送数据,称为DATA端口;一个输入端口用来传输选通信号和复位信号,称为STATUS端口,一个输入端口从打印机中读取应答信号、忙信号及出错信号,称为CONTROL端口。
实际的并行打印机适配器使用17个信号。
DATA有8个数据信号,STATUS端口有5个状态信号,CONTROL端口中4个信号。
并行接口可以只设计为输出接口,还可设计为输入接口,还可设计成作为输入又作为输出的接口。
可以用两种方法实现:
一、利用现一个接口中的两个通路,一个作为输入电路,一个作为输出电路;二、另一种是用一个双向通路,作为输入又作为输出。
输入过程在并行接口中应该有一个寄存器用来接收CPU对它的控制命令,有一个状态寄存器提供各种状态位供CPU查询。
CRT中:
带宽:
可接受带宽=水平像素*垂直像素*刷新频率*额外开销(一般为15)
点距:
同一像素中两个颜色相近的磷光体间的距离。
第2节:
端口通信编程基础
同步传输方式:
采用同步传输时,将许多字符组成一个信息组,字符可以一个接一个地传输,但是,在每且信息的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。
在同步传输过程中,一个字符可以对应5_8BIT。
对同一个传输过程中,所有字符对应同样的比特数。
同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用同一个代码,在整个系统中,由一个统一的时钟控制发送端的发送和空字符。
接收端当然是应该能识别同步字符的,当检测到有一串比特和同步字符和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的比特作为实际传输信息来处理。
异步传输方式:
异步传输方式指比特被划分成小组独立传送。
每次异步传输都以一个开始比特开头,它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存数据比特的时间,在传输结束时,一个停止比特表示一次传输的终止。
异步传输被设计用于低速设备。
如键盘和某些打印机等。
(效率低,只用于点到点的数据传输,同步传输可用于点和多点之间的数据传输)
在串行通信中,数据流的方向可分:
单工、半双工和全双工。
单工:
单工通信使用一根导线,信号的发送方和接收方有明确的方向性。
半双工:
使用同一根传输线作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工制。
目前多数终端和串行接口都为半双工提供了换向能力,也为全双工提供了两条独立的引脚。
全双工:
当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制。
在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送。
全双工方式不用进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用十分有利。
端口通信(通信协议):
所所谓通信协议是指通信双方的一种约定。
约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题作出统一规定,通信双方必须。
也称为通信控制规程,或称为传输控制规程,它属于ISO的OSI(开放系统互联)七层参考模型中的数据链路层。
通信协议有两类:
异步协议和同步协议。
同步协议以有面向字符和面向比特以及面向字节计数三种。
其中,面向字节计数的同步协议主要用DEC公司的网络体系结构中。
在ISO的OSI模型中,有应用层,表示层,对话层,传输层,网络层,数据链路层,物理层(网络硬件)。
EIA_RS_232实现了物理层:
IBM的SDLC(同步数据链路控制)规定为数据链路层ADCCP(先进数据通信控制规程)为数据链路层,IBM的BSC(二进制同步传输协议)数据链路层;应用层的电子邮件协议SMTP只负责寄信、POP3只负责收信TCP/IP也仅仅实现了五层协议:
物理层对应OSI的物理层、网络接口层-对应于OSI的数据链路层,INTERNET层_OSI模型未考虑网间连接(在INTERNET使用前提出),传输层_对应OSI的传输层,应用层-对应OSI的表示层和应用层。
串行通信协议分为:
同步协议和异步协议
(1)面向字符的同步协议
SYN(单同步) SYN(双同步) SOH(标题开始,序始字符) 标题 STX(方始字符) 数据块 ETB/EXT(块(文)终字符) 块校验
这种协议的典型代表是IBM公司的二进制同步传输(BSC)协议。
一次传送由若干个字符组成的数据块,而不是只传送一个字符,并规定了10个字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息,它们也叫做通信控制字。
由于被传送的数据块由字符组成,称作为面向字符的协议。
每一帧开始都有SYN(同步字符),一个SYN为单同步,加两个SYN的称为双同步,SOH包括院地址、目的地址和路由指示等信息。
STX是文始字符,标志传送的正文(数据块)开始,数据块就是被传送的正文内容,由多个字符组成。
数据块后面是组终字符ETB或文终字符ETX,其中ETB用在正文很长,分成若干个分数据块,分别在不同帧中发送的场合,这里在每个分数据块后面用文终字符ETX。
一帧的最后是校验码,它对从SOH开始到ETX(或ETB)字段进行校验,检验方式可以是纵横奇偶校验或CRC。
还有控制字:
送毕(EOT),询问(ENQ),确认(ACK),否认(NAK),转义(DLE)。
在面向字符的同步协议中,协议应具有将特定字符作为普通数据处理的能力,这种能力叫做“数据透明”。
协议中设置了转义字符(DLE),当把一个特定字符看成数据时,在它前面要加一个DLE,这样接收器收到一个DLE就可预知下一个字符是数据字符,而不会把它当作控制字符来处理。
(2)面向比特的同步协议:
标志(F),地址(A),控制(C),数据信息(INFO),帧检验序列(FCS),标志(F)。
面向比特的协议中最具有代表性是IBM的同步数据链路控制(SDLCS)规程,国际标准化组织ISO的高级数据链路控制(HDLC)规程,美国国家标准协会的先进数据通信控制规程(ADCCP)。
这些协议的特点是所传输的一帧数据可以是任意比特,由约定的比特组合模式,而不是由特定字符来标志帧的开始和结束。
帧信息分段:
SDLC/HDLC的一帧信息包括以下几个场(FILED),所有场都是从有效比特开始传送。
SDLC/HDLC标志字符:
协议规定,所有信息传输必须以一个标志字符开始,且以同一个字符结束。
这个标志字符是01111110,称标志场(F),从开始标志到结束标志之间构成一个完整的信息单位,称为一帧。
所有的信息以帧的形式传输的,而标志字符提供了每一帧的边界。
地址场和控制场:
在标志场之后,可以有一个地址场A(ADDRESS)和一个控制场C。
地址场用来规定与之通信的次站的地址。
控制场可规定若干命令。
SDLC规定A与C场的宽度为8BIT或16BIT。
接收方必须检查每个地址字节的第一比特,如果为“0”,则后面跟另一个地址字节,若为“1”,则字节就是最后一个地址字节。
同理,如果控制场第一个字节的第一位比特为“0”,则还有第二个控制场字节,否则只有一个字节。
信息场:
跟在控制场之后的信息场(I),I场包含有要传送的数据,并不是每一帧都必须有信息场,数据场可以为0,当它为0时,则这一帧主要是控制命令。
帧校验信息:
紧跟在信息场后的两字节的奇偶检验(FC),或者帧校验序列(FCS)均采用16比特循环冗余检验(CRC)码。
起止式异步协议_异步传输协议的实例:
起止式异步协议:
是一个字符一个字符传输,并且传送一个字符总是以起始比特开始,以停止位结束,字符之间没有固定的时间间隔要求。
每一个字符的前面都有一位起始比特(低电平,0),字符本有5-7比特数据位组成,接着字符后面是一位检验比特(也可以没有),最后是一比特,或一比特半或二比特停止比特,停止比特后面是不定长度的空闲比特。
停止比特和空闲都规定是高电平。
起止比特:
起始比特实际是作为联络信号附加进来,当它变为你电平时,告诉收方传送开始,表示下面接着是数据比特来了,要准备接收,而停止位标志一个字符的结束,它的出现,表示一个字符传送完毕。
数据编码:
常用的编码,
(1)美国标准信息交换码(ASCII)。
这是一种7BIT编码。
(2)扩展的二进制表示的十进制编码(EBCDIC)用于IBM大型和外围设备,是一种8BIT代码,有256个不同的字符。
(3)博多码、莫尔斯码和二-十进制码(BCD)
数据安全和完整:
1、奇偶检验:
大多数错误检测技术都发送其值与数据相关的附加比特。
奇偶校验计算数据中为1的比特的个数,再增加一个附加比特,使得1的个数为偶数或奇数。
如传输字符‘E’,“0100,0101”,在奇校验_所有传送的比特(含字符的各比特和检验比特)中,‘1’的个数为奇数,则可以为00100,0101。
在偶检验―――可以为10100,0101。
2、循环冗余检验:
是一种将每个比特串看成一个多项式,通过多项式除法来检测错误的访求。
这种方法将比特串BnBn-1Bn-2..B2B1B0解释成多项式
BnXn+Bn-1Xn-1….+B1X1+B0X0
CRC的基本步骤为:
1.事先约定的生成多项式G(X)。
2.给定一个比特串,在其尾部加几个0(0的个数等于G(X)的次数)形成新串B,让多项式B(X)对应于B。
3.将B(X)除以G(X),求出余式R(X)。
4.定义T(X)=B(X)-R(X)
5.传输与T(X)对应的比特串T。
6.让T代表接收方收到比特流,T(X)为相应的多项式。
接收方将T(X)除以G(X)。
若余数为0,则接收方认为T=T,传输没有错误。
模数/数模转换:
模数转换器(ADC)和数模转换器(DAC)。
数模转换器(DAC)有N条数字输入线和一条模拟输出线,通过这条输出线以电流或电压的形式来输出模拟信号。
2j-1),常用的数模转换器主要有DAC0800、AD558、AD7458和MAX521。
模数转换器(ADC)把以电压或电流形式表示的模拟信号转换成计算机能够处理的数字信号的电子设备。
模数转换过程主要包括采样、量化、与编码。
采样是使模拟信号在时间上离散化,量化与编码则是把采样后得到的离散幅值经过舍、入的方法变换为有限数并转换为二进制。
常用模数转换器:
ADC0804,MAX158,MAX186,MAX111/MAX110
比特率:
描述一种传输媒体的容量,单位为bit/s,比特率取决于两个要素:
信号单元变化的频率(波特率)和比特串中比特的个数。
比特率=波特率*N=2F*N。
如果定义B是不同单元的个数的话,B=2N最终可得 比特率=2F*LOG2B。
在40年代:
比特率=带宽*LOG2(1+S/N),S为信号能量,N为噪声能量。
流量控制方式:
根据接收方的需要或响应来调整发送数据的量和速率。
1、逐个字符的流控制过程:
2、行流控制
流控制协议:
1、用于硬件设备的流控制协议
2、字符协议 流行的字符流控制协议XON/XOFF
3、整行协议 ETX/ACK协议
4、文件传输协议(FTF)
自动重发请求(ARQ)协议
1、发送并等待ARQ
2、连续ARQ
串行适配器终端和IO地址
PC_AT有16条IRQ(中断请求)线,串口编程主要使用前8条IRQ线。
如下面所说:
NM1 (非屏幕中断) (IRQ)0 定时器 1键盘 2 保留
3 串口2 4 串口1 5硬盘 6软盘 7并口1
硬件中断4分配给第一个异步传输适配器,中断3分配给第二个异步传输适配器。
PC机中用于串行通信的IO端口组成一个系列,对于主适配器从3F8开始,对于次适配器从2F8H开始。
端口编程(在32位模式下)有4 种方式:
1、以文件方式打开串口 :
一、CreateFile()来打开串口:
如打开COM1端口:
HANDLEhCom;
DWORDdwError;
hCom=CreateFile(“COM1”,//文件名GENERIC_READ|GENERIC_WRITE,0,NULL,
OPEN_EXISTING//打开而不是创建,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
If(hCom==INVALID_HANDLE_VALUE)
{
dwError=GetLastError();
}
二、串行口的初始化:
DCB结构中包含诸如数据传输速率、每个字符的数据位数、奇偶校验和停止位数等信息。
在查询或配置串行口的属性时,都用DCB结构来作为缓冲区。
调用GetCommState函数可以获得串口的配置,此函数把当前配置填充到一个DCB结构中,然后用SetCommState函数用指定的DBC结构来设置串行口。
三、利用ReadFile()和WriteFile()对串行端口进行读写操作,完成数据传输过程
四、关闭串口
2、使用现有的ACTIVEX控件实现 :
MSCOMM控件。
3、直接嵌入汇编法 :
如 实现COM1端口的线控制寄存器的最高位为1的操作:
Intmain(intargc,char*argv[])
{
_asm{
Movdx,3FBH
Mova1,80H
Outdx,al
}
}
4、编写VXD或者WDM实现
第3节:
用MSCOMM控件进行串口编程
MSCOMM控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
每个MSCOMM控制对应一个串行端口,访问多个串行端口,必须使用多个MSCOMM,它提供两种处理通信问题的方法:
一是事件驱动(EVENT_DRIVEN)方法,一是查询法。
在PC机串行端口通信时,使用了十几条线进行信号传输,利用MSCOMM控件开发串口通信软件,至少要了解以下和条线的名称及其作用。
这5条线的高低
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 串口 通信 技术 工程 实践