通信接口

2024-09-11

通信接口(通用9篇)

通信接口 篇1

1 引言

CAN (Controller Area Network) 即控制器局域网络, 是ISO国际标准化的串行通信协议。因其具有低开发成本、高传输速率、高可靠性等特点, CAN被广泛应用于汽车、机器人、数控机床、自动化仪表等领域。

在当前的汽车产业中, 各种电子控制系统之间通信所用的数据类型, 及对可靠性的要求不尽相同, 由多条总线构成的情况很多, 线束的数量也随之增加。出于安全性、舒适性、方便性、低公害、低成本的要求, 1986年德国BOSCH公司开发出面向汽车的CAN通信协议。此后, CAN通信协议通过ISO11898及ISO11519进行了标准化, 目前在欧洲已是汽车网络的标准协议。

2 CAN Bus概述

CAN通信协议最初由德国BOSCH公司, 为解决现代汽车内部大量的控制系统与传感器、执行机构之间的数据交换而开发的一种串行数据通信协议。目前汽车上的CAN网络分为一条传输速率为500Kbps的高速CAN, 主要连接发动机、刹车系统、动力总成等系统;以及另一条传输速率为100Kbps的低速CAN, 主要连接汽车灯光、车窗及门锁、空调、组合仪表等系统。

CAN总线以目前技术条件较成熟的ISO/OSI模型为基础, 覆盖了ISO/OSI基本参照模型中的传输层、数据链路层及物理层。与其它网络相比, 具有以下特点:

(1) CAN是一种多主总线系统, 任意节点均可在总线空闲时发送报文;

(2) CAN协议对数据块进行编码, 使网络节点数在电气特性的限制下最多可达110;

(3) CAN节点的信息分成不同的优先级, 可满足不同通信的实时要求;

(4) CAN采用非破坏性总线仲裁技术, 极大地节省了总线冲突仲裁时间;

(5) CAN报文不包含源地址或目标地址, 仅用标识符来指示功能信息、优先级信息。通过报文滤波可实现点对点、一点对多点及全局广播等几种方式进行数据通信;

(6) CAN采用短帧结构, 数据传输时间短, 受干扰的概率低;

(7) CAN节点在错误严重的情况下自动关闭总线, 不影响其它节点;

(8) CAN协议采用CRC检验并提供相应错误处理功能, 保证了数据通信的可靠性。

3 CAN控制器SJA1000

CAN通信协议主要由CAN控制器完成, SJA1000主要由CAN核心模块和接口管理逻辑模块组成。CAN核心模块控制CAN总线帧的发送和接收, 接口管理逻辑模块提供SJA1000与微处理器或其它设备的连接。SJA1000结构框图如图1所示。

通过正确的配置, SJA1000能自动完成CAN总线物理层和数据链路层的所有功能, 对于单片机来说, 可以把它看成一个基本的I/O设备。SJA1000的主要特性如下:

(1) 标准帧和扩展帧信息的接收和传送。

(2) 扩展的接收缓冲器 (64字节FIFO) 。

(3) 在标准和扩展格式中都有单/双验收滤波器 (含屏蔽和代码寄存器) 。

(4) 支持多种微处理器接口。

4 接口电路

CAN Bus通信节点接口电路如图2所示, 主要由CAN收发器PCA82C250、CAN控制器SJA1000、主控制器89C51单片机及物理总线接口电路组成。

当CAN节点处于CAN Bus网络终端时, 需要在CAN_H和CAN_L之间增加阻值为120Ω的终端电阻。终端电阻对于匹配CAN物理总线的特征阻抗具有重要的作用, 无终端电阻会使CAN通信的抗干扰性及可靠性大大降低, 甚至无法进行正常通信。

89C51单片机是整个CAN Bus接口电路的主控制器, 负责SJA1000的初始化, 并且控制SJA1000完成CAN通信。SJA1000作为CAN协议转换的控制器, 通过对片内寄存器的读、写操作, 89C51单片机能够设置CAN通信模式, 实现数据的发送与接收。

PCA82C250提供对物理总线的差动发送能力和对CAN控制器的差动接收能力, 与ISO11898标准兼容。在运动环境中, 具有抗瞬变、抗射频和抗电磁干扰性能, 内部的限流电路具有电路短路时对传送输出级进行保护的功能。

SJA1000的多路地址/数据总线AD0~AD7连接89C51单片机的输入/输出端口P0, 89C51单片机通过此地址可对SJA1000片内寄存器执行相应的读、写操作, 完成相应的通信功能。SJA1000的发送/接收口TX0和RX0分别连接PCA82C250的TX0和RX0, 接收或发送CAN报文。SJA1000 RST连接89C51单片机的输入/输出端口, 通过其软件程序来控制SJA1000完成复位操作。

5 系统软件

CAN Bus通信系统要有效、实时地完成通信任务, 系统的软件设计是关键。系统软件的设计主要包括CAN节点初始化、CAN报文接收以及CAN报文发送。

SJAl000的内部寄存器是作为89C51单片机的片外寄存器工作的, 89C51单片机与SJAl000间状态、控制和命令的交换都是通过在复位模式或工作模式下对寄存器进行读、写操作来完成的。

在初始化CAN Bus内部寄存器时, 必须使各节点的位速率一致, 而且收、发双方必须同步。报文的接收主要有中断和查询两种接收方式。为提高通信的实时性, 采用中断接收方式, 这样也可保证接收缓冲器不会出现数据溢出现象。

5.1 CAN节点初始化

CAN节点初始化主要是设置SJA1000的通信参数, SJA1000初始化流程如图3所示。SJA1000初始化在复位模式才可进行, 在主控制器发送信息到SJA1000的控制段后, 清除复位模式/请求标志位, 通过循环读标志位确认是否进入工作模式才能进行下一步操作。

5.2 CAN报文发送

CAN报文发送由SJA1000独立完成, 发送流程如图4所示。89C51将要发送的数据根据CAN通信协议封装, 传送到空闲的发送缓冲器, 然后将命令寄存器中的发送请求标志位置位, SJA1000将自动向CAN Bus发送数据。若正在发送报文, 发送缓冲器就被写锁定。

5.3 CAN报文接收

CAN报文接收由SJA1000独立完成, 接收流程如图5所示。CAN Bus并不是总在通信, 为了提高通信效率, 采用中断接收方式。SJA1000接收的报文数据放在接收缓冲器内, 同时将状态寄存器的接收缓冲器状态位RBS和接收中断标志位RI置位, 并向89C51发送接收中断, 启动中断接收服务程序, 89C51通过执行中断接收服务程序, 从SJA1000的接收缓冲区读取报文数据, 并存储到单片机的内存单元, 然后释放接收缓冲器。

6 结束语

设计完成了基于89C51单片机和CAN控制器SJA1000的CAN Bus通信节点接口电路。CAN Bus通信系统结构简单、适应性和可扩展性强, CAN Bus以其分时多主、非破坏性总线仲裁和自动检错重发的技术特点有效地提高了通信的可靠性, 从而使现场调试更加方便, 缩短了开发周期。实践证明, CAN Bus具有很高的可靠性和的性价比, 是目前较为理想的现场总线之一。

摘要:CAN Bus广泛应用于汽车、机器人、数控机床、自动化仪表等领域。为了实现CAN Bus通信, 采用89C51单片机、CAN控制器SJA1000和CAN收发器PCA82C250构成CAN节点, 设计完成了硬件接口电路和基于硬件条件的软件。在实验室环境下进行通信功能测试, 完成了CAN报文的接收与发送, 结果表明该CAN Bus通信节点接口设计方案满足CAN 2.0B协议, 通信性能安全、可靠。

关键词:CAN Bus,SJA1000,接口电路,节点

参考文献

[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社, 2006.

[2]饶运涛, 邹继军.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社, 2007.

[3]贾智平, 张瑞华.嵌入式系统原理与接口技术[M].北京:清华大学出版社, 2005.

通信接口 篇2

摘 要 本文说明了异步串行通信(RS-232)的工作方式,探讨了查询和中断两种软件接口利弊,并给出两种方式的C语言源程序。

的I/O通道之一,以最简单方式组成的串行双工线路只需两条信号线和一条公共地线,因此串行通信既有线路简单的优点同时也有它的缺点,即通信速率无法同并行通信相比,实际上EIA RS-232C在标准条件下的最大通信速率仅为20Kb/S。

尽管如此,大多数外设都提供了串行口接口,尤其在工业现场RS-232C的应用更为常见。IBM PC及兼容机系列都有RS-232的适配器,操作系统也提供了编程接口,系统接口分为DOS功能调用和BIOS功能调用两种:DOS INT 21H的03h和04h号功能调用为异步串行通信的接收和发送功能;而BIOS INT 14H有4组功能调用为串行通信服务,但DOS和BIOS功能调用都需握手信号,需数根信号线连接或彼此间互相短接,最为不便的是两者均为查询方式,不提供中断功能,难以实现高效率的通信程序,为此本文采用直接访问串行口硬件端口地址的方式,用C语言编写了串行通信查询和中断两种方式的接口程序。

1.串行口工作原理

微机串行通信采用EIA RS-232C标准,为单向不平衡传输方式,信号电平标准±12V,负逻辑,即逻辑1(MARKING)表示为信号电平-12V,逻辑0(SPACING)表示为信号电平+12V,最大传送距离15米,最大传送速率19.6K波特,其传送序列如图1,平时线路保持为1,传送数据开始时,先送起始位(0),然后传8(或7,6,5)个数据位(0,1),接着可传1位奇偶校验位,最后为1~2个停止位(1),由此可见,传送一个ASCII字符(7位),加上同步信号最少需9位数据位。

@@T8S12300.GIF;图1@@

串行通信的工作相当复杂,一般采用专用芯片来协调处理串行数据的发送接收,称为通用异步发送/接收器(UART),以节省CPU的时间,提高程序运行效率,IBM PC系列采用8250 UART来处理串行通信。

在BIOS数据区中的头8个字节为4个UART的端口首地址,但DOS只支持2个串行口:COM1(基地址0040:0000H)和COM2(基地址0040:0002H)。8250 UART共有10个可编程的单字节寄存器,占用7个端口地址,复用地址通过读/写操作和线路控制寄存器的第7位来区分。这10个寄存器的具体功能如下:

COM1(COM2) 寄存器

端口地址 功能 DLAB状态

3F8H(2F8H) 发送寄存器(写) 0

3F8H(2F8H) 接收寄存器(读) 0

3F8H(2F8H) 波特率因子低字节 1

3F9H(2F9H) 波特率因子高字节 1

3F9H(2F9H) 中断允许寄存器 0

3FAH(2FAH) 中断标志寄存器

3FBH(2FBH) 线路控制寄存器

3FCH(2FCH) MODEM控制寄存器

3FDH(2FDH) 线路状态寄存器

3FEH(2FEH) MODEM状态寄存器

注:DLAB为线路控制寄存器第七位在编写串行通信程序时,若采用低级方式,只需访问UART的.这10个寄存器即可,相对于直接控制通信的各个参量是方便可靠多了。其中MODEM控制/状态寄存器用于调制解调器的通信控制,一般情况下不太常用;中断状态/标志寄存器用于中断方式时的通信控制,需配合硬件中断控制器8259的编程;波特率因子高/低字节寄存器用于初始化串行口时通信速率的设定;线路控制/状态寄存器用于设置通信参数,反映当前状态;发送/接收寄存器通过读写操作来区分,不言而喻用于数据的发送和接收。

UART可向CPU发出一个硬件中断申请,此中断信号接到中断控制器8259,其中COM1接IRQ4(中断OCH),COM2接IRQ3(中断OBH)。用软件访问8259的中断允许寄存器(地址21H)来设置或屏蔽串行口的中断,需特别指出的是,设置中断方式串行通信时,MODEM控制寄存器的第三位必须置1,此时CPU才能响应UART中断允许寄存器许可的任何通信中断。

2.编程原理

程序1为查询通信方式接口程序,为一典型的数据采集例程。其中bioscom函数初始化COM1(此函数实际调用BIOS INT 14H中断0号功能)。这样在程序中就避免了具体设置波特率因子等繁琐工作,只需直接访问发送/接收寄存器(3F8H)和线路状态寄存器(3FDH)来控制UART的工作。线路状态寄存器的标志内容如下:

第0位 1=收到一字节数据

第1位 1=所收数据溢出

第2位 1=奇偶校验错

第3位 1=接收数据结构出错

第4位 1=断路检测

第5位 1=发送保存寄存器空

第6位 1=发送移位寄存器空

第7位 1=超时

当第0位为1时,标志UART已收到一完整字节,此时应及时将之读出,以免后续字符重叠,发生溢出错误,UART有发送保持寄存器和发送移位寄存器。发送数据时,程序将数据送入保持寄存器(当此寄存器为空时),UART自动等移位寄存器为空时将之写入,然后把数据转换成串行形式发送出去。

本程序先发送命令,然后循环检测,等待接收数据,当超过一定时间后视为数据串接收完毕。若接收到数据后返回0,否则返回1。

若以传送一个ASCII字符为例,用波特率9600 b/s,7个数据位,一个起始位,一个停止位来初始化UART,则计算机1秒可发送/接收的最大数据量仅为9600/9=1074字节,同计算机所具有的高速度是无法相比的,CPU的绝大部分时间耗费在循环检测标志位上。在一个有大量数据串行输入/输出的应用程序中,这种消耗是无法容忍的,也不是一种高效率通信方式,而且可以看到,在接收一个长度未知的数据串时,有可能发生遗漏。

程序2是一组中断方式通信接口程序。微机有两条用于串行通信的硬件中断通道IRQ3(COM2)和IRQ4(COM1),对应中断向量为OBH和OCH,可通过设置中断屏蔽寄存器(地址21H)来开放中断。置1时屏蔽该中断,否则开放中断。硬件中断例程必须在程序末尾往中断命令寄存器(地址20H)写入20H,即

MOV AL, 20H

OUT 20H, AL用以将当前中断服务寄存器清零,避免中断重复响应。

每路UART有4组中断,程序可通过中断允许寄存器(3F9H)来设置开放那路中断。这4组中断的位标志如下:

第0位 1=接收到数据

第1位 1=发送保持寄存器为空

第2位 1=接收数据出错

第3位 1=MODEM状态寄存器改变

第4~7位为0

在中断例程中检查UART的中断标志寄存器(3FAH),确定是哪一组事件申请中断。该寄存器第0位为0时表示有中断申请,响应该中断并采取相应措施后,UART自动复位中断标志;第2,1位标志中断类型,其位组合格式如下:代码 中断类型 复位措施11接收出错读线路状态寄存器10接收到数据读接收寄存器01发送寄存器空输出字符至发送寄存器00MODEM状态改变读MODEM状态寄存器这4组中断

的优先级为0号最低,3号最高。

在本组程序中,函数setinterrupt()和clearinterrupt()设置和恢复串行通信中断向量;cominit()初始化指定串行口并开放相应中断;sendcomdata()和getcomeomdata()用于发送和接收数据串;com1()和com2()为中断例程,二者均调用fax2()函数,fax2()函数为实际处理数据接收和发送的例程。明确了串行口的工作原理,就不难理解其具体程序。

3.结论

上述程序采用C语言编写,在BORLAND C++2.0集成环境中调试通过,为简单起见,只考虑了使用发送/接收两条信号线的情况,并未考虑使用握手信号线。

在实际应用中这两组程序尚有一些可修改之处。比如,中断接收程序中的缓冲区可改为循环表,以防数据溢出,尽可能保留最新数据。由于笔者水平所限,文中不足疏漏之处尚希行家指正。

程序1:

static int receive_delay=10000;

int may(unsigned par,char *comm,char *ss)

{int cs=0,j=0;

char *p;

bioscom(0,par,0); //com1

loop:p=comm;

inportb(0x3f8); //reset

do{ while((inportb(0x3f8+5)&0x20)==0); outportb(0x3f8,*p++);

}while(*p); //send command

os=0;j=0;

do{ if((inportb(0x3fd)&0x01)==0)

if(os〉receive_delay) break;

else { cs++;

continue; } ss[j++]=inportb(0x3f8); cs=0;

}while(l);

ss[j]=';

if(j) return 0;

else return 1;

程序2:

#include

#include

#include

#include

#inolude

#define maxsize 4096

#define SEND 2

#define RECEIVE 1

#define COM1 0

#define COM2 1

static unsigned char Hardinterrupt=0;

struct ComInterrupt

{int portadd;

int intbit;

char buf[maxsize],*comm;

int bufh,recount,sendcount;

}com[2]={{0x3f8,0x0c,”“,”“,0,0,0},

{0x2f8,0x0b,”“,”“,0,0,0} };

void static interrupt (*old_com[2])(void);

vold interrupt coml(vold);

void interrupt com2(void);

void fax2(int comnum);

void setinterrupt(int comnum);

void clearinterrupt(int comnum);

void cominit(int comnum, int para, int interruptmark);

void sendcomdata (int comnum,char *command);

int getcomdata (int comnum, char *buf);

void interrupt com1(void)

{fax2(0);}

void interrupt com2(void)

{fax2(1);}

// set cominterrupt, comnum 0=com1, 1=com2

void setinterrupt (int comnum)

{

old_com[comnum]=getvect(com[comnum].intbit);

if (!oomnum)

setvect(com[comnum].intbit,coml); //com1

else

setvect(com[comnum].intbit,com2); //com2

//set hard int

Hardinterrupt = inportb(0x21);

if(comnum)

outportb(0x21,Hardinterrupt&0xf7); //com2 ,0

else

outportb(0x21,Hardinterrupt&0xef); //com1 0,

}

void clear interrupt(int comnum)

{

if(comnum)

outportb(0x21,Hardinterrupt | 0x08); //COM2

else

outportb(0x21,Hardinterrupt|0x10); //COM1

setvect(com[comnum].intbit,old_com[comnum]);

for( i=0;i

com[comnum].sendcount=com[comnum].recount=com[comnum].bufh=0;

outportb(com[comnum].portadd+1,0);

outportb(com[comnum].por tadd+4,0x0);

}

void fax2(int i)//i=o,com1; i=1, com2

{ unsigned char mark;

mark=inport(com[i].portadd+2);

do

{

if(mark&0x4)// receive data

{ if (com[i].bufh==maxsize)

com[i].bufh=0; com[i].buf[com[i].bufh++]=inportb(com[i].portadd); com[

i].recount++;}

else if(mark&0x2)// send command

{ if(*com[i].comm)

outportb(com[i].p

ortadd,*com[

i].comm++);

com[i],sendcount++;}

else

outportb(com[i].portadd+1,1);

}

}while ((mark=inport([1]. portadd+2))!=1);

outportb(ox20,0x20); //hard int return

}

// interruptmark 1= reoeive, 2=send, 3=rec&send

void comint(int com, char para, int interruptmark)

{

bioscom(0, par, com);

//open com interrupt

outportbv (com[comnum]. portadd+4,0x8;

outportb (com[comnum].portadd+1,interruptmark);

}

void sendcomdata(int comnum,char * command)

{ unsigned char interruptmark;

com[comnum],comm=command;

com[comnum],sendcount=0;

//set send interrupt

interruptmark=inportb (com[comnum].portadd_1);

outportb (com[comnum].portadd+1.(interruptmark|2));

}

//get com_receivedate and clear com_receivebuf,

int getcomdata (int comnum, char * buf)

{ int result=com[comnum]. recount,i:

if(buf)

strncpy(buf,com[comnum].buf,com

[comnum].bufh);

buf[com[comnum].bufh]=" ;

com[comnum].recount=com [comnum].bufh=0;

retun(result);

浅谈数据通信接口 篇3

关键词:数据通信,接口,串口,标准

1 终端接口概念

1.1 终端接口

在数据通信中, 接口部件可以看成是终端与计算机设备联系的桥梁, 它是DTE与DCE之间的界面或连接条件, 称为终端接口或DTE-DCE接口。

1.2 接口标准

为了使不同厂家的产品能够互换或互连, DTE与DCE在插接方式、引线分配、电气特性及应答关系上均应符合统一的标准和规范, 这一套标准规范就是DTE/DCE的接口标准 (或称接口协议) , 如图1所示为DTE-DCE接口。

1.3 终端接口的种类

一般通信接口种类按其国际或工业标准分类, 实际上就是按规程分类。常用接口有RS-232/V.24, V.35, X.21和G.703等。

2 串行接口

RS-232技术规范明确了DTE和DCE之间接口的机械、电气、功能及规程描述。RS-232接口类似于CCITT的V.24的组合, 主要用于速率20kbit/s、距离大约15m的串行数据传输。

2.1 RS-232/V.24接口

RS-232的确切名称应为:在数据终端设备和数据电路设备之间进行串行二进制数据交换的接口。

2.1.1 机械特性

EIA的RS-232标准的机械特性规定:其接口是一端有DB-25针孔连接头, 另一端也是DB-25针孔连接头的25线电缆, 电缆长度不能超过15m。

2.1.2 电气特性

DTE与DCE接口标准的电气特性, 主要规定了发送端驱动器和接收器的电平关系、负载要求、信号速率及连接距离等。

2.1.3 功能特性

RS-232接口电路的引脚功能上分为三种:数据、控制 (握手) 或定时引脚。

2.1.4 RS-232连接过程实例

RS-232接口的典型应用有:

计算机与Modem的接口;计算机与显示器终端的接口;计算机与串行打印机的接口。

2.1.5 零调制解调器 (Null Modem)

许多时候, 会遇到DTE接口与DTE接口互连的情况。大多是两个设备间距离较近, 无需通过Modem等通信设备互连。

2.2 RS-449/V.35接口

由于RS-232接口标准受到带宽和速率的限制, 为满足需要更高数据速率和更远传输距离的要求, EIA和ITU-T还制订了附加的接口标准:RS-449以及X.21等。

2.2.1 RS-449接口标准

2.2.2 RS-449的两类引脚

2.2.3 RS-449的电气特性

RS-449采用另外两种标准来定义自己的电气规范, 分别是RS-423和RS-422。

2.2.4 V.35接口

V.35是由ITU-T制订的接口标准, 它描述了网络访问设备和数据分组网络之间通信时使用的同步物理层协议。

2.3 X.21接口

X.21标准是由ITU-T制订的, 它的目的是为了解决EIA接口中存在的问题, 并为实现完全的数字传输提供一个数字信号接口标准。

2.4 G.703接口

G.703/G.704是一种数字数据电路接口, 由ITU-T规定了电话公司的设备与DTE (数据终端设备) 相连接的电气与机械规范, 其连接是通过同轴电缆接插件 (BNC) 连接器实现的, 并且工作在E1的数据速率上, 包括64kbit/s和2.048Mbit/s的接口。

3 并行接口

并行接口在两个设备之间一次传送8位或更多位的数据, 即一次发送 (或接收) 一个数据字, 而不像用串行接口一次只传送一位数据。

4 通用串行接口 (USB)

4.1 什么是通用串行接口?

USB是英文Universal Serial Bus的缩写, 中文含义是“通用串行总线”。

4.2 USB接口特性

USB使用一个4针插头作为标准插头。

4.3 USB 2.0标准

USB2.0接口标准是由COMPAQ, Hewlett Packard, Intel, Lucent, Microsoft, NEC和PHILIPS这7家厂商联合制定的。

5 1394总线接口

5.1 IEEE 1394接口

IEEE 1394高性能串行总线标准 (又称为FireWire) , 是一种高速的总线接口技术, Apple公司 (最早的FireWire产品开发商) 早在90年代初期就提出了该计算机接口技术。它的前身是Apple与Texas Instrument共同研究的FireWire, 目标是为了取代现在计算机上所使用的串行和并行传输接口 (RS232-C, Parallel, SC-SI) 。

USB和IEEE 1394相比, 二者是相互支持而不相互兼容的。USB是设计用于支持低速和中速外设的, 而IEEE 1394则是连接高速设备。例如, 磁盘驱动器和磁带设备的理想接口。

5.2 IEEE 1394电缆

IEEE 1394使用一种相对简单但较硬的电缆。

5.3 IEEE 1394接口的应用

通信接口 篇4

摘要:阐述接口与通信课程的多媒体CAI软件的开发编程方击,从而实现对传统课程教学方法的改革,有效地提高学生的学习兴趣和教学质量。

关键词:CAI软件;Visual Basic语言;接口与通信

《接口与通信》是计算机专业的一门专业基础课,它是一门实用性较强,软硬件结台的。面向系统应用的学科。计算机辅助教学(CAI)软件利用计算机多媒体(声、光、电等)技术。将实际教学内容进行生动再现,改进了传统教学的诸多不足 计算机辅助教育体现了一种新的教育思想。代表了·种新的教育方式,它具有很强的个别化教学功能。最能适应“以学生为中心 ”教学。随着科学技术的进步和计算机辅助教育实践的发展。计算机辅助教育效果会越来越明显。

Microsoft软件公司的Visual Basic 6.0具有简单易学、功能强大的特点,故将它作为本系统的设计工具软件。用以实现《接口与通信》课程的CAI软件。本系统用VB 6.0实现声音的解说,配合画面,呈现教学内容,并展示各种较为生动的应用举例 使得教学过程更加生动,教学内容更加容易理解。甚至可以发挥我们无限的想象,并使之转化为生动的演示过程。同时。随着INTERNET 的迅猛发展。远程教学的可能逐渐转化成现实,市场潜能有待开发 因此。本软件的开发更具潜在意义。

1 接口与通信课程CAI的要求

教学活动从本质上看是教师与学生之间的信息交流过程 首先,教师根据接口与通信课程的教学目标对教材进行分析和处理。决定采用声音、图文和动画等多媒体手段来呈现教学内容。这实质上是教师头脑中的一个信息处理过程 对学生来说,要接受教师提供的信息。理解其内容,并通过回答提问和作练习来响应,然后。由教师对学生的反应作出差别。并提供适当的反馈信息目前接口与通信课程的主要内容是PC机与外设之间的接口硬件的原理及其编程应用的方法讲解。在介绍硬件如中断系统、并行接口、串行接口、DMA 接等原理时。为了使学生便于理解且感举趣,则在ACI中要有大量采用动画及图文并茂的生动应用例子。使学生消除对硬件的畏惧感 在每个单元给出判定题和选择题,让学生检测自己的学习效果

2 软件结构

本CAI软件基本上实现了作为一个多媒体课件昕需要的一些东西,如文字、图象、声音及动画等 以模块化方式实现了《接口与通信》的各章节内容的讲解、举例、测试等功能。最初在一段音乐中由学习者点击鼠标进入。在主界面中包括了《接口与通信》的各个学习部分的图标,学习者可 选择自己感兴趣的内容或是想要了,解的内容。点击小图标。就可相应的进入 在学习的时候,可 选择是舌需要声音的讲解 相对于一般的无声的CAI软件。或是全篇的声音。更具有很大的灵活性。并且,学习者可 选择想要学习的内容。这比必须按部就班的学习。要灵活得多 在详细介绍备部分的同时。每个部分都有实例 使学习者能在实例中加深对所学知识的l,解,及学会各部分在实际中的应用。在实例应用中,动态地实现了输入输出的例子,使整个实用过程具有一种实时控制的效果,看起来更直观,更符合实际效果。掌握r各章节的内容也可进入测试模块。了解自己掌握的程度。

3 VB编程实现

3.1 控件及属性在进入主界面之前,有个序幕,提示学习者进入的是《接口与通信 的学习。在这个序幕中,用到了一个滚动的字幕,可避免静态图的枯燥。实现滚动字幕的最重要的·个控件是 Fimer控件。利用Timer控件可以在应用中 重复时间间隔产生一个事件,来实现图片的动态效果。同时,结合PictureHox控件的Move属性,实现了字幕的滚动效果在窗体中任意一个地方点击鼠标左键,就可进入了主界面,选择学习的内容 在主界面中,基本实现的功能是点击某个小图标时,系统可以切换到相应的内容上。在这里,用到了两个常用的控件:Image控件和Picture控件。在设计时从属性窗口中选定并没置Picture属性就可将图片加载到PictureBox控件或Image控件中,也可以在运行时用Picture属性或LoadPicture方法做到这点 要实现不问窗体间的切换。就要用到Form窗体的Show属性、Hide属性及Unload事件 在这里,如果一个窗体要显示时。就把另一个窗体隐藏起来,避免两个窗体同时存在的情况 当一个窗体不再需要的时候,用Unload事件可以减少系统资源的消耗本软件文字主要用到了两个控件:1 abel控件和[cxtBox控件 对于一些简单的文字,如:标题、文本框标题之类作为提示符出现的文字,就用Label控件来实现。Label控件具有AatoSize的属性,可以将其设置成为可变长度的行,这样,可以使Label控件的大小符合课件具体设计时的要求。TextBox控件是在文字的处理时用到的最多的控件 它可以在运行时显示用户输八的信息,或者显示在设计或运行时为其Text属性所嗨的字符串。并且TextBox控件的MultiLine属性可以设置文本是否自动换行。如属性值设置为True,则可使输入文本超过控件边界时自动换行,并可将Sco]lBars属性设置成添加水平滚动条或垂直滚动条(或者两种都添加)。这样,当文本大小超出了TextBox控件的情况下,可以更直观的体现出来。根据设计的需要。并不要求每个Text控件的外形都是一致的。此时,可根据TextBox控件的Appearance属性和BorderStyle属性,可 选择Text控件的外形。同时,如果在 [extBox控件中显示的文字多于一段的时候,这时,就不能在设置时输人,需要用TextBox打开和关闭文件了。通过这种方法,可以使得TextBox控件的 Fext属性中的内容的实现方法更加灵活。在本软件中,运用了大量的这类的操作来实现文本的装载。

在介绍各芯片的初始化命令字时,用到一个ComboBox控件,用它来显示一个选项清单,可使学习者从中选取想要了解的选项 每次使用者选择一个想要 解的初始化命令字时,就会显示对应于该命令字的格式和针对于格式的说明。

轻量级无线通信接口设计 篇5

随着传感器技术、无线通信技术、自动控制技术、移动互联网技术的高速发展, 智能家居的应用越来越广泛, 智能家居正从小型化向大型化、单一式向立体式范围扩张[1,2,3]。

无线智能终端网络可以建立自动采集转发数据的智能家居检测平台, 其部署形式自由、数据采集全面、可靠性高;利用Zig Bee和WLAN无线传输技术可以进行组网并实现具有双层网络结构的智能家居多媒体控制系统;为了解决多数智能家居控制系统安装部署困难、成本较高问题, 可以借助Wi Fi构建智能插座系统;利用Ir DA、WLAN、UWB、Z-ig Bee、Z-Wave、Bluetooth以及家庭无线控制技术 (HomeRF) , 可以实现智能家居网络连接[4,5,6,7,8,9,10,11]。为了实现智能家居控制系统信息远程共享与控制, 本文将应用以太网技术作为无线传输补充, 以LWIP协议栈为基础, 实现μC/OSⅡ操作系统, 并通过Wi-Fi和Ethernet两种方式结合完成终端数据传输, 设计一种针对智能家居使用的通信接口。

2 系统总体结构

智能家居的设备要求快速高效的连接;此外, 根据使用者的需求还要对设备进行信息远程共享与控制。本文运用以太网和Wi-Fi技术, 研制一种轻量级无线通信接口。系统架构见图1, 由终端、控制端和路由构成。终端提供两种搭载方式:无线组网无线接入网络以及无线组网有线接入网络。无线组网灵活自由, 不受地理位置影响。根据具体环境和需求设置, 该模式可扫描周围的网络, 选择、配置后接入, 设计三种无线方式:ADHOC、STATION和AP模式;考虑到任务切换的频率, 设计了热切换功能, 方便无线网络的切换;考虑到数据的安全性和简便性, 采用WEP、WPA/WPA2安全认证和TKIP、AES等加密模式, 用户只需要配置好用户名和密码;考虑到系统功耗和系统稳定性, 添加深度睡眠和待机模式等低功耗功能, 开发系统掉线自动重连程序;考虑到后期将扩展以太网模块, 设计了两种组网方式:星型和总线型结构, 控制器接收数据后采用Ethernet和Wi-Fi上报数据。该设计可以满足智能家居在不同环境的应用, 将手机、智能家电等设备构成室内终端互连网络。

3 硬件平台的设计

3.1 硬件设计

硬件结构见图2, 分三大模块:终端接入模块、中心控制模块、数据接入模块。

中心控制模块是控制器的核心, 采用ARM Cortex M3系列的STM32F103芯片, 运行应用层用户程序和底层驱动程序, 可管理各外设部件和网络模块, 实现数据的采集以及用户配置、数据格式封装;为了与室内终端建立无线连接, 采用88W8782无线模组及具有IEEE 802.11标准的网卡, 具有极高的兼容性, 无线连接快速、方便。数据接入模块采用Ethernet、JLINK、USB等接口, Ethernet可按照10BASE-T标准传输数据。

3.2 数据接入方案设计

为了方便用户对控制器进行调试, 扩展了USB模块, 可查询控制器状态信息;扩展的以太网模块提供了高效、稳定的数据传输。

(1) USB模块:利用USB转UART转换电平与电脑通信, 用户直接在PC端查看控制器的运行状态, 内嵌的CP2102模块可对系统进行供电。

(2) 以太网模块:以太网控制器采用ENC28J60芯片, 相比无线传输, 其数据传输更加稳定, 降低了数据丢失风险。经过后期优化, 互相补充的组网方式可进一步满足用户不同环境的使用需求。

4 软件体系设计

软件体系结构见图3, 采用分层设计思想, 由下往上依次为物理层与MAC驱动、操作系统层、应用层, 下层为上层提供服务, 这种服务以接口的形式在工作中体现, 上层无需了解下层具体实现细节, 只需关注功能的实现。

4.1 物理层与MAC驱动

该层主要包括ARM Cortex M3系列的硬件平台以及支持该平台运行的相关驱动程序。基于μC/OSⅡ操作系统的平台, 需要移植、兼容硬件驱动, 包括88w8782无线模块、ENC28J60以太网网卡模块等驱动。驱动源可在相应的网站下载。

88w8782模块, os_workqueue_thread是其驱动的核心, 为了系统任务的有序切换, 创建一个workqueue (工作队列) , 当系统调用workqueue进行队列初始化, 内核将为用户分配工作对象, 并将其链接到全局的工作队列。操作系统根据处理器状态匹配任务 (workque-ue_struct) 并分配内核线程。μC/OSⅡ自带的定时器未定义延迟函数, 此处建立一个定时线程保证系统时间的准确性。驱动数据收发的流程见图4。

4.2 操作系统层

(1) μC/OSⅡ嵌入式操作系统

因系统的小型化与低集成度, 任务切换频率少、复杂度低, 选择μC/OSⅡ作为嵌入式操作系统。μC/OSⅡ是一个嵌入式多任务、可移植、可裁剪内核, 代码量少, 适合根据不同的要求进行裁剪, 应用到实际系统。

为了对系统硬件进行程序描述, 完成了目标处理器和定时器的封装, 处理器承担了大量计算任务, 必须正确的编写处理器文件。系统文件结构包括三个部分:程序初始化配置文件、STM32F103硬件描述文件以及系统配置文件, 程序初始化配置的OS_CPU.H、OS_CPU_A.C、OS_CPU_A.ASM三个文件描述了STM32F103的环境适配内容, OS_CFG.H、INCLUDES.H设置了操作系统初始化配置, 其他一些文件具有通用性, 与硬件载体无关。根据系统的需要, μC/OSⅡ中的一个进程可以化为多种相互配合的单元运行并共享系统资源, 不同任务采用任务控制块描述。

图5中, 控制块第一个字段OSTCB-_LWIP (OSTCBStk Ptr) 指向堆栈栈顶, 堆栈保存了任务执行地址, 与系统任务唯一映射。为了提高系统任务的切换效率, 将堆栈指针字段放在整个控制块最前面;此时, 任务控制块地址就是堆栈指针地址, 系统寻址速度得以提高。

系统对堆栈进行动态分配, 释放内存:

*OS_TASK.C:

i.增加#include"memory", 引用空间配置器, 调用构造函数并定义相关头文件。

ii.创建OSTask Creat.Ext函数与INT8U need_free_stack参数, 指示μC/OS-Ⅱ线程退出是否释放堆栈内存;

iii.添加OSTCBPRIOTBl[prio]->need_free_stack=need_free_stack函数, 赋予任务优先级。

iv.添加If (ptcb->need_free_stack) {

Mem_free (ptcb->OSTCBStk Bottom) ;

Ptcb->need_free_stack=0;}, 决定内存释放工作。

*ucos_ii.h中添加struct os_tcb结构与INT8U need_free_stack函数。

为构建系统任务链表, 定义了OSTPCBNext和OSTPCBPrev字段, 该字段将系统的多个任务连接成双向链表OSTCBList;系统调用定时函数, 遍历此链表进行延迟操作, 保证任务执行时间。

*ucos_ii, 添加以下链表结构定义:

typedef struct_LIST_ENTRY

{struct_LIST_ENTRY*p Next;}

LIST_ENTRY, *PLIST_ENTRY;

并增加LIST_ENTRY p Obj、void*priv成员变量。

*os_tmr.c:

添加系统软中断内容if (ptmr->priv) Timer_tasklet_callback (ptmr->priv) 。

(2) 协议栈

LWIP (Light Weight IP) 协议是由瑞典计算机科学院开发的嵌入式系统的开源TCP/IP协议栈, 最大的优势在于可移植到操作系统或在无操作系统时独立运行, 结构精简、功能齐全, 适合小型低端嵌入式的应用场合, 选择LWIP作为系统协议栈。

LWIP有两种实现方式:其一, 单独移植内核核心, 用户应用程序编写只能基于Raw/Callback API进行;其二, 移植内核核心和上层API函数模块, 用户可以使用所有的API (三种) 进行编程, 控制器有多任务的切换需求, 采用第二种方式。

编写协议栈的头文件, 完成内部数据类型、宏、大小端定义及其内核参数配置;模拟层对sys_arch.c、sys_arch.h进行编写, 为协议栈提供邮箱、信号量、互斥量等机制;配置LWIP为系统进程, 完成初始化后, 终止程序并将其驻留在邮箱进行监听。

网卡与协议栈交换数据, 将数据进行封装后传递给内核;设计三类函数:

*协议栈初始化函数调用88w8782的初始函数对无线网卡进行配置;

*协议栈输出函数调用88w8782输出函数进行数据解析向下层传递应用消息;

*协议栈输入函数调用88w8782输入函数, 对数据进行格式封装并向上层传递, 开发的相关文件见图6。

4.3 应用层

包括Wi-Fi应用、Yeelink物联网应用、One Net物联网应用等。

Wi-Fi应用:为无线网卡开发终端STA和AP模式。由于AP和STA无法共存, 模式切换时, 通过软件设计关闭Wi-Fi;在程序的目标结构体中加入WEP、WPA、WPA2属性值, 实现了三种加密方式。

STA模式, 定义回调接口进行异步调用, 扫描周围热点;AP模式, 为了调用802.11接口, 定义netdev_ops接口, 为了给接入中心控制器的设备分配IP地址, 开发DHCP服务器, 为了使控制中心节能, 定义三个参数:CAM关闭省电模式 (参数0) 、DTIM省电模式 (参数1) 以及INACTIVITY省电模式 (参数2) 。

Yeelink与One Net物联网应用:设计TCP客户端进行通信服务并建立任务线程维护系统时间上报服务, 同时实现了EDP协议;为了完成数据上报和M2M通信, 开发Socket接口并引用Jeason格式进行数据封装, 封装的内容有:服务器地址、设备号、状态码等用户请求信息。

5 针对Yeelink和One Net物联网平台的接入

Yeelink与One Net是一种开放的通用物联网平台, 主要提供终端数据的接入、存储和展现服务。

Yeelink数据流通道的建立采用状态码 (status_str) 与用户码 (api_key) 双重验证, 为了建立通道, 申请了服务器入口, 并将该入口地址封装在数据帧内, 通信过程见图7。

One Net入口的申请包括系统的device_id与device_API-KEY标识码, 平台利用标识码对数据进行验证;One Net支持数据多样化显示, 是一种自上而下的实时控制平台。

为了动态的添加终端数据类型, 采用双端配置:

(1) 服务器端, 添加后端的设备数据并进行绑定, 储存设备请求信息。

(2) 客户端, 增加前端的数据类型并赋值, 完成数据分类、封装。

为了实现M2M (终端设备互连) 并提高数据库的安全系数, 设计一对验证码, 包括终端专属设备ID和Api Key。系统流程见图8。

6 实验与分析

为了验证该通信接口在室内应用的性能, 构建了室内带宽实验系统, 可分为Jperrf软件终端设备、通信接口样机、路由器三个模块。首先测试原型机AP、STATION模式的无线带宽, 分析了距离与障碍物对数据传输的影响, 开展了三组对比试验, 无障碍物1米、无障碍物10米、有障碍物10米 (在相邻两间房间) ;最后检验了以太网接口的传输性能。

AP、STA模式的测试分别得到三组结果, 见图9与图10;为了分析以太网接口性能, 实验得到了数据延迟与带宽实验数据, 见图11。表1为实验所得数据。

处于AP模式时, 室内1米的数据作为参考, 10米无障碍和10米有障碍的环境下带宽分别减少21%、23.3%;处于STA模式时, 10米无障碍物和10米有障碍物的环境下带宽分别减少了76.5%、79.6%;证明STA模式的数据容易受到距离和障碍物的影响, 后期优化将重点研究提高STA无线传输效率的方法。

以太网模块测试, 字节数据平均延迟14毫秒, 带宽测试折线图相对平稳, 表明有线传输能够维持较大带宽, 保证数据平稳输出, 采用有线方式作为补充是有意义的。

7 结语

本文设计和研制了智能家庭内部使用的轻量级无线通信接口, 以STM32F103微处理器、WIFI模块, 以及扩展的以太网模块构成的硬件载体, 实现了室内局域网的接入与数据共享;通过μC/OSⅡ嵌入式操系统与LWIP协议栈的嵌入实现了数据动态管理, 并接入了One Net与Yeelink物联网平台。研制的样机经不同场景测试, 性能稳定、可靠, 达到了设计要求。随着设计的不断完善、STA带宽的提升, 该通信接口方案具有广阔的应用前景。

参考文献

[1]Sehoon Kim, Jin-Young Hong, seil Kim, Sung-Hoon Kim, Jun-Hyung Kim, Jake Chun.RESTFUL Design and Implementation of Smart Appliation for Smart Home[J].2014 IEEE 11th International Conference on Ubiquitous Intelligence and Computing, 2014:717-722.

[2]朱向军, 应亚萍, 应绍栋, 冯志林.基于Zig Bee和WLAN的智能监控系统的设计[J].电信科学, 2009:45-50.

[3]张婷, 彭敦陆, 邹萌萍.基于REST的Wi Fi智能插座家居系统[J].计算机工程, 2016, 42 (2) :70-76.

[4]W.J.Li, X.Tan, D.H.K.Tsang.Smart home energy management systems based on non-intrusive load monitoring[J].2015 IEEE International Conference on Smart Grid Communications (Smart Grid Comm) , 2015:885-890.

[5]H.K.Nguyen, J.B.Song, Z.Han.Distributed Demand Side Management with Energy Storage in Smart Grid[J].IEEE Transactions on Parallel and Distributed Systems, 2015, 26 (12) :3346-3357.

[6]M.H.Asghar, A.Negi, N.Mohammadzadeh.Principle application and vision in Internet of Things (Io T) [J].2015 International Conference on Computing, Communication&Automation, 2015:427-431.

[7]Y.E.Wu, K.C.Huang.Smart Household Environment Illumination Dimming and Control[J].Journal of Display Technology, 2015, 11 (12) :997-1004.

[8]G.Luca, M.Benedetta, F.Nardecchia, F.Bisegna, G.Chiara.Home smart grid device for energy saves and failure monitoring[J].2015 IEEE 15th International Conference on Environment and Electrical Engineering, 2015:671-676.

[9]M.Vanouni, N.Lu.Improving the Centralized Control of Thermostatically Controlled Appliances by Obtaining the Right Information[J].IEEE Transactions on Smart Grid, 2015, 6 (2) :946-948.

[10]S.Nasrin, P.J.Radcliffe.Novel protocol enables DIY home automation[J].2014 Australasian Telecommunication Networks and Applications Conference, 2014:212-216.

解调仪通信接口识别与串扰隔离 篇6

关键词:光纤Bragg光栅解调仪,串扰,信号隔离,通信接口识别

0前言

在精密仪器的使用中数据传输是整个测量过程中必不可少的一环, 通信接口的设计起到关键性的作用, 而在实际运行中很多因素会引入干扰, 这就要求仪表的通信电路具有高可靠性和稳定性[1,2,3,4,5,6]。采用USB接口和CH375B芯片进行上位机和下位机间的通信, 该方法传输速度较快, 且应用方便, 能可靠地无损检测的上下位机间的控制与数据信号传输[7]。采用USB接口实现PC机与激光雕刻机的数据传输, 能适应高速、大数据量的加工需求, 能够扩展多台雕刻机共用一台PC机控制, 大幅度提高工效[8]。USB接口到RS232接口的串口转换及多串口扩展卡的设计方案, 讨论了USB到RS232的转换技术, 以及RS232多串口扩展技术的硬件和软件的设计[9]。将原有RS232串口通信, 改进为USB接口通信。通过分析解决了接收信号出现了不明周期性干扰的问题, 提高了数据传输可靠性[10]。一种用于AM-OLED驱动芯片的MDDI物理层传输电路, MDDI的传输速率可达400 MB/s, 传输速率高、功耗小、可靠性高、引脚数目少以及EMI噪声小等优点[11]。

本文设计了一种光纤Bragg光栅解调仪串口和USB口通信的接口识别与串扰隔离电路, 并通过USB/RS232转换原理及FBG解调仪内部元器件的电气特性, 分析该电路的串扰隔离功能, 提高了上位机接收数据的稳定性和可靠性。

1 电路对通信接口识别的设计与分析

该电路主要由反相器集成电路74HC14、模拟开关集成电路74HC4066和比较器LM324组成, 由解调仪自带的电源转换模块供电, 其结构如图1所示。

其中, D1、D2、D3为集成芯片74HC14内部反相器, D1A、D1B、D1C、D1D为集成芯片74HC4066内部的四个模拟开关, 比较器LM324正电压端口的+4 V电压由解调仪电源转换模块的+5 V电压分压而来, 74HC14、74HC4066、LM324的工作电压VCC也由解调仪自带的电压转换模块供电。FBG解调仪中的Bay Spec解调仪, ASE-C光源, 光开关模块的工作电压都为+5 V, 选用LM2576稳压芯片, 设计了电源转换模块, 如图2所示。实现将解调仪外接适配器+12 V电压转换为+5 V电压。

图1中, 串口1与上位机连接, USB口电压VCC悬空, 经电压比较器LM324与一个+4V的电压进行比较输出高电平, 经反相器D1输出电压为低电平, 低电平不通过二极管D4。反相器D2输入端由于接下拉电阻R1为低电平, 经D2反相器输出为高电平, 即信号线CT2传送至模拟开关集成电路芯片74HC4066的12引脚 (D1D使能) 、13引脚 (D1A使能) 为高电平, 模拟开关D1D、D1A导通, 串口处于通信状态。反相器D2输出端的高电平经反相器D3输出变为低电平, 即信号线CT1传送至74HC4066的5引脚 (D1B使能) 、6引脚 (D1C使能) 为低电平, 模拟开关D1B、D1C处于关断状态。

当USB口与上位机接通时, USB口电压VCC提供给比较器负输入端电压为+5 V, 高于比较器正输入端电压+4 V, 比较器输出低电平。经反相器D1输出高电平, 二极管D4导通输出高电平, 高电平经反相器D2输出低电平, 即信号线CT2传送至74HC4066的12引脚 (D1D使能) 、13引脚 (D1A使能) 为低电平, 模拟开关D1D、D1A处于关断状态, 串口通信断开。低电平经反相器D3输出高电平, 即信号线CT1传送至74HC4066的5引脚 (D1B使能) 、6引脚 (D1C使能) 为高电平, 模拟开关D1B、D1C导通, 实现了USB口上电自动识别的功能。

2 电路对串扰隔离作用的分析

使用该识别电路前, 借助示波器对光纤Bragg光栅解调仪串口通信时的数据接收端RXD和发送端TXD的电平分别进行测量。串口接收端RXD测得的端口电压波形图如图3所示, 串口发送端TXD测得的端口电压波形图如图4所示。

由图3可以看出, 高电压部分可达+6 V左右, 满足正常通信要求, 低电压部分被明显拉低, 最大幅值只达-1 V, 不能满足RS-232正常通信标准。

由图4可以看出, 高、低电压都被明显拉低, 不能满足RS-232正常通信标准。图中电压接近0 V的部分, 反应通信严重受干扰, 解调仪与上位机的握手失败。

根据光纤Bragg光栅解调仪串口通信时, 输入输出端口电压被拉低的情况, 分析其硬件电路。发现Bay Spec解调仪的RS-232串口与上位机握手通信时, 与之并联的USB转换电路有拉低串口电平的可能性。

USB转换电路中, MAX232芯片是TTL—RS-232电平相互转换的典型芯片, 利用其内部的双电荷泵, 以满足TTL/CMOS电平转换为RS-232电平的需要, 并采用CMOS反相器T1、T2、R1、R2, 实现正负逻辑电平的转换。其内部结构如图5所示。

Bay Spec解调仪的RS-232串口信号RXA1与MAX232芯片的14引脚共用通道, 串口信号TXA1与MAX232芯片的13引脚共用通道, 如图6所示。

为了保证ATMEGA128控制的光开关与上位机正常通信, MAX232必须带电工作。当USB转换模块与上位机断开连接时, 反相器输入端 (11引脚) 和反相器输出端 (12引脚) 视为悬空。由于MAX232带电工作, 所以悬空的CMOS反相器输入输出端电位不定。若反相器输入端为高电平, 输出端的低电平就有拉低串口电压的可能性;若反相器输入端为低电平, 输出端高电平就有抬高串口电压的可能性。由于这些可能性的存在, 可以判断串口电压是不稳定的, 不稳定的串口通信电压必然导致正常通信受干扰。

串扰隔离电路中模拟开关集成芯片74HC4066的D1B和D1C在串口通信时处于打开状态, 将MAX232内部反相器悬空的输入输出端对串口电压的影响完全隔离, 此时, 串口通信时输入输出电压稳定, 提高了上位机接收信号的稳定性和准确性。

3 结束语

浅谈播控系统中的通信接口 篇7

关键词:数据通讯,串行通信,接口定义,协议

随着播控系统的不断发展, 各种播出设备日益增加。在实际使用中, 播出系统各个设备之间的数据通信接口标准层出不穷。本文将就播控系统中应用部件的最流行标准通信接口进行分析, 并探讨如果解决互用性的问题。

1 RS-232

串行通信接口标准经过使用和发展, 目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。

EIA RS-232C是由美国电子工业协会EIA在1969年颁布的一种串行物理接口标准。RS (Recommended Standard) 是英文“推荐标准”的缩写, 232为标识号, C代表RS232的最新一次修改 (1969) , 在这之前还有RS232B、RS232A。通常我们都将RS-232C简称为232接口。由于大部分的设备厂商都生产与RS-232C制式兼容的通信设备, 因此RS-232C作为一种接口标准, 已经广泛在计算机通信接口中广泛采用。

RS-232-C标准最初是远程通信连接数据终端设备DTE (Data Terminal Equipment) 与数据通信设备DCE (Data Communication Equipment) 而制定的。这个标准制定之初并未考虑计算机系统的应用要求。但目前它又广泛地被用于计算机通信接口与终端或外设之间的近端连接标准。显然, 这个标准的有些规定及和计算机系统是不一致, 甚至是矛盾的。有了对这种背景的了解, 我们对RS-232C标准存在计算机应用方面的局限就不难理解了。

RS-232C标准适合于数据传输速率在0~20000b/s范围内的通信。在这个范围内, 其规定的数据传输速率分别为每秒150、300、600、1200、2400、4800、9600、19200波特。

RS-232C标准规定, 驱动器允许有2500p F的电容负载, 因此其通信距离与每米电缆电容量成反比。比如, 当采用150p F/m的通信电缆时, 最大通信距离为15m。另外, RS-232C传输距离短的另一原因是它属于单端信号传送, 存在共地噪声和不能抑制共模干扰等问题, 因此一般用于20m以内的通信。

目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式, 即所谓单端通讯。现在RS-232的通信都采用了9针接口。

RS-232C的功能特性定义了25芯标准连接器中的20根信号线, 其中2条地线、4条数据线、11条控制线、3条定时信号线, 剩下的5根线作备用或未定义。常用的只有10根, 它们是的功能定义入下表。

RS-232C总线标准设有25条信号线, 包括一个主通道和一个辅助通道。但是在多数情况下我們主要使用它的主通道。即使对于一般双工通信, 也仅需几条信号线就可实现, 比如一条发送线、一条接收线及一条地线。因此实际应用中, 在设计计算机与外围设备的通信时, 通常在9针的基础再进行简化, 只用其中的2、3、5三个管脚进行通信。

值得注意的是, 图2中2、3两脚是交叉互联的, 这很容易理解, 因为一个设备的发送线必须联接到另外一台设备的接收线上, 反之亦然。

2 RS-422

RS-422标准全称是“平衡电压数字接口电路的电气特性”, 它定义了接口电路的特性。RS-422以差动方式发送和接受, 因此不需要数字地线。差动工作是RS-422在同速率条件下传输距离远的根本原因, 这也是它与RS-232的根本区别, 因为RS232是单端输入输出, 双工工作时至少需要数字地线、发送线和接受线三条线。而RS-422通过两对双绞线可以全双工工作收发互不影响。

由于RS-422接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力, 所以它允许在相同传输线上连接多个接收节点, 最多可接10个节点。即一个主设备 (Master) , 其余为从设备 (Salve) , 从设备之间不能通信, 所以RS-422支持点对多的双向通信。接收器输入阻抗为4k, 故发端最大负载能力是10×4k+100Ù。

图4是典型的RS-422四线接口。实际上还有一根信号地线, 共5根线。RS-422四线接口由于采用单独的发送和接收通道, 因此不必控制数据方向, 各装置之间任何必须的信号交换均可以按软件方式XON/XOFF握手) 或硬件方式 (一对单独的双绞线) 。

RS-422的最大传输距离为4000英尺 (约1219米) , 最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比, 在100kb/s速率以下, 才可能达到最大传输距离。RS-422只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率为1Mb/s。在使用长距离传输时, RS-422需要一终接电阻, 要求其阻值约等于传输电缆的特性阻抗。而在矩距离传输时可不需终接电阻, 即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。

3 RS-485

EIA于1983年在RS-422的基础上指定了RS-485标准, 增加了多点双向通信能力, 即允许多个发送器连接到同一条总线上, 同时增加了发送器的驱动能力和冲突保护特性, 扩展了总线共模范围。后来正式命名为TIA/EIA-485-A标准, 但是由于在习惯上由EIA提出的建议标准都是以“RS”为前缀, 所以在通讯工业领域上, 仍然将这一标准命名为RS-485。

RS-485有两线制和四线制两种接线, 四线制只能实现点对点的通信方式, 现在很少采用。通常采用的是两线制接线方式, 这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式, 即一个主机带多个从机。

RS-485数据信号采用差分传输方式, 也叫做平衡传输。它使用一对双绞线, 将其中一线定义为A, 另外一线定义为B, 通常情况下, 其电气特性定义为:发送端上逻辑“1”以两线间的电压差+ (2至6) V表示;逻辑“0”则以两线间的电压差- (2至6) V表示。对于接收端而言, A比B高200m V以上即认为是逻辑“1”, A比B低200m V以上即认为是逻辑“0”。

RS-485的数据最高传输速率为10Mbps, 其最大的传输距离与数据信号传输所容许的最大电缆长度是数据信号速率的函数, 这个长度数据主要是受信号失真及噪声等因素的影响。

由于RS-485常常要用于与PC机的RS-232口通信, 所以实际上一般最高传输速率为115.2Kbps。又由于太高的速率会使RS-485传输距离减小, 所以往往为9600bps左右或以下, 当采用9600bps传输速率时, 最大传输距离可以达到1200米。

RS-485接口是采用平衡驱动器和差分接收器的组合, 抗噪声干扰性好。RS-485的接口总线上容许连接多达128个收发器、即RS-485具有多机通信功能, 这样用户可以利用单一的RS-485接口方便的建立起网络。因为RS-485接口组成的半双工网络, 一般只需二根信号线, 所以RS-485接口均采用双绞线传输。

RS-485的国际标准并没有规定RS-485的接口连接器标准、所以采用接线端子或者DB-9、DB-25等连接器都可以。

5 TCP/IP协议簇

TCP/IP (传输控制协议/网际协议) 是互联网中的基本通信语言或协议。在私网中, 它也被用作通信协议。进行网络连接时, 计算机应提供一个TCP/IP程序的副本, 而此时接收端计算机也应有一个TCP/IP程序的副本。

TCP/IP是一个两层的程序。高层为传输控制协议, 它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层, 接收端的TCP层把包还原为原始文件。低层是网际协议, 它处理每个包的地址部分, 使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同, 但最后会在目的地汇合。TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的, 意思是通信是网络中的一台主机与另一台主机之间的。

TCP/IP与上层应用程序之间可以说是没有联系的, 因为每个客户请求都被看做是与上一个请求无关的。正是它们之间释放了网络路径, 才使得网络可以被连续不断的使用。

TCP/IP协议的高层应用协议则包括万维网的超文本传输协议 (HTTP) 、文件传输协议 (FTP) 、远程网络访问协议 (Telnet) 和简单邮件传输协议 (SMTP) 。这些协议通常和TCP/IP协议打包在一起。使用模拟电话调制解调器连接网络的终端通常是使用串行线路接口协议 (SLIP) 和点对点协议 (P2P) , 这些协议压缩IP包之后再发送给对方。

与TCP/IP协议相关的协议还包括用户数据报协议 (UDP) , 它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的, 包括Internet控制信息协议 (ICMP) 、内部网关协议 (IGP) 、外部网关协议 (EGP) 、边界网关协议 (BGP) 。

参考文献

[1]GB 4961-1999.广播报时信号标准[S].国家广电总局广播电视规划院, 1999.

[2]GB 7400.1-1987.广播电视技术名词术语通用部分[S].国家标准局, 1987.

[3]高秉雄.分布式控制系统的发展[J].管理科学文摘, 1994 (04) .

通信接口 篇8

这5项国家标准分别是:《电动汽车传导充电系统第1部分:一般要求》《电动汽车传导充电用连接装置第1部分:通用要求》《电动汽车传导充电用连接装置第2部分:交流充电接口》《电动汽车传导充电用连接装置第3部分:直流充电接口》《电动汽车非车载传导式充电机与电池管理系统之间的通信协议》, 5项标准修订全面提升了充电的安全性和兼容性, 将于2016年1月1日起实施。

田世宏指出, 新标准对充电接口和通信协议进行了全面系统的规范, 为充电设施质量保证体系提供了技术保障, 确保了电动汽车与充电设施的互联互通, 避免了市场的无序发展和充电“孤岛”, 有利于降低因不兼容而造成的社会资源浪费, 对促进电动汽车产业政策落地, 增强购买使用电动汽车消费信心将起到积极的促进作用。质检总局和国家标准委将会同有关行业部门加强对新标准的宣传培训和贯彻实施, 加快推动产业政策引用新标准, 推动充电设施产品认证与准入管理制度使用新标准, 促进已建、在建充电设施按新标准更新升级换代。同时, 加快完善电动汽车充电设施标准体系, 加强充电设施互操作性测试、充电站安全防范、运营服务等配套标准的制定, 为充电设施管理、运营、维护等环节提供有力的技术支撑。

郑栅洁指出, 我国正处在电动汽车大规模推广和充电基础设施广泛布局的初期, 新标准的发布实施, 将有效避免因充电设施与车辆不兼容问题可能造成的社会资源浪费, 方便电动汽车用户使用, 促进我国电动汽车和充电基础设施快速发展。国家能源局将加快充电基础设施建设, 强化新标准实施, 进一步规范充电基础设施行业准入, 把符合新国标作为充电设施市场准入条件之一, 加强新标准的执行约束性和强制性。

通信接口 篇9

1 UART原理及设计简介

UART的全称是通用异步收发器 (Universal Asynchronous Receiver/Transmitter) , 是实现设备之间低速数据通信的标准协议。“异步”指不需要额外的时钟线进行数据的同步传输, 是一种串行总线接口, 只需占用2根线就可以完成数据的收发 (1根接收数据, 1根发送数据) 。

UART一帧由起始位、数据位、校验位和停止位组成。数据逐位传输, 示意图如图1所示。

异步通信要求发送的每一帧数据都必须按照图1给定的UART格式进行格式化。一帧数据由4部分组成, 首先是起始位“0”;接着是发送的数据 (这里采用8位) ;然后是可选的检验位来判断接收数据有无错误 (这里选用奇检验) ;最后是停止位“1” (停止位可以为1位、1.5位和2位) 。若线路上没有传输的数据, 则线路始终保持为“1”, 即空闲。接收端不断检测线路状态, 非接收状态下如果检测到线路由“1”变为“0” (“0”至少保持8个内部时钟周期) , 则认为有发送数据需接收, 接收器进入接收阶段。

UART模块总结构如图2所示。首先, 发送时按照UART帧格式, 由发送写信号启动发送波特率发生器, 先发送一位起始位, 然后由发送波特率发生器时钟启动发送移位寄存器, 将发送数据存入发送移位寄存器, 并将发送一位寄存器中的数据发送, 同时由发送波特率发生器时钟启动发送数据计数器, 当计数器计数到第10位时, 产生奇偶校验位, 此时发送奇偶校验位, 计数到第11位时, 发送停止位, 同时产生发送完成指示信号。接收时, 先接收端开始检测并确认起始位, 然后通知UART控制端口接收数据, 开启接收波特率发生器, 依靠接收波特率发生器产生的时钟信号将发送的8位数据移入接收移位寄存, 同时由接收波特率发生器产生的时钟信号启动接收数据计数器, 当计数器计数到第10位, 也就是奇偶校验位时, 判断接收到的检测奇偶校验位是否发生错误, 错误则放弃将接收移位寄存器中的数据输出, 正确则接着接收停止位, 没有接收到停止位逻辑“1”, 则标志帧错误, 放弃将接收数据输出, 反之, 将接收数据输出, 产生接收完成信号指示信号。

2 UART设计

由图2可以看出, UART设计主要分为发送和接收2个模块组成。采用Verilog HDL硬件描述语言按照Top to Down的思想对各个模块先分别设计然后连接起来形成总体架构。

2.1 发送子模块

发送子模块的状态图如图3所示。

发送子模块由5个状态转换:空闲状态、发送起始位状态、发送数据状态、添加奇偶位状态和添加停止位状态。

(1) 空闲状态:在复位时或者在没有检测到发送写信号下降沿时, 保持空闲状态。

(2) 发送起始位状态:在检测到发送写信号下降沿时, 启动发送波特率发生器 (周期为内部时钟的16倍) , 开始发送起始位“0”, 由于在空闲状态时发送数据线处于高电平“1”状态, 所以在发送起始位之后, 发送数据线会产生一个下降沿, 这个下降沿可以启动数据接收。

(3) 发送数据状态:这里采用发送8位数据, 从高位到低位依次发送8位数据, 发送完毕进入下一个状态。

(4) 添加奇偶位状态:奇/偶校验是对数据进行逐位同或/异或运算, 这里采用奇校验, 简单来讲, 即在数据位后面添加“0”或“1”, 使最后输出数据“1”的个数为奇数。

(5) 添加停止位状态:输出停止位“1”, 进入空闲状态。

2.2 接收子模块

接收子模块的状态图如图4所示。

接收模块也有5个状态:空闲状态、起始位接收判断是否有效状态、接收数据状态、判断奇偶校验结果状态、接收停止位并判断帧错误状态。

(1) 空闲状态:在复位时或者未检测到起始位时, 保持空闲状态。

(2) 起始位接收并判断是否有效状态:在接收到接收数据线RXD的下降沿时, 开始对起始位检测, 如果在内部时钟前8个时钟对RXD采样都是“0”时, 说明起始位有效, 否则认为是抖动引起的下降沿, 回到空闲状态。起始位有效后, 启动接收波特率发生器, 接收波特率发生器的时钟频率和发送波特率发生器的时钟周期一样, 为内部时钟CLK的16倍, 这是为了发送接收时钟同步。但是, 光靠时钟同步是不能保证接收数据的正确, 如图5接收模块时序同步示意图所示, 由于发送数据每个周期发送一位数据, 所以发送数据TXD的周期为发送时钟的2倍, 同时RXD也是接收时钟的2倍, 即内部时钟CLK周期的32倍, 如果要保证在接收时钟CLK_REC上升沿时, 在RXD中间部位采样第一位数据 (这样的采样数据更可靠) , 就要求接收时钟CLK_REC选择是高电平开始启动, 还是低电平开始启动, 由于检测起始位用了8个CLK, 如果要检测到起始位有效后在接收第一个数据RXD1中部采样数据, 要求接着延时16个时钟CLK, 因此, 应该选择高电平启动接收时钟CLK_REC, 这样就可以确保接收的数据可靠有效。

(3) 数据接收状态:接收数据线RXD上传送过来的8位数据, 接收完毕后进入下一个状态。

(4) 判断奇偶校验结果状态:将RXD上接收到的奇偶校验位跟接收数据计算后的奇偶校验位比较, 判断结果, 如果相同, 则进入下一个状态, 否则回到空闲状态。

(5) 接收停止位并判断帧错误状态:将RXD上接收到的停止位与“1”作比较, 相同则将接收数据输出, 否则直接进入空闲状态。

3 仿真功能分析

设计的仿真采用Modelsim仿真, 设计对UART的功能进行了仿真。图6是接收模块仿真图, 接收数据输入RXD上的数据依次为11010101、10010101、10110101, 在每次接收完成一帧数据后, 标志位rxrdy置“1”, 在开始下一次接收时, 标志位rxrdy置“0”, 奇校验位和帧错误位一直为“0”, 说明奇校验校验正确, 帧接收数据也正确, 因此, 在标志位rxrdy置“1”时, 输出数据, 仿真结果正确可靠。

图7是发射模块仿真图, 在写信号 (wrsig) 出现下降沿时, 开始发送数据, 首先发送起始位“0”, 然后发送8位数据10101011, 接着发送奇校验位0, 最后发送停止位“1”, 发送完成8位数据后, txdone标志位置“1”, 发送完一帧数据后, 标志位paritycycle置“1”, 观察输出数据tx波形, 结果正确可靠。

4 结语

本文介绍了基于Verilog HDL设计的UART模块, 采样点选择可靠, 其可准确判断接收数据的起始, 创新点在于接收器与接收数据同步实现, 串行数据能被准确接收, 并通过在Model Sim下的仿真, 可下载至可编程逻辑器件中, 实现UART功能。

参考文献

[1]王冠, 黄熙, 王鹰.Verilog HDL与数字集成电路设计[M].北京:机械工业出版社, 2006

上一篇:多样性控制下一篇:三板市场