异步串行接口

异步串行接口
异步串行接口

异步串行接口

在目前的DVB-C广播电视系统的传输接口中,有两种MPEG-2视频传输接口标准:异步串行接口标准ASI和同步并行接口SPI。SPI一共有11位有用信号,每位信号差分成两个信号用来提高传输抗干扰性,在物理链接上用DB25传输,因此连线多且复杂,传输距离短,容易出现故障。但SPI是并行11位信号,处理简单且扩展性强,因此目前一般的MPEG-2视频编码器的输出和视频***的输入都是标准的并行1 1位信号。ASI用串行传输,只需一根同轴电缆线传输,连线简单,传输距离长。根据SPI和ASI的优缺点,需要传输信号的SPI和ASI的互相转换。

1 SPI信号结构

并行传输系统SPI包括一位时钟信号、8位数据信号、一位帧同步信号PSYNC 和一位数据有效信号DVALID。帧同步信号对应TS包的同步字节047H,DVALID信号用来区分TS包的长度为188个字节或204个字节。当TS包长为188字节时,D VALID信号一直为高,同时所有信号都与时钟信号保持同步。

2 ASI接口

ASI传输流可以有不同数据速率,但传输速率恒定,为270Mbps,因此ASI可以发送和接收不同速率的MPEG-2数据。ASI传输系统为分层结构。最高层、第2

层使用MPEG-2标准ISO/IEC 13818-(Systems),第0层和第1层是基于ISO/I EO CD 14165-1的FC纤维信道。FC支持多种物理传输媒介。

首先将包同步的MPEG-2传送包的8-bit码字转换成10-bit码字;接着在并/串转换时,当要求输入一个新字、而数据源还没有准备好时,应插入一个K28.5的同步字,以达到ASI的固定270Mbps传输速率。所形成的串行比特流将通过缓冲/驱动电路和耦合网络,送到同轴电缆连接器上。插入同步码字可以有三种方法:传输码流的单个字节前后不能都是同步字;传输码流的单个字节前后必须都是同步字;或者是两者的组合。

到达同轴电缆的接收数据,首先要经过连接器和耦合网络耦合到恢复时钟和数据的电路上,然后进行串/并变换;为了恢复字节同步,ASI***必须先搜寻到K28.5同步字,一旦搜索到该同步字,即为随后接收的数据标定了边界,从而建立了***输出字节的正确字节排列;最后进行10/8-bit变换,恢复出包同步的MPEG-2 TS码流数据。但是K28.5同步字不是有效数据,因此解码时必须删除。

3 ASI接口实现方案

在本方案中,MPEG-2 TS码流由单片MPEG-2编码器MB86390提供,它输出符合SPI标准的并行11位信号,TS包长度为188个字节。在SPI/ASI转换方案中,

主要选用CYPRESS公司cyb923/cyb933芯片、异步FIFO和逻辑编程器CPLD实现。

cyb923主要实现码字的8/10bit转换、插入同步字K28.5和并/串变换。ASI的传输速率恒定为270MHz,而输入MPEG-2 TS码率是不同的,所以要用FIFO实现速率匹配,需要对输入的SPI数据、FIFO和cyb923之间的通信进行逻辑控制。综合性能、价格和程序复杂度的考虑,本方案采用xilinx公司的CPLD逻辑编程器XC9 5108;用VHDL编程实现对它们的逻辑控制。ASI的解码也是相似的过程,cyb933主要实现10/8bit转换、去除同步字K28.5和串并变换。

3.1 ASI编码

在ASI的编码过程中,只需将MPEG-2 TS的八位数据和一位TS码率传输时钟输入到CPLD。因为在本方案中,TS格式为188个字节,因此数据有效信号DVALI D一直为高,CPLD忽略这个信号,只管接收TS码流数据,而不用关心TS码流的同步头。PSYNC帧同步信号也一样忽略。CPLD将接收到的数据以TS码率时钟写入FIFO。当FIFO半满时,CPLD接收到FIFO的半满信号,然后CPLD给cyb923发FIFO可读信号,cyb923以27Mbps读取FIFO中的数据;当CPLD计数到cyb92 3读取了一定数量的FIFO数据,CPLD则向cyb923发送FIFO不可读信号,防止FI FO读空。MPEG-2传输码率的并行最大速度为27/8=3.375Mbps,而读FIFO速率为27Mbps,因此FIFO不会有溢出。考虑到延时,本方案选用较小容量的FIFO720 2。cyb923在FIFO不可读时,向ASI码流中填充K28.5以维持270Mbps的固定传输速率。最后串行数据经过驱动就可用同轴电缆传送出去。本方案中,同步字K28.5的插入采用传输码流的单个字节前后不能都是K28.5同步字的方式。这种方案相对其它两种方案来说,判断和处理都相对简单。

3.2 ASI解码

在ASI的接收端,输入的ASI码流经过均衡后,输入到cyb933芯片。它由内部的时钟锁相环首先锁定ASI码流时钟,检测同步字K28.5;找到后即确定了ASI 比特流顺序,然后进行串/并转换。

由此可知,检测到K28.5,即字节对齐是ASI解码的重要前提,由此cyb933定义了一套检测字节同步的方法。考虑到传输误码等原因可能造成假K28.5,因此cyb93 3采用双字节确认方法。即连续两个字节都是K28.5,才确认字节同步了,接着进入正常的单字节解码状态。在解码状态,如果在64个解码字节中,CPLD计数到有16个字节是错误的,则CPLD必须向cyb933发送信息,要求cyb933重新进行字节同步。

字节同步后,因为K28.5是cyb923插入的同步字节,不能作为有效数据输出,cyb933自动略除这些同步字节。当cyb933检测到有效数据时,cyb933将输出一位当前数据有效的指示,如果把这个信号当作FIFO的写有效,则FIFO中的数据一定都是有效数据了。当FIFO半满时,CPLD接收FIFO的半满信号后,CPLD读取FI

FO中的数据,并根据读出的字节是否是047H来确定TS包的同步字节;如果找到T S包同步字,将恢复对应的帧同步信号,此时CPLD计数188恢复出完整的TS包,接下来的字节如果不是047H,说明输入数据有误,CPLD将丢弃这些数据直到找到0 47H同步字,在此期间CPLD输出TS空包。重新包同步后,CPLD才又开始计数输出正确的188字节的MPEG-2 TS包,从而恢复出SPI正确的11位信号。同样,当FIFO数据不可读时,CPLD也输出TS空包,以维持输出的MPEG-2码率恒定。

在SPI转ASI的设计中,直接对SPI数据进行ASI编码,而不考虑误码问题。主要考虑SPI数据直接从MB390输出,没有经过远距离传输,因而降低了ASI编码逻辑控制的复杂度。在ASI解码过程中,ASI数据经过远距离传输,要考虑误码的因素,所以增加了字节和包的重同步设计,以增加抗干扰能力。本方案在实际应用中很好地实现了SPI/ASI的相互转换。

C++ 串口API 异步操作

C++ 串口API 异步操作50 有谁能说下串口API异步操作的例子,最好有代码的。 如果是BCB的更好,谢谢啦,有些函数直接看的不是很懂。一,我要同时向20个端口发送数据,句柄怎样才能控制好二,如果采用异步操作,怎样操作才最好,需要代码支持谢谢啦初始化: //串行设备句柄; HANDLE hComDev=0; //串口打开标志; BOOL bOpen=FALSE; //线程同步事件句柄; HANDLE hEvent=0; DCB dcb; COMMTIMEOUTS timeouts; //设备已打开 if(bOpen) return FALSE; //打开COM1

if((hComDev=CreateFile(“COM1”,GENERIC?READ|GENERIC?WRITE,0,N ULL,OPEN?EXISTING,FILE?ATTRIBUTE?NORMAL,NULL))==INVALID?HAN DLE?VALUE) return FALSE; //设置超时控制 SetCommTimeouts(hComDev,&timeouts); //设置接收缓冲区和输出缓冲区的大小 SetupComm(hComDev,1024,512); //获取缺省的DCB结构的值 GetCommState(hComDev,&dcb); //设定波特率为9600 bps dcb.BaudRate=CBR?9600; //设定无奇偶校验 dcb.fParity=NOPARITY; //设定数据位为8 dcb.ByteSize=8;

//设定一个停止位 dcb.StopBits=ONESTOPBIT; //监视串口的错误和接收到字符两种事件SetCommMask(hComDev,EV?ERR|EV?RXCHAR); //设置串行设备控制参数 SetCommState(hComDev,&dcb); //设备已打开 bOpen=TRUE; //创建人工重设、未发信号的事件 hEvent=CreateEvent(NULL,FALSE,FALSE, “WatchEvent”);

串行口通信实验 单片机实验报告

实验六串行口通信实验 一、实验内容 实验板上有RS-232接口,将该接口与PC机的串口连接,可以实现单片机与PC机的串行通信,进行双向数据传输。本实验要求当PC机向实验板发送的数字在实验板上显示,按实验板键盘输入的数字在PC机上显示,并用串口助手工具软件进行调试。 二、实验目的 掌握单片机串行口工作原理,单片机串行口与PC机的通信工作原理及编程方法。 三、实验原理 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通信。进行串行通讯信要满足一定的条件,比如电脑的串口是RS232电平(-5~-15V为1,+5~+15V为0),而单片机的串口是TTL电平(大于+2.4V为1,小于- 0.7V为0),两者之间必须有一个电平转换电路实现RS232电平与TTL电平的相互转换。 为了能够在PC机上看到单片机发出的数据,我们必须借助一个Windows软件进行观察,这里我们可以使用免费的串口调试程序SSCOM32或Windows的超级终端。 单片机串行接口有两个控制寄存器:SCON和PCON。串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12。由软件置位串行控制寄存器(SCON)的REN位后才能启动,串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。待8位数据输完后,硬件将SCON寄存器的T1位置1,必须由软件清零。 单片机与PC机通信时,其硬件接口技术主要是电平转换、控制接口设计和远近通信接口的不同处理技术。在DOS操作环境下,要实现单片机与微机的通信,只要直接对微机接口的通信芯片8250进行口地址操作即可。WINDOWS的环境下,由于系统硬件的无关性,不再允许用户直接操作串口地址。如果用户要进行串行通信,可以调用WINDOWS的API 应用程序接口函数,但其使用较为复杂,可以使用KEILC的通信控件解决这一问题。 四、实验电路 [参考学习板说明书P27]

串行接口简介

串行接口简介 串行接口(Serial port)简称串口,是计算机在与外围设备或者其他计算机连接进行数据传送时的一种常用接口方式。 串口通信的特点在于数据和控制信息室一位接一位地传送出去的,若出错则重新发送该位数据,由于每次只发送一位数据,其传输速度较慢,但因为干扰少,所以更适用于长距离传送。 串口已成为大多数计算机的标准配置之一,在许多普通计算机的接口中都能找到。用户只需增加一根连接线即可进行串口通信,不需要增添其他额外设备,所以在工业控制盒通信中得到了广泛的应用,但是一个串口只能与一个设备进行连接和通信,对于某些应用需求这是一个限制。 协议: 串口有多种通信标准和接口形式,如RS-232、RS-422、RS485等,各种形式接口的管脚数量和定义也不尽相同。其中最常用的修订版本是RS-232C。RS-232C标准(协议)的全称是EIA-RS-232C标准,定义是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。RS-232C是一个已制定很久的标准(RS表示推荐标准;232表示标识符;C表示修改次数),它描述了计算机及相关设备间较低速率的串行数据通信的物理接口及协议。 硬件: EIA RS-232C标准串口常用于连接计算机、打印机和调制解调器等设备。在许多PC机的主板接口上都能找到他们的身影,这是一种D形接口,分别为25针和9针两种形式,如下图所示。 9针串口的9条连接线中包括2条数据线(TD和RD)、5条握手线(RTS、CTS、DSR、CD)、1条信号地线(SG)和1条振铃指示线(RI),这些引线足以包含大多数RS-232接口中使用的核心引线。25针串口是标准的RS-232接口,其引线除了包括RS-232的核心引线集外,还可覆盖标准中规定的所有信号。

UART异步串口

MSP430程序库<二>UART异步串口 串行通信接口是处理器与其他设备进行数据通信最常用的方式之一。我的这个程序库是针对MSP430f14系列和MSP430f16系列的,我常用的单片机是这两款:msp430f149,ms p430f169。这两款单片机中均有两个增强型串行通信接口,都可以进行同步或是异步通信,甚至169的模块USART0还能进行进行I2C协议通信。在这里,我们只讨论异步串行通信。 硬件介绍: MSP单片机的USART模块可以配置成SPI(同步通信)模式或UART(异步通信)模式,这里只讨论UART方式。UART数据传输格式如下: 起始位,数据位由高到低7/8位,地址位0/1位,奇偶校验位奇偶或无,停止位1/2位。数据位位数、地址位、奇偶校验位、停止位均可由单片机内部寄存器控制;这两款单片机都有两个USART模块,有两套独立的寄存器组;以下寄存器命中出现x代表0或是1,0代表对应0模块的寄存器,1代表对应1模块的寄存器;其中,与串口模式设置相关的控制位都位于UxCTL寄存器,与接收相关的控制位都位于UxRCTL寄存器,与发送相关的控制位都位于UxTCTL寄存器;波特率设置用UxBR0、UxBR1、UxMCT L三个寄存器;接收与发送有独立的缓存UxRXBUF、UxTXBUF,并具有独立的移位寄存器和独立的中断;中断允许控制位位于IE1/2寄存器,中断标志位位于IFG1/2寄存器。 波特率设置:430的波特率设置用三个寄存器实现, UxBR0:波特率发生器分频系数低8位。 UxBR1:波特率发生器分频系数高8位。 UxMCTL:波特率发生器分频系数的小数部分实现。 设置波特率时,首先要选择合适的时钟源:USART模块可以设置的时钟源有UCLK引脚、ACLK、SMCLK;对于较低的波特率(9600以下),可选ACLK作为时钟源,这样,在LPM3(低功耗3)模式下,串口仍能正常发送接收数据;另外,由于串口接收过程有一个三取二判决逻辑,这至少需要三个时钟周期,因此分频系数必须大于3;波特率高于9600时,将不能使用ACLK作为时钟源,要调为频率较高的SMCLK作为时钟源;另外还可以外部输入UCLK时钟。分频系数计算公式如下:

北理工微机原理实验三 使用8251A的串行接口应用实验

本科实验报告 实验名称:实验三使用8251A的串行接口应用实验 课程名称:计算机原理与应用实验实验时间: 任课教师:实验地点: 实验教师: 实验类型:□原理验证■综合设计□自主创新 学生姓名: 学号/班级:组号:学院:同组搭档:专业:成绩:

1. 实验目的 1) 掌握串行通信原理及半双工和全双工的编程方法; 2) 掌握用8251A接口芯片实现微机间的同步和异步通信; 3) 掌握8251A芯片与微机的接口技术和编程方法。 2. 实验原理和内容 8251A是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。 1) 8251A内部结构 8251A通过引脚D0~D7和系统数据总线直接接口,用于和CPU传递命令、数据、状态信息。读写控制逻辑用来接收CPU的控制信号、控制数据传送方向。CPU对8251A的读写操作控制表如表3-4所示。 表3-4 CPU对8251A的读写操作控制表 2) 8251A的方式控制字和命令控制字 方式控制字确定8251A的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长度及波特率等,格式如图3-10所示。 命令控制字使8251A处于规定的状态以准备收发数据,格式如图3-11所示。 方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次序来区分。 CPU对8251A初始化时先写方式控制字,后写命令控制字。

3) 状态寄存器 8251状态寄存器用于寄存8251A的状态信息,供CPU查询,定义如图3-12所示。TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器空?/CTS?TXE)成立时才置位。 溢出错误:CPU没读走前一个字符,下一个字符又接收到,称为溢出错误。

Win32API 异步串口通讯

使用Win32API实现Windows下异步串口通讯 目录: 1.异步非阻塞串口通讯的优点 2.异步非阻塞串口通讯的基本原理 3.异步非阻塞串口通讯的基础知识 4.异步非阻塞串口通讯的实现步骤 一,异步非阻塞串口通讯的优点 读写串行口时,既可以同步执行,也可以重叠(异步)执行。 在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在重叠执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,这样线程就可以干别的事情。 例如,线程可以在不同的句柄上同时执行I/O操作,甚至可以在同一句柄上同时进行读写操作。"重叠"一词的含义就在于此。 二,异步非阻塞串口通讯的基本原理 首先,确定要打开的串口名、波特率、奇偶校验方式、数据位、停止位,传递给CreateFile()函数打开特定串口; 其次,为了保护系统对串口的初始设置,调用GetCommTimeouts()得到串口的原始超时设置; 然后,初始化DCB对象,调用SetCommState() 设置DCB,调用SetCommTimeouts()设置串口超时控制;再次,调用SetupComm()设置串口接收发送数据的缓冲区大小,串口的设置就基本完成,之后就可以启动读写线程了。 三,异步非阻塞串口通讯的基础知识 下面来介绍并举例说明一下编写异步非阻塞串口通讯的程序中将会使用到的几个关键函数 CreateFile() 功能:打开串口设备 函数原型 HANDLE CreateFile( LPCTSTR lpFileName, // 串口名称字符串;如:"COM1" 或"COM2" DWORD dwDesiredAccess, // 设置读写属性(访问模式);一般为GENERIC_READ|GENERIC_WRITE, DWORD dwShareMode, // 共享模式;"必须"为0, 即不能共享 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性;一般为NULL DWORD dwCreationDistribution, // 创建方式,串口设置必须设置此值;在这里"必须"为OPEN_EXISTING DWORD dwFlagsAndAttributes, // 文件属性和标志;在这里我们设置成FILE_FLAG_OVERLAPPED ,实现异步I/O HANDLE hTemplateFile // 临时文件的句柄,通常为NULL ); 说明: 如果调用成功,那么该函数返回文件的句柄,如果调用失败,则函数返回INVALID_HANDLE_VALUE。Forexample: Handle m_hComm = CreateFile(com1,GENERIC_READ||GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERL APPED,0);

串行接口实验报告

课程实验报告实验名称:串行接口 专业班级: 学号: 姓名: 同组人员: 指导教师: 报告日期:

实验二 1. 实验目的 (3) 2. 实验内容 (3) 3. 实验原理 (3) 4. 程序代码 (6) 5. 实验体会 (13)

实验二 1.实验目的 1.熟悉串行接口芯片8251的工作原理 2.掌握串行通讯接收/发送程序的设计方法 2.实验内容 通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。具体过程如下: 1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。 2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。 3.实验原理 1.8251控制字说明 在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。 另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。 2.8251方式指令(端口地址2B9H)

3.8251工作指令(端口地址2B9H) 4.8251状态字(端口地址2B9H) 5.8253控制字(283H) 6.8253计数初值(283H) 计数初值=时钟频率/(波特率×波特率因子)本实验:脉冲源=1MHz 波特率=1200 波特率因=16 计数初值= 1000000/1200*16=52

RS232接口是标准串行接口

RS232接口是标准串行接口,其通讯距离小于15 m,传输速率小于20 kb/s。RS232标准是按负逻辑定义的,他的“1”电平在-5~-15 V之间,“0”电平在+5~+15 V之间。虽然RS232应用很广,但由于数据传输速率慢,通讯距离短,特别是在100 m以上的远程通讯中难以让人满意,因此通常采用RS422,RS449,RS423及RS485等接口标准来实现远程通讯。RS485標準的通信最長距離是1200米(4000英呎),或是最多並聯32個通信單元, RS-232、RS-422与RS-485标准及应用 一、RS-232、RS-422与RS-485的由来 RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制 订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品 之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232 通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s, 传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接 收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标 准。为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向 通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保 护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。由于EIA提出的建议标准都是 以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。 RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或 协议,在此基础上用户可以建立自己的高层通信协议。因此在视频界的应用,许多厂家都建 立了一套高层通信协议,或公开或厂家独家使用。如录像机厂家中的Sony与松下对录像机的 RS-422控制协议是有差异的,视频服务器上的控制协议则更多了,如Louth、Odetis协议是公 开的,而ProLINK则是基于Profile上的。 二、RS-232串行接口标准 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低 速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯 图1 收、发端的数据信号是相对于信号地,如从DTE设备发出的数据在使用DB25连接器时是2 脚相对7脚(信号地)的电平,DB25各引脚定义参见图1。典型的RS-232信号在正负电平之间 摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V电平。当无 数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回 TTL电平。接收器典型的工作电平在+3~+12V与-3~-12V。由于发送电平与接收电平的差仅为 2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15 米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱 动器负载为3~7kù。所以RS-232适合本地设备之间的通信。其有关电气参数参见表1。 规定RS232 RS422 R485 工作方式单端差分差分 节点数1收、1发1发10收1发32收 最大传输电缆长度50英尺400英尺400英尺 最大传输速率20Kb/S 10Mb/s 10Mb/s 最大驱动输出电压+/-25V -0.25V~+6V -7V~+12V 驱动器输出信号电平 负载+/-5V~+/-15V +/-2.0V +/-1.5V 表1

实现异步串口

异步传输是一种典型的基于字节的输入输出,指数据按每次一个字节进行传输,其传输速度低。同步传输是把数据字节组合起来一起发送,这种组合称之为帧,其传输速度比异步传输快,同步串口的传送速率高,异步串口实现简单,这是异步串口与同步串口间最主要的区别。 一,异步非阻塞串口通讯的优点 读写串行口时,既可以同步执行,也可以重叠(异步)执行。 在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。 在重叠执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,这样线程就可以干别的事情。 例如,线程可以在不同的句柄上同时执行I/O操作,甚至可以在同一句柄上同时进行读写操作。"重叠"一词的含义就在于此。 二,异步非阻塞串口通讯的基本原理 首先,确定要打开的串口名、波特率、奇偶校验方式、数据位、停止位,传递给CreateFile()函数打开特定串口; 其次,为了保护系统对串口的初始设置,调用 GetCommTimeouts()得到串口的原始超时设置; 然后,初始化DCB对象,调用SetCommState() 设置DCB,调用SetCommTimeouts()设置串口超时控制; 再次,调用SetupComm()设置串口接收发送数据的缓冲区大小,串口的设置就基本完成,之后就可以启动读写线程了。 三,异步非阻塞串口通讯的基础知识 VC串口通信技术网下面来介绍并举例说明一下编写异步非阻塞串口通讯的程序 中将会使用到的几个关键函数 CreateFile() 功能:打开串口设备 函数原型 1.HANDLE CreateFile( 2.LPCTSTR lpFileName, // 串口名称字符串;如: "COM1" 或 "COM2" 3.DWORD dwDesiredAccess, // 设置读写属性(访问模式);一般为 GENERIC_READ|GENERIC_WRITE, 4.DWORD dwShareMode, // 共享模式;"必须"为 0, 即不能共享 5.LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性;一般为 NULL 6.DWORD dwCreationDistribution, // 创建方式,串口设置必须设置此值; 在这里"必须"为 OPEN_EXISTING 7.DWORD dwFlagsAndAttributes, // 文件属性和标志;在这里我们设置成 FILE_FLAG_OVERLAPPED ,实现异步I/O 8.HANDLE hTemplateFile // 临时文件的句柄,通常为NULL

实验五:串行接口输入输出实验

实验五串行接口输入/输出实验 一、实验目的 1、学习TEC-XP+教学计算机I/O接口扩展的方法; 2、学习串行通信的基本知识,掌握串行通信接口芯片的设置和使用方法。 二、实验说明 1、TEC-XP+教学计算机的I/O结构 TEC-XP+教学计算机配置有COM1和COM2两个串行接口,其中COM1是TEC-XP+默认的标准接口,与PC终端相连接,监控程序负责对COM1进行初始化和使用管理。COM2预留给用户扩展使用,监控程序不能识别COM2,也不对COM2进行任何操作,用户需要对COM2进行初始化和使用管理。COM1和COM2均由可编程串行通信接口芯片intel8251芯片构成。 2、Intel8251的组成及控制和使用方法 可编程串行通信接口芯片Intel8251支持同步和异步两种通信方式。在异步方式下,波特率为0~19.2Kbps,数据位可为5、6、7或8位,可设1个奇偶校验位,1个起始位,1个、1.5个或2个停止位。Intel8251内部有7个功能模块负责实现与CPU的数据交换以及与I/O设备的数据通信功能,内部有6个寄存器,其中与异步通信方式的有关的寄存器有5个,即模式寄存器、控制寄存器、状态寄存器、数据发送寄存器和数据接收寄存器。 模式寄存器的功能是设定intel8251的工作模式,控制寄存器的功能是控制intel8251的数据发送和接收等工作过程,状态寄存器的功能是反映intel8251数据发送和接收等工作的状态,各寄存器的格式如图5-1、图5-2和图5-3所示。当CPU把需发送的数据写入数据发送寄存器后,intel8251将自动把数据组成帧并逐位发送出去。Intel8251能自动完成数据接收操作,并把接收到的数据存放在数据接收寄存器中,CPU 从中读取即可。 图5-1模式寄存器格式图5-2 控制寄存器格式 图5-3 状态寄存器格式 CPU对模式寄存器、控制寄存器和数据发送寄存器只能写入,不能读出。对状态寄存器和数据接收寄存器只能读出,不能写入。Intel8251使用2个地址来访问内部的寄存器,其中用偶地址访问数据发送寄存

串行通信接口标准详解

几种串行通信接口标准详解 在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息。1969年,美国电子工业协会(EIA)公布了RS-232C作为串行通信接口的电气标准,该标准定义了数据终端设备(DTE)和数据通信设备(DCE)间按位串行传输的接口信息,合理安排了接口的电气信号和机械要求,在世界范围内得到了广泛的应用。但它采用单端驱动非差分接收电路,因而存在着传输距离不太远(最大传输距离15m)和传送速率不太高(最大位速率为20Kb/s)的问题。远距离串行通信必须使用Modem,增加了成本。在分布式控制系统和工业局部网络中,传输距离常介于近距离(<20m=和远距离(>2km)之间的情况,这时RS-232C(25脚连接器)不能采用,用Modem又不经济,因而需要制定新的串行通信接口标准。 1977年EIA制定了RS-449。它除了保留与RS-232C兼容的特点外,还在提高传输速率,增加传输距离及改进电气特性等方面作了很大努力,并增加了10个控制信号。与RS-449同时推出的还有RS-422和RS-423,它们是RS-449的标准子集。另外,还有RS-485,它是RS-422的变形。RS-422、RS-423是全双工的,而RS-485是半双工的。 RS-422标准规定采用平衡驱动差分接收电路,提高了数据传输速率(最大位速率为10Mb/s),增加了传输距离(最大传输距离1200m)。 RS-423标准规定采用单端驱动差分接收电路,其电气性能与RS-232C几乎相同,并设计成可连接RS-232C和RS-422。它一端可与RS-422连接,另一端则可与RS-232C连接,提供了一种从旧技术到新技术过渡的手段。同时又提高位速率(最大为300Kb/s)和传输距离(最大为600m)。 因RS-485为半双工的,当用于多站互连时可节省信号线,便于高速、远距离传送。许多智能仪器设备均配有RS-485总线接口,将它们联网也十分方便。 串行通信由于接线少、成本低,在数据采集和控制系统中得到了广泛的应用,产品也多种多样 一.RS-232-C详解 串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。 在讨论RS-232C接口标准的内容之前,先说明两点: 首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C 标准与计算机不兼容的地方就不难理解了。 其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都

电脑串口介绍_DB9_DB25

串口叫做串行接口,也称串行通信接口,按电气标准及协议来分包括RS-232-C、RS-422、RS485、USB等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。 RS-232-C:也称标准串口,是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座。后来的PC上使用简化了的9芯D型插座。现在应用中25芯插头座已很少采用。现在的电脑一般有两个串行口:COM1和COM2,你到计算机后面能看到9针D形接口就是了。现在有很多手机数据线或者物流接收器都采用COM口与计算机相连。 RS-422:为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。 RS-485:为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。 Universal Serial Bus(通用串行总线)简称USB,是目前电脑上应用较广泛的接口规范,由Intel、Microsoft、Compaq、IBM、NEC、Northern Telcom等几家大厂商发起的新型外设接口标准。USB接口是电脑主板上的一种四针接口,其中中间两个针传输数据,两边两个针给外设供电。USB接口速度快、连接简单、不需要外接电源,传输速度12Mbps,

异步串行通信的工作方式

异步串行通信的工作方式,然后给出了VB MSComm控件下异步串行通信在电子衡器中的应用实例,包括硬件接口及软件设计。关键词:RS-232 异步串行通信Visual Basic 电子衡器控件计算机一般提供了2个25针或9针的RS-232标准串行口,简称为COM1和COM2。在某些应用中,我们还可以通过插通信卡来获得额外的RS-232标准串行口。利用这些串行口可以与其它数字设备进行一般的数据通信,计算机的串行接口主要用于远程通信和低速输入输出设备。由于串行数据通信传输线条数最少,而且有许多较便宜的专用芯片可实现它,发送和接受器也简单,因而对数据传输速度要求不高的计算机和数字设备间的近程通信,多采用串行通信实现。而目前各个厂家生产的电子衡器的称重仪表多配有与上位机通信的RS—232C串行接口,因而计算机与称重仪表之间的数据通信用串口很容易实现,只需要制作一条2芯或3芯的数据线编写相应的接口程序即可实现,不需要增加其他硬件设备。采用这种方式组成的微机电子衡器有许多优点:称重仪表经过多年的发展,在数据采集、抗干扰、可靠性等方面技术成熟,质量稳定;而计算机在存储容量、数据处理、查询、统计报表等数据管理方面有明显优势。正是两者的完美结合,才使计算机与称重仪表组成的在线式称重管理系统得到了广泛的应用。1串行通信的工作方式串行通信,可分为同步和异步两种方式。异步方式是指在约定的波特率下,传送和接受的数据不需要严格的保持同步,允许有相对的延迟,虽然速度较慢,但经济实用,所以异步串行通信现大量应用于计算机接口技术中。计算机与称重仪表就采用异步通信的方式传送数据。1.1异步串行通信的数据格式在这种通信方式中,一般以一个字符为一帧。一帧最少由三部分组成:起始位、数据位、停止位,开始是一位起始位以发送一个逻辑“0”表示,接着是表示这个数据的数据位,数据位可以是5位、6位、7位或8位,再加一位奇偶校验位,然后是一个、一个半或二个停止位,停止位以逻辑“1”表示。1.2波特率串行通信每秒传送的位数,传送时先低位后高位。常用的波特率有600、1200、2400、4800、9600等。1.3端口在计算机中,一般都配有两个标准串行口,用COM1和COM2表示。(通常采用2个9针D型阳性插头。)1.4信号线RS—232C标准规定有25根连线,使用21个信号线。在我们讨论的微机电子衡器中仅用到3根信号线,它们是:发送数据线TXD(输出信号),接受数据线RXD(输入信号线),信号地GND。其余信号线定义可参考相关书籍。2串行通信在电子衡器中的应用实例串行通信接口设计,包括硬件、软件设计两部分。在WINDOWS操作系统下,可选用VC++、VB等可视化开发工具。下面将以上海耀华称重系统公司的XK3190—A1+为例,以VB6.0编程语言,说明串行通信的软、硬件设计过程。 2.1称重仪表仪表选用上海耀华XK3190-A1+仪表,其串口通信格式如下:2.1.1连续方式发送:所传送的数据为仪表显示的当前称量(毛重或净重),每帧数据由12组数据组成。 第X组 内容及注释 1 02(XON)开始 2 +或- 符号位 3 称量数据高位 : 称量数据: : 称量数据: 8 称量数据低位 9

I2C串行接口介绍

I2C串行总线通信原理

采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。 常用的串行扩展总线有:I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线等。本章仅讨论I2C串行总线。

一、IIC概述 IIC(Inter-Integrated Circuit)总线,许多文献写作I2C,主要用于同一电路板内各集成电路模块(IC)之间的连接。IIC采用双向2线制串行数据传输方式,简化IC之间的通信连接。IIC协议是PHILIPS公司于二十世纪八十年代初提出,其后,PHILIPS和其他厂商提供了种类丰富的IIC兼容芯片。目前,IIC总线标准已经成为世界性的工业标准。各大半导体公司推出了大量的带有IIC接口的芯片,如RAM、EEPROM、Flash ROM、A/D、D/A转换、 LED/LCD驱动、I/O接口、实时时钟等。

二、IIC总线特点 在硬件结构上,它采用数据(SDA)和时钟(SCL)两根线来完成数据的传输及外围器件的扩展,任何一个具有IIC总线接口的外围器件,不论其功能差别有多大,都具有相同的电气接口,因 此都可以挂接在总线上,使其连接方式变得十分 简单。 对各器件的寻址是软寻址方式,因此节点上没有必须的片选线,器件地址给定完全取决于器件 类型与单元结构,这也简化了IIC系统的硬件连接。

另外IIC总线能在总线竞争过程中进行总线控制权的仲裁和时钟同步,并且不会造成数据丢失,因此由IIC总线连接的多机系统可以是一个多主机系统,支持多主控。 串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。

单片机串口通讯实验报告

实验十单片机串行口与PC机通讯实验报告 ㈠实验目的 1.掌握串行口工作方式的程序设计,掌握单片机通讯的编制; 2.了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议; 3.了解PC机通讯的基本要求。 ㈡实验器材 1.G6W仿真器一台 2.MCS—51实验板一台 3.PC机一台 ㈢实验内容及要求 利用8051单片机串行口,实现与PC机通讯。 本实验实现以下功能,将从实验板键盘上键入的字符或数字显示到PC 机显示器上,再将PC机所接收的字符发送回单片机,并在实验板的LED上显示出来。 ㈣实验步骤 1.编写单片机发送和接收程序,并进行汇编调试。 2.运行PC机通讯软件“commtest.exe”,将单片机和PC机的波特率均设定 为1200。 3.运行单片机发送程序,按下不同按键(每个按键都定义成不同的字符), 检查PC机所接收的字符是否与发送的字符相同。 4.将PC机所接收的字符发送给单片机,与此同时运行单片机接受程序,检 查实验板LED数码管所显示的字符是否与PC机发送的字符相同。

㈤ 实验框图

源程序代码: ORG 0000H AJMP START ORG 0023H AJMP SERVE ORG 0050H START: MOV 41H,#0H ;对几个存放地址进行初始化 MOV 42H,#0H MOV 43H,#0H MOV 44H,#0H MOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0 LCALL DISPLAY ;初始化显示 MOV TMOD,#20H ;设置为定时器0,模式选用2 MOV TL1, #0E6H ;设置1200的波特率 MOV TH1, #0E6H SETB TR1 ;开定时器 MOV SCON,#50H ;选用方式1,允许接收控制 SETB ES SETB EA ;开中断 LOOP: ACALL SOUT ;键盘扫描并发送,等待中断 SJMP LOOP SERVE JNB RI,SEND ;判断是发送中断还是接收中断,若为发送中 断则调用 ACALL S IN ;发送子程序,否则调用接收子程序 RETI SEND: CLR TI ;发送子程序 RETI SIN: CLR RI ;接受子程序 MOV SCON, #00H MOV A, SBUF ;接收数据 LCALL XS ;调用显示子程序 RETI 子程序: SOUT: CLR TI ;清发送中断标志位 LCALL KEY ;调用判断按键是否按下子程序 MOV A,R0 ;将按键对应的数字存入A MOV SBUF,A ;输出按键数字给锁存 RET KEY: MOV P1,#0FFH ;将P1设置为输入口 MOV A, P1 CPL A ;将A内值取反

串口详细介绍

1、串口的应用 它是一个数据通信的协议,在实际应用中:对设备运行日志的数据采集,另一个就是程序的调试。 这里所说的串口是RS232电平的。 2、通信的相关概念 1)全双工:在同一时刻,既能接收数据同时还可以发送数据 半双工:在同一时刻,只能接收数据或者发送数据 2)同步:在物理连接上是有一条时钟线的,用这种通信方式就必须有一个主机,因为时钟是由主机控制的

这个只是一个简单的串口应用,实际的串口是有9条线连接的 TTL:直接是有MCU输出的 ‘1’:电压范围——2.5~3.3V(主要是指ARM芯片),4~5V(主要是指51内核的芯片) ‘0’:电压范围——0.5~0V(这个是包含所有的芯片) 这里所说的电压范围是在实际的硬件设计中要保证的。 232:这个是经过232芯片之后的电平 ‘1’:-3~-15V ‘0’:3~15V 在实际中测试得到的电平电压是9V和-9V

5,数据传输的协议:(是保证数据发送和接收一致,但是对数据的含义没有规定)起始位数据位奇偶校验位停止位 所占位数15~811/2电平00/10/11 常用协议格式 1+8+0+1=10位 起始位:表示一帧数据的开始 数据位:发送的有效数据 奇偶校验位:检验有效数据是否传输正确,可靠性不高 停止位:表示一帧数据的结束 总线空闲:总线上没有数据传输(高电平) 开始位:0--低电平(空闲态检测到下降沿) 数据位:(用户所要发送的数据)5~8(7/8)--ASCII码(8位)--字节(8位)奇偶校验位:判断数据位中1+奇偶校验位中的1必须为奇数/偶数。 奇校验:数据位中1+奇偶校验位中的1必须为奇数。 偶校验:数据位中1+奇偶校验位中的1必须为偶数 停止位:1--高电平 6,波特率 相当于串口发送的速率 串口每秒钟发送的位数 常见:48009600115200 注意:两个设备的波特率必须相同

RS-485串行接口标准

RS-485串行接口标准 1、平衡传输 RS-485数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。“使能”端是用于控制发送驱动器与传输线的切断与连接。当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。 接收器也作与发送端相对的规定,收、发端通过平衡双绞线将AA与BB对应相连,当在收端AB之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV至6V之间。 2、RS-485电气规定 由于RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。 RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12k剑 鳵S-422是4k健; 旧峡梢运礡S-485满足所有RS-422的规范,所以RS-485的驱动器可以用在RS-422网络中应用。 RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s RS-485需要2个终接电阻,其阻值要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输总线的两端。 在MCU之间中长距离通信的诸多方案中、RS-485因硬件设计简单、控制方便、成本低廉等优点广泛应用于工厂自动化、工业控制、小区监控、水利自动报测等领域、但RS-485总线在抗干扰、自适应、通信效率等方面仍存在缺陷、一些细节的处理不当常会导致通信失败甚至系统瘫痪等故障、因此提高RS-485总线的运行可靠性至关重要、 1 RS-485接口电路的硬件设计

UART的异步串口通信VHDL实现

UART 的异步串口通信协议的VHDL 语言实现 异步串行通信的采用的波特率为9600b/s,外配晶体振荡器的频率为3.6864MHZ ,故采用分频电路 package width is constant N:integer:=8; end width; use work.width.all; library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity fredivn is GENERIC (N:integer:=6); port(clkin: in std_logic; clkout: out std_logic); end fredivn; architecture behav of fredivn is signal count : integer; begin process(clkin) begin if (clkin'event and clkin=1)then if(count

相关文档
最新文档