从某周一早晨7:00开始,上古卷轴5抄录典籍你家电能表的示数到下一周的早晨7:00再上古卷轴5抄录典籍电能表

通信接口概述
通信接口设计应用
通信接口电路原理图
通信接口简介
中央和标准通信子系统之间的。 如:RS232接口。
  RS232接口就是,机箱后方的9芯,旁边一般有 "|O|O|" 样标识。
  一般机箱有两个,新机箱有可能只有一个。笔记本电脑有可能没有。
  有很多工业将它作为标准通信端口。通信的内容与格式一般附在仪器的用户说明书中。
  计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口,使不同 的设备可以方便地连接起来进行通讯。 RS-232-C接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。它是在年由美国工业协会(EIA)联合贝尔系统、 调制厂家及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的 DB25,对连接器的每个引脚的信号内容加以规定,还对各种信 号的电平加以规定。
  (1)接口的信号内容 实际上RS-232-C的25条引线中有许多是很少使用的,在计算机与终端通讯中一般只使用3-9条引线。RS-232-C最常用的9条引线的信号内容见附表1所示
  (2)接口的电气特性 在RS-232-C中任何一条的电压均为负逻辑关系。即:逻 辑“1”,-5— -15V;逻辑“0” +5— +15V 。噪声容限为2V。即 要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号 作为逻辑“1”
  (3) 接口的物理结构 RS-232-C接口连接器一般使用型号为的25芯座,通常插头在DCE端,插座在DTE端. 一些设备与PC机连接的RS-232-C接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。所以采用的9芯插头座,传输线采用屏蔽。
  (4)传输长度 由RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应为50英尺,其实这个4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10-20%的范围工作的,所以实际使用中最大距离会远超过50英尺,美国DEC公司曾规定允许码元畸变为10%而得出附表2 的实验结果。其中1号电缆为屏蔽电缆,型号为DECP.NO.9107723 内有三对双绞线,每对由22# AWG 组成,其外覆以屏蔽网。2号电缆为不带屏蔽的电缆。型号为DECP.NO.是22#AWG的四芯电缆。
  1.RS-232-C是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS-232-C标准设有25条信号线,包括一个主通道和一个辅助通道,在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。RS-232-C标准规定的数据传输速率为每秒50、75、 100、150、300、600、、、19200波特。RS-232-C标准规定,允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。
  2.RS-485总线,在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。 RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送须由使能信号加以控制。RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS-485 可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。
  以往,PC与智能设备通讯多借助RS232、RS485、以太网等方式,主要取决于设备的接口规范。但RS232、RS485只能代表通讯的物理介质层和链路层,如果要实现数据的双向访问,就必须自己编写通讯应用程序,但这种程序多数都不能符合ISO/OSI的规范,只能实现较单一的功能,适用于单一设备类型,程序不具备通用性。在RS232或RS485设备联成的设备网中,如果设备数量超过2台,就必须使用RS485做通讯介质,RS485网的设备间要想互通信息只有通过“主(Master)”设备中转才能实现,这个主设备通常是PC,而这种设备网中只允许存在一个主设备,其余全部是从(Slave)设备。而现场总线技术是以ISO/OSI模型为基础的,具有完整的软件支持系统,能够解决总线控制、冲突检测、链路维护等问题.
什么是并行通信接口?
并行通信是把一个字符的各数位用几条线同时进行传输,传输速度快,信息率高。但它比串行通信所用的多,故常用在传输距离较短(几米至几十米)、数据传输率较高的场合。
  实现并行通信的就是并行接口。
  并行接口可设计为只作为输入/输出接口,也可设计为既作为输入又作为输出的接口。它可以用两种方法实现,一种是利用同一个接口中的两个通路,一个作输入通路,一个作输出通路;另一种使用同一个双向通路,既作为输入又作为输出。
  连接设备接口有PS/2,PATA,LPT等
什么是串行通信接口?
&&& 串行通信是指数据一位一位地依次传输,每一位数据占据一个固定的时间长度.其只要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信,
&&& 连接设备有SATA,USB等
单片机串行通信接口扩展技术
  的串行通信提供了与外设通信极大的方便性,虽然大多数单片机都具有硬件SCI(Serial Communicatis Interface),但也有一些产品没有SCI,如的等,对于这些产品的用户来说这是一个缺憾。而且,一般八位单片机只有一个SCI,但在很多实际应用,需要更多的串行通信接口。例如在基于Modem的远程中,单片机与PC机通信的同时,还需要与Modem进行通信;而在多机系统中,单片机需要与其他主机通信,另外也需要与本机控制台通信。所以利用单片机自身的资源进行串行通信接口的扩展很有意义。
  笔者在开发的过程中,总结了一些串行通信接口的扩展技术:分时共用,I/O口模拟。前者利用自身的硬件SCI,通过控制逻辑分时共享使用同一串行通信接口,后者在不增加硬件的条件下,充分利用MCU自身的资源利用I/O口模拟串行通信接口。
  串行通信接口原理
  单片机的SCI是一个通用异步/UART(Universal Asynchronous
/Transmiter)类型的异步通信接口,通过串行通信协议(如RS-232协议)同主机系统通信。
  在一般应用中,MCU简单地把数据写入数据寄存器即可实现一个字符的串行发送,SCI系统完成发送数据的所有细节工作,包括附加起始位和停止位以符合串行格式。SCI的接收器自动探测一个字节的起始位,并通过采样接收数据。接收串行数据并变换成并行数据的所有工作均由SCI完成,不需要MCU的干预。接收到数据后,MCU简单地从数据接收寄存器读取数据即可。
  SCI使用标准不归零(NRZ)格式(一个起始位,8个或9个数据位和一个停止位),最常用的格式数据位是8位的,如图1所示。
  NRZ数据格式的基本特点如下:
  高电平为逻辑1,低电平为逻辑0;
  发送/接收数据空闲时TXD、RXD线为高电平;
  发送/接收数据串的第一位是起始位(逻辑0);
  数据的最低位LSB首先被发送/接收;
  数据串的最后一位(第10位或第11位)是停止位(逻辑1)。
  分时共用技术
  分时共用串行通信接口技术利用MCU自身的硬件SCI,通过控制逻辑分时共享使用同一串行通信接口。控制逻辑分时共用串行通信接口的原理图如图2所示。
  图2中U1为74HC32(或门),U2为74HC04(非门),U3为74HC08(与门)。RXD、TXD为从MCU直接引出的SCI接收引脚和发送引脚,PTC0为MCU的I/O口,在此定义为输出,用于控制逻辑片选。当PTC0为高电平时,U1的2引脚和13引脚输入为高,3引脚和11引脚输出恒为高,即TXD1输出恒为高,RXD1输入被屏蔽;而U1的5引脚和10引脚输入为低,6引脚输出为TXD的电平,8引脚输出为RXD2的电平,此时TXD2的输出和RXD2的输入与MCU的TXD和RXD相一致。相反,当PTC0为低电平时,TXD2输出恒为高,RXD2输入被屏蔽,TXD1的输出和RXD1的输入与MCU的TXD和RXD相一致。10K的上来R1确保在初始状态下,即使PTC0未初始化的情况下,PTC0的电平为高,即初始状态下TXD2和RXD2有效。
  通过这种逻辑控制方式,在PTC0的控制下,TXD1、RXD1和TXD2、RXD2可以轮流使用MCU的串行通信接口,达到分时共享的目的。这种方式可应用于两个串行通信无需同时进行的场合。
  I/O口模拟技术
  I/O口模拟串行通信接口技术在不增加硬件的条件下,充分利用MCU自身的资源利用I/O口模拟串行通信接口,即利用I/O口做一个软件。软串口的发送和接收时序和硬件SCI一样,空闲状态为高电平,起始位为低电平,数据最低位LSB在前,依次到最高位MSB,最后是停止位,停止位为高电平,具体时序见图1。
  这里给出利用MC68HC908GP32的两个普通的I/O引脚PTD4和PTD5实现的软件串口。在MCU时钟为2.4576MHz的条件下,波特率为4800,一个起始位,8个数据位,无校验位,一个停止位。程序用C语言编写,编译环境为Hiware C编译器。程序清单如下。宏定义#define exit_critical asm sei //关中断#define enter_critical asm cli //开中断#define idle asm nop //空闲指令#define bit5 0x20 //定义位值#define bit4 0x10#define RX bit4 //定义SCI接收引脚#define TX bit5 //定义SCI发送引脚主程序主程序完成接收、发送引脚的初始化,调用输入和输出函数void main_loop(void){…… //程序其他初始化PORTD |= bit5; //SCI发送引脚初始化D |= bit5; //定义SCI发送引脚为输出DDRD &= ~bit4; //定义SCI接收引脚为输入input = getchar(); //调用SCI输入函数putchar(input); //调用SCI输出函数……}延时程序  为了保证发送和接收延时的精度,采用精简的嵌入式汇编语言编写。延时时间计算公式为(6 n+4)个总线周期。void delay_time(char n){asm{L1:DECA //1个总线周期CMP #0 //2个总线周期BGT L1 //3个总线周期RTS //4个总线周期}}发送函数  MCU总线时钟为2.4576MHz,发送数据遵循NRZ格式:一个起始位,8个数据位,无校验位,一个停止位。波特率为4800,即每位208 S。发送时直接逐位发送,相邻位间的延迟时间为208 S。延时控制通过反汇编代码,参看每条反汇编指令的周期数,进行计算。void putchar(unsigned char outchar){exit_ //关中断PORTD &= ~TX; //输出起始位,低电平for(count=0;count&8;count++) //8位数据输出{delay_time(80); //延时,确保相邻数据位间的间隔为208 Sif((outchar&bit0)==0) PORTD &= ~TX; //输出位为0,输出低电平else //输出位为1,输出低电平{PORTD |= TX; //补足空指令,使两种情况执行指令相同}outchar = outchar&&1; //数据右移,欲输出的位移至最低位}delay_time(80); //延时,确保数据MSB与停止位间间隔为208 SPORTD |= TX; //输出停止位,高电平delay_time(80); //延时,控制停止位时间长度为208 Senter_ //开中断}接收函数  接收函数循环检测起始位的发生,一旦检测到起始位,起始位后大约300 S后,也就是从数据最低位LSB的中间位置起按一定的时间间隔逐位采样,相邻位间开始采样的时间间隔位208 S,为了提高抗干扰能力,每位采样三次。unsigned char getchar(void){unsigned char inchar,count,temp,i;do{}while((PORTD&RX) != 0); //检测起始位delay_time(118); //起始位后300 s开始采样for(count=0;count&8;count++) //数据位8位,由低至高接收(LSB至MSB){inchar = inchar&&1; //数据右移,保证最终接收到数据位在最高位for(i=0,temp=0;i&3;i++) //采样三次{if((PORTD&RX) != 0) temp += 1; //采样值为1else //采样值为0 { //补足空指令,使两种情况执行指令相同} }temp /=3; //3次采样值之和除以3if(temp != 0) inchar |= bit7; //商位1,接收位为高电平else //商位0,接收位为低电平{inchar &= ~bit7; //补足空指令,使两种情况执行指令相同} delay_time(64); //延时,确保相邻位间开始采样的时间间隔位208 S}for(i=0,temp=0;i&3;i++){if((PORTD&RX) != 0) temp += 1; //采样值为1else //采样值为0 { //补足空指令,使两种情况执行指令相同}}temp /=3; //3次采样值之和除以3if(temp != 0) return(inchar); //停止位正确返回接收数据else return(-1); //停止位错误返回-1}
常用通信接口技术的探讨
  在过去两年里,用于消除IC、板和系统之间数据传输瓶颈的标准层出不穷,本文将就通信应用标准部件的某些最流行的标准进行分析,并研究众多新标准出现的原因,此外还探讨设计者如何解决互用性的难题。
  与串并行相连的
  在高速通信系统中,传输的数据流需要进行格式转换,即在光纤传输时的串行格式及在处理时的并行格式之间转换。串行器-解串器(一般被称作串并行转换器)就是用来实现这种转换的。串并行转换器与光电间的接口通常为高速串行数据流,利用一种编码方案实现不同信令,这样可从数据恢复嵌入时钟。根据所支持的通信标准,该串行流可在1.25Gb/s(千兆以太网)、2.488Gb/s(OC-48/STM-16)、9.953Gb/s(OC-192/STM-64)或10.3Gb/s(10千兆以太网)条件下传输。
  串并行转换器至成帧器接口
  在Sonet/SDH的世界中,光纤中的数据传输往往采用帧的形式。每帧包括附加信息(用于同步、误差监视、保护切换等)和有效载荷数据。必须在输出数据中加入帧的附加信息,接收设备则必须从帧中提取有效载荷数据,并用帧的附加信息进行系统管理。这些操作都会在成帧器中完成。
  由于成帧器需要实现某些复杂的数字逻辑,因而决定了串并行转换器与成帧器间所用的接口技术,采用标准CMOS工艺制造的高集成度IC。目前的CMOS工艺不能支持10Gb/s串行数据流,因此串并行转换器与成帧器间需要并行接口。目前最流行的选择是由光网络互联论坛(Optical Internetworking Forum)开发的SFI-4,该接口使用两个速度达622Mb/s的16位并行数据流(每个方向一个)。SFI-4与目前很多新型接口一样,使用源同步时钟,即时钟信号与数据信号共同由件传输。源同步时钟可显著降低时钟信号与数据信号间的偏移,但它不能完全消除不匹配PCB线路长度引起的偏移效应。16个数据信号和时钟信号均使用IEEE-1593.6标准LVDS信令。该接口仅需在串并行转换器与成帧器间来回传输数据,距离较短,因此无须具备复杂的流控制或误差检测功能。
  以太网中也存在类似接口。在10千兆以太网PHY的物理编码子层(PCS)与物理介质连接(PMA)层之间,IEEE-802.3ae规范提供了一种被称作XSBI的接口。这种10千兆16位接口在每个方向都具有16位并行数据流及源同步时钟。数据和时钟均使用IEEE-1593.6标准LVDS信令。数据通道使用64b/66b编码方案,其时钟频率为644MHz。
  该10千兆以太网规范使用串行接口连接MAC(介质访问控制)层和PHY(物理)层。这个被称作XAUI的接口,也被称为10千兆连接单元接口,这是一种使用四通道的串行接口,每个通道传输2.5Gb/s有效载荷数据,8b/10b编码使每个通道的比特率高达3.125Gb/s。该接口一般用于连接MAC和包含PHY及光器件的独立模块。根据几家制造商的多源协议开发的Xenpak使用XAUI接口。后文还将提到XAUI也用于系统背板。
  成帧器与网络处理器及其他元件间的接口
  成帧器与网络处理器间传输的数据可代表很多不同的数据流。Sonet/SDH帧中包含的附加数据表明数据有效载荷中每个数据流的位置,该信息需要在成帧器与网络处理器及相关器件间传输,如分类引擎和流量管理器。此外,网络处理器和相关器件还实现各种复杂的任务,如数据包传向交换的时序安排,管理数据包内容以确保没有非法数据进入网络,以及测量带宽以便特定应用或用户享有优先权。由于这些任务很复杂,因此需要在成帧器与网络处理器间实施流控制方案。
  成帧器、网络处理器与相关器件间通常使用的接口包括Utopia接口、POS-PHY接口、SPI接口和Flexbus接口。每个接口的后缀为level X,其级别表明标称数据速率。Level 2即指每个方向的数据速率为622Mb/s,Level 3为2.488Gb/s,level 4为9.953Gb/s,Level 5为39.8Gb/s。因此POS-PHY Level 4的标称带宽为9.953Gb/s。Utopia接口是为包含固定长度ATM单元的数据流而设计的。
  POS-PHY接口(Sonet物理层上的包)由PMC-Sierra和Saturn开发,很多特性与Utopia接口相同,有一项改进功能值得注意,即POS-PHY能满足不同长度数据包的需要,而Utopia只适用于固定单元长度。这表明POS-PHY接口是为无须ATM层,即可在Sonet/SDH传输层上直接传输长度变化的IP包的应用而设计的,因此被称作Sonet上的数据包。
  Flexbus接口由AMCC开发,可处理Sonet传输层上的变长度IP包。AMCC的Flexbus Level 4已获光网络互联论坛采纳,作为SPI Level 4 Phase 1(一般缩写为SPI-4.1),并已经作为业界标准规范发布。该规范在每个方向上提供64位并行点至点数据通道,它使用HSTL class 1 I/O,源同步时钟频率为200MHz,还提供四分之一速率接口和16位并行数据通道。
  POS-PHY Level 4也已经被光网络互联论坛采纳,命名为SPI Level 4 Phase 2(通常缩写为SPI-4.2)。该接口具有采用IEEE-1593.6标准LVDS的16位并行数据通道,源同步双数据速率时钟频率最小为311MHz。SPI-4.2的许多应用则使用频率更高的时钟,因为该接口除了传输数据有效载荷外,还传送包标签和路由信息。因此,设计者常常采用SPI-4.2,每个信号对的数据速率高达840Mb/s,每个方向的累计带宽可达13.4Gb/s。
  尽管SPI-4.2是为Sonet上数据包而开发,它已被通信业的其他应用所采纳。作为能支持多数据流而且每个数据流中都具有流控制的灵活接口,它可用作10千兆以太网的有效接口,还可用于存储区域网络(SAN)。目前市场上有各种采用SPI-4.2接口的新产品,还有一些产品正在开发之中,除了Sonet/SDH成帧器和网络处理器,还包括TCP卸载引擎(TOE)和10千兆以太网MAC。
  网络处理器与交换架构间的接口
  网络处理器与相关器件及交换架构间的接口有两种类型:一类为不需要在背板传输数据的接口,另一类为需要在背板传输数据的接口。
  对于第一种接口,位于同一块电路板的网络处理器芯片组和交换架构间的接口可用CSIX Level 1接口实现。该接口采用CSIX Level 1包格式,包括为交换架构提供路由指令的报头,以及用于误差检测及纠正的报尾,还包括数据载荷本身。控制CSIX规范的网络处理器论坛将进一步完善该规范,增加从一个NPU芯片组通过交换芯片传至另一个NPU芯片的额外指令。这将成为CSIX Level 2规范的最主要推进力。该规范还定义了每个方向中使用至多128个HSTL一类I/O的电气互连,其源同步时钟频率高达250MHz。CSIX Level 1协议与CSIX Level 1电气规范无关,无论NPU芯片组和交换架构间的经由背板的通信采用何种电气标准,仍可使用CSIX Level 1协议。
  对于第二种接口,即NPU芯片组与交换架构间需要在通过背板通信,仍然可以使用CSIX Level 1协议,但这种电气接口并不合适。信号将穿过,从端口卡到达系统背板,经过数英寸到达另一个连接器,然后进入交换卡。有诸多原因使得越来越多的设计者选择具有嵌入式时钟的串行接口来实现这些连接。首先,串行接口可最大限度地减少电路板与背板连接器的引脚数,从而可减小插拔力及对操作系统中电路板的可能损害。其二,在信号中嵌入时钟和数据的串行接口可完全避免时钟偏移问题。时钟偏移是PCB中数英寸长的并口所面临的主要问题。其三,串行信号的背板设计者还可提高传输速率,因为不存在时钟偏移,也就没有对未来性能的限制。
  被成功用作串行背板标准的接口是XAUI,它是为10千兆以太网开发的。该规范适用于通道排列电路,无论四通道轨线长度是否匹配,符合XAUI的器件均能接收无误差数据。该接口使用差分电流模式逻辑信令,它还采用交流耦合模式,允许电路板间的参考电压不同。
  目前本文所提到的接口都用于数据通道,即数据从光纤传输介质到达交换架构,然后返回光纤通道。但由于通信系统具有复杂的控制板,负责统计数据收集、流量监视、系统管理及维护等功能,因此需要强大的处理能力运行软件以实现这些功能。这些构建控制板处理器的接口正如设想的那样,与数据通道的接口明显不同。数据通道接口主要用于在两个器件间传输数据(即点对点链接),控制板接口则是与具有不同元件的一个或多个相连接:背板、、数据板器件的控制端口等。实现这些灵活的互连需要完全不同类型的接口。
  这类系统过去都是围绕多点复接的中心构建的。实现PCI总构的32位/33MHz及最近采用的64位/66MHz标准已经用于通信系统中。最近64位/133MHz PCI-X更用于高端。但是,由于数据板处理的带宽已经增加,控制板的带宽也要提高。很多设计者发现共享总线带宽不足以满足多个器件的需求。因此,出现一类新型接口。
  这类新接口采用点至点连接,用源同步时钟减少时钟偏移。差分信令可提高数据传输率,减少交换噪声和功耗。但真正的创新在于使用交换架构或通道器件,实现控制应用中所需的多点互连。
  已获得Motorola及Rapid IO贸易联合会支持的Rapid IO是使用交换架构实现点至点链接的接口。该接口的传输层规定数据如何封装在包中,每个包都具有数据源和目标信息,交换架构将数据包送往合适的目的地。Rapid IO在每个方向上提供8个或16个位,采用250MHz~1.0GHz双数据速率。此外,串行Rapid IO可使用具有8b/10b编码的1通道或4通道数据,嵌入时钟达3.125Gb/s,它还具有CML差分信令。
  AMD及Hyper Transport联盟开发的Hyper Transport使用通道器件实现点至点链接。数据以包的形式传输,每个包均包括数据源和目标信息。接收数据的通道器件按照数据包报头确定是将数据传至链中的下一个器件,还是直接处理数据。目前的Hyper Transport规范需要宽度为2~16位的并行数据。未来规范可支持更高速率。PMC-Sierra和Bro AD Com已经为Hyper Transport通信产品推出基于MIPS的处理器。
  PCI-SIG已经推出高速率PCI-X。它们使用与最初PCI-X相同的64位总线带宽,可支持双数据速率和四倍数据速率。PCI-X 533是速率最快的版本,最大总计带宽达34.1Gb/s。
  PCI-X的传输通讯协议、讯号和标准的接头格式都与PCI一并兼容,可以使3.3V的32位PCI适配卡可以用在PCI-X扩充槽上。当然如果你愿意,也可以将64位PCI-X适配卡接在32位PCI扩充槽上,不过,频宽速度将会大减。
ARM/DSP双核系统的通信接口设计
引 言&&&&&& 嵌入式系统的核心是嵌入式和嵌入式操作系统。早期的嵌入式系统硬件核心是各种类型的8位和16位;而近年来32位以其高性能、低价格,得到了广泛的应用。近年来,又出现了另一类数据密集处理型。DSP由于其特殊的结构、专门的硬件乘法器和特殊的指令,使其能快速地实现各种数字信号处理及满足各种高实时性要求。随着现代嵌入式系统的复杂度越来越高,操作系统已成为嵌入式系统不可缺少的部分。免费的嵌入式操作系统,如Linux等,随着自身不断的改善,得到了飞速的发展。Linux是一个免费的、强大的、可信赖的、具有可伸缩性与扩充性的操作系统。Linux实现了许多现代化操作系统的理论,并且支持完整的硬件驱动程序、网络通信协议与多处理器的架构,其源码的公开更有利于操作系统嵌入式应用。
  基于上述分析,笔者开发了基于和DSP芯片的双核嵌入式系统。系统充分利用了ARM和DSP的各自特点,既可以使用ARM和DSP芯片进行协同开发,也可以利用ARM或DSP进行独立开发。操作系统选用了Linux,以利于充分发挥系统的效能。
&&&&&& 1 系统的总体设计
  由于ARM芯片的控制性能较强,在嵌入式系统中ARM主要用于控制和少量的数据处理。这样,一方面要求要低功耗和有足够的时钟频率来运行操作系统,以满足便携式的要求;另一方面也要求其有足够种类的,以利于性能的扩展。基于以上考虑,在开发平台中选用HY7202作为CPU。
  DSP作为数据运算部分,可以充分发挥其对数字信号处理的独特优势。TI公司的C54xx系列16位定点DSP以其高性价比普遍应用于各类通信、便携式应用当中。考虑到对数字视频和数字图像等大数据吞吐量应用场合的处理要求,选用TI公司的TMS320C5416芯片。其时钟频率最高可达到206 MHz,系统总体框图如图1所示。
&&&&&&&&&&&&&&&&&&&&&&&&&& &
&&&&&& 系统软件平台结构如图2所示,软件平台分ARM部分和DSP部分,以及ARM和DSP的接口软件设计部分。ARM部分以Hynix公司的ARM Linux Version 2.4.18为操作系统,并在此基础之上移植Linux标准库GLIBC、LIBJPG、LIBPNG、IMLIB、LIBWWW、LIBFLASH及汉字库。图形界面以Microwindows 0.9及其控件库FLNX提供嵌入式图形界面平台。系统平台具有强大的网络通信功能,通过平台WEBSERVER、FTP、TELNET、INETD等网络和应用程序能方便地开发基于Internet的网络终端、远程控制、远程数据采集、远程数据处理产品。在应用程序层上,系统平台集成窗口管理程序,全中文化网络浏览器(支持HTML、XML),Flash(支持Flash4、Flash5、Flash6),文本编辑器,游戏等用于PDA开发,上网,以及可用于嵌入式数据采集、处理的虚拟等。
&&&&&&&&&&&&&&&&&
&&&&&& DSP部分通过提供完整的I驱动程序(DSP部分)及通信协议,通过增加相应数据处理程控制算法程序,利用HPI并行接口与主机ARM通信进行数据交换,可用于各种实时处理,控制领域。
  此外,DSP和ARM可以各自作为独立的系统使用,它们均有完整的子系统软件。子系统之间联系的核心是DSP器件本身带有的HPI接口。
&&&&&& 2 ARM和DSP的通信接口设计
&&&&&&(1) DSP的HPI口介绍
  HPI是TMS320C54X等芯片提供的一种并行端口,专门用于DSP和外部主机并行通信。HPI接口有标准HPI接口和增强型HPI接口。对于C5416和C5420DSP器件,它们的主机接口为增强型主机接口。标准HPI接口是一个8位接口,通过2个8位字节组合在一起形成1个16字。增强型HPI接口分8位和16位两种。8位增强型主机接口和标准HPI接口操作时序一样,主要区别在于标准型只能访问2 KB专用RAM,而增强型可以访问DSP的整个RAM区。16位增强型HPI接口采用16位总线,只要一个主机操作就能完成访问操作。
&&&& (2) HPI硬件连线
  HMS30C7202与TMS320C5416接口如图3所示。系统将HPI接口所有控制寄存器、地址寄存器、数据寄存器统一编址,映射到HMS30C7202物理地址0X0C000000开始的I/O空间。
&&&&&& 利用地址线RA\[3:0\]产生HPI访问所需的控制信号。A0与A1决定访问寄存器类型。A2决定访问的是第一个字节还是第二个字节:A2=0时,表示写入的数据为第一个字节;A2=1时,表示写入的数据为第二个字节。在HPI-8中所有地址线和控制线是在HDS1和HDS2的下降沿采样,而不是由HR/W决定,因此HR/W通过地址线A3表示当前操作是读还是写,而数据锁存信号由nRCS3和nRW0相与后共同产生。KSCAN[2]设置为HMS30C7202的PORTA中断输入脚,DSP通过中断方式与Linux底层HPI驱动程序通信。
&&&&&& 3 ARM和DSP的通信接口驱动程序设计
  Linux是Unix操作系统的一种变种。在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它和DOS或Window环境下的驱动程序有很大的区别。Linux驱动程序可以编译进内核,也可以模块形式动态地加入和卸载。Linux的这种特点可根据目标系统裁减内核,更适合于嵌入式系统。
&&&& (1) Linux驱动程序基本原理
  在Linux中所有设备分为字符设备、块设备和网络设备三种,所有设备都看成普通文件,因此可以通过用操纵普通文件相同的系统调用来打开、关闭、读取和写入设备。系统中每个设备都用一种设备特殊文件来表示。
  在Linux中,设备驱动程序是一组相关函数的集合。它包含设备服务子程序和中断处理程序,每个设备服务子程序只处理一种设备或者紧密相关的设备。其目的就是从与设备无关的软件中接受抽象的命令并执行。当执行一条请求时,具体操作是根据控制器驱动程序提供的接口,并利用中断机制去调用中断服务子程序配合设备来完成这个请求。设备程序利用结构file_operations与文件系统联系起来。在Linux下驱动程序装载如图4所示。
&&&&&&&&&&&&&&&& &
&&& (2) HPI驱动程序
  HPI接口可用I/O端口方式,也可以用I/O存取方式。系统平台采用I/O存取方式,将HPI访问控制寄存器、数据寄存器、地址寄存器,映射到内存物理地址为0X0C000000开始的空间,通过访问指令对HPI进行操作。HPI具体物理地址定义如下:#defineHPI_BASE0X0C000000//HPI基地址#define HPD_READ_LOWHPI_BASE+0X0012//读数据寄存器第一字节?#define HPA_WRITE_HIGHHPI_BASE+0X000C//写地址寄存器第二字节
  在Linux下,类似Windows,程序不能直接访问物理地址。设备驱动程序是内核的一部分,它像内核中其他代码一样运行在内核模式,驱动程序如果出错就会使系统受到严重破坏,因此需要将物理地址映射到内核空间。在Linux下通过virtul_address=(u32)ioremap(HPI_BASE,HPI_LENGTH)实现。驱动程序主要结构如下:struct file_operations hpi_fops={owner:THIS_MODULE,read: hpi_read,write: hpi_write,poll : hpi_poll,open: hpi_open,release: hpi_release,};
  HPI通信协议采用帧结构,由于增强型HPI接口允许访问DSP内部RAM所有空间,系统通信在DSP内部分配2 K字(16位)作为帧缓冲区,读写各1 K字,协议采用一位滑动窗口协议。帧格式如表1所列。
&&&&&&&&&&&&&&&&&&& &
&&&&&& 结语
  本文介绍了使用ARM和DSP双CPU构成的双核嵌入式系统的硬件平台,以及源代码开放的Linux作为嵌入式系统中操作系统的方法,给出了系统设计的总体框图,详细介绍了ARM和DSP通信接口的设计。这一设计方法可以适用于大多数现代嵌入式系统的设计,有一定的实用价值
TS201高速通信接口设计及实现
  A—TS201是继ADSP—TS101之后美国ADI公司推出的新一代高性能TigerSHARC处理器ADSP—TS201/202/203系列中的一款,核时钟最高可达600MHz,其片内集成了更大容量的,性价比高,兼有ASIC和的信号处理和指令处理器的高度可编程性与灵活性,适用于高性能、大存储量的信号处理和图像应用,例如雷达与声纳应用。TS201与外部设备通信主要有两种途径:传输;链路口传输。
  在雷达信号处理、数字图像处理等领域中,信号处理的实时性至关重要。由于FPGA在大数据量的底层算法处理上的优势及DSP芯片在复杂算法处理上的优势,DSP FPGA的实时信号处理系统的应用越来越广泛。
  本文采用Altera公司CycloneII系列芯片EP2C35F实现了与TS201两种方式的通信,即总线方式和链路口方式,并给出了具体的设计实现方法。这两种方式的设计已经成功应用于某信号处理机中。
  2TS201与FPGA的总线通信
  TS201的外部总线支持多种类型的专用/通用协议,可编程配置为不同协议,支持与不同类型设备的接口。外部总线接口协议分为:慢速设备、流水线和SDRAM协议。其中慢速设备协议可用来访问映射在MS0,MS1和主机空间的异步设备,如异步RAM和ROM;流水线协议能够支持对多种设备的访问,具有较高访问效率,特点是在流水传送数据的同时具有可编程的流水深度。TS201内集成了可编程SDRAM控制器,提供了与多种SDRAM进行接口的能力。
  MS0和MS1是DSP的片外标准存储器寻址空间库,本设计只用MS0空间。设计时TS201的32位数据总线,地址总线的高8位,送数时钟CLK,WR,RD和MS0都要引到FPGA的用户I/O管脚上。MS0作为FPGA的片选信号,WR和RD分别为写信号。由于不会频繁访问该接口,故对访问速度要求不高,DSP设置为工作在异步模式下的慢速设备协议接口。
  2.1TS201发送数据接口设计
  图1为DSP与FPGA通过总线进行传输的设计图。当DSP要向FPGA发送数据时,DSP中MS0和WR信号输出为低电平,地址线输出为0x],而数据则为每个时钟通过总线往FPGA发送1个32位数据。
  图1TS201往FPGA发送数据接口图
  而FPGA内部经过一个逻辑转换,即可从TS201接收数据。此逻辑转换可用VHDL语言编程实现:
  此外,如果CLK频率过高,可在FPGA内部建立寄存器或者FIFO来缓冲数据。
  2.2TS201接收数据接口设计
  当FPGA要往DSP发送数据数时,可以先发出一个中断请求IRQ1,从而使DSP释放总线控制,然后DSP将使RD和MS0信号输出为低电平,并使地址为0x,这时FPGA即可向总线输出数据。在TS201与FPGA的总线通信中,FPGA送数到DSP要占用总线,因此需要DSP释放总线控制,否则会总线冲突,甚至烧坏系统。
  图2TS201从FPGA读数
  3TS201与FPGA的链路口通信
  总线传输是TS201与FPGA接口中较简单的实现方式,但总线传输耗用资源较大,在多DSP共享总线时需要考虑较多问题,因此并不利于并行系统设计。而TS201链路口则较好地解决了这一问题,TS201链路口采用了LVDS技术,数据以方式传输,单向最大速率可达500MB/s,数据吞吐量4GB/s[2]。本设计FPGA时钟为50MHz,TS201核时钟工作在200MHz,链路口时钟设定500MHz。
  3.1LVDS技术
  低电压差分信号LVDS(LowVoltageDifferentialSignaling)是一种低摆幅差分信号技术,其突出优点如下[3]:
  [newpage]  比单端信号具有较高的频率LVDS逻辑状态间的电压变化仅为300mV,所以状态转换迅速,从而可在高频下稳定工作。
  更好的噪声抑制当差分传输线紧耦合时,串入的信号作为共模电压出现在接收器的输入共模噪声中,差分接收器只响应正负输入之差,差分信号的幅度并不受影响,从而抑制了共模噪声。
  更低的功耗LVDS使用恒流线路,把输出电流限制在3.5mA左右,降低终端的压降,从而降低了电路的总功耗。
  更小的电磁干扰传输通路上的高频信号跳变产生辐射电,场强正比于信号能量,LVDS通过减少电压摆幅和电流能量,把场强减至最低。
  3.2TS201链路口与FPGA通信接口设计
  TS201具有4个完全双向的链路口,将收发端做成2个独立通道,TS201可实现全双工通信,并且从原理上讲,数据的传输速率可以提高一倍。链路口上有24根引脚,其中16根,还有4根用于产生握手信号。
  本文所采用的FPGA为Altera公司的CycloneIIEP2C35F系列芯片,他支持LVDS技术,支持LVDS引脚并集成了LVDS[4]。由于TS201与FPGA接口设计中FPGA编程较为复杂,因此本文着重介绍了FPGA的收发数据控制模块的设计。
  TS201的链路口有1b和4b两种传输方式,本文以4b为例进行设计。图3为4b的硬件连接图,其中LXDATAO3_0~3和LXCLKOUT分别为差分数据和时钟线,LXACKI和/LXBCMPO(/表示信号低有效)为握手信号。
  图3链路口配置
  3.2.1TS201链路口通信的通用规则以及特征
  链路口协议的定时有几个通用规则[2]:
  (1)第一个数据(1b或者4b)总是在链路口时钟的上升沿传输;
  (2)最后一个数(1b或者4b)总是在链路口时钟的下降沿传输;
  (3)当链路口空闲时LXCLKOUTP总是被拉低。
  链路口接口有如下特征[1]:
  (1)只有当数据传输时才有不连续的时钟;
  (2)四字(128b)是数据传输的最小长度;
  (3)具有可选的校验字节。
  3.2.2链路口发送部分设计
  要求有3个操作时钟输入:链路口时钟(clk和clk270)和本振系统时钟clk4。clk4与clk是同步的,前者的频率为后者的1/4。若校验没被启动,四字就背靠背传输,中间没有插入延迟,而使能校验模块将导致垃圾字节之后的两个链路口时钟的延迟。延迟期间链路口时钟和数据都是停止的,即时钟保持为低而数据保持不变。本文的设计没启动校验功能。链路口发送部分框图如图4所示。
  图4链路口发送部分结构
  (1)发送缓冲主要用来调和FPGA与TS201之间工作频率的差异。例如当FPGA工作在40MHz时,由于TS201的本振时钟为50MHz,这时FIFO可以缓存数据,解决数据率不一致的问题。缓冲FIFO可用quartusLPM库生成,用户需要用到的FIFO容量,存入数据的长度,以及指示标志都可由用户设定,应用较简便。本设计并未启动校验功能,所以从FIFO出来的数据一方面进入控制模块,另一方面经过与门进入双数据率数据输出。
  (2)控制模块主要用于检测TS201发送过来的应答信号acki。根据此信号产生双数据率时钟的输入信号,并启动FIFO的读操作,使其输出数据进入双数据率数据输出模块,并发出传输结束信号bcmpo_n。
  (3)双数据率时钟输出以及双数据率数据输出模块用的都是quartus的LPM库提供的altddio模块,如图5所示。DDR_OUT为双数据率数据输出模块,在链路口时钟的上升沿和下降沿分别输出数据的低四位和高四位,而ddr_clk为双数据率时钟输出,其中clk_h信号是TS201发到FPGA应答信号的延迟。上述两个模块的输出都送到DSP链路口的LVDS信号。
  图5双数据率时钟输出以及双数据率数据输出模块在FPGA内部的实现方法
  3.2.3链路口接收部分设计
  图6为链路口的。其中,本振时钟clk和链路口时钟inclk需要满足如下关系:本振时钟clk与链路口时钟异步,前者的频率必须至少为后者的2/5而不大于后者的2/3。例如,对于500MHz链路口时钟,本振时钟必须位于200~333.3MHz之间。
  (1)接收数据捕获模块用于接收链路口时钟和数据。链路口时钟inclk直接用于获取链路口数据,并在链路口时钟的上升和下降沿把数据放入两个移位寄存器。数据被传输到接收FIFO,若校验功能启动还可将数据传输到校验模块。
  (2)控制模块主要用于产生控制信号对其他3个模块进行状态控制,以保证他们之间数据传输、运算结果等正确。
  (3)接收缓冲FIFO采用和链路口接收接口设计中相同的FIFO。
  图6链路口接收部分结构
  3.3仿真结果
  由于篇幅关系,本文只给出链路口的发送接口仿真结果,如图7所示,本振时钟clk为50MHz,作为缓冲FIFO的读写时钟。缓冲FIFO的写时能信号twr高有效,FIFO的读使能信号为TS201链路口应答信号ACKI,低有效。DDC_out的有效数据写进FIFO之后,一旦ACKI拉低,FIFO就输出数据QQ,再经过数据长度转换得到QQ_DES,最后双数据率时钟输出tt_clk以及双数据率数据输出tt_dat。
  图7链路口发送接口仿真结果
  4TS201与FPGA总线传输和链路口传输的比较
  上文实现了TS201与FPGA数据通信的两种方式:总线方式和链路口方式。链路口方式更适合于FPGA与DSP之间的实时通信,原因主要有:
  (1)实时信号处理运算量日益增加,目前普遍采用多DSP并行处理的方式,他们共享总线以互相映射存储空间,如果再与FPGA通过总线连接,必然会导致FPGA与DSP的总线竞争。
  (2)虽然TS201外部总线具有较宽的(最多64b),在总线时钟不是很高的情况下仍然能够获得较高的数据传输速率,但需要较多的I/O管脚,在一定程度上增加了布线的难度[2]。而采用链路口通信不但能有效缓解DSP总线上的压力,而且传输速度快、可靠性高,与FPGA之间的连线相对也少得多。
  本文使用Altera公司的FPGA实现了与ADI公司的新一代高性能处理器TigerSHARCTS201的总线传输和链路口传输接口。总线传输需要较多的I/O管脚以及可能造成FPGA与DSP之间总线竞争,而链路口通信需要相对少的I/O管脚,布线相对简单,尤其是传输速度快,可靠性高。从而链路口传输更灵活,更适合于FPGA与DSP之间的实时通信。
嵌入式PROFIBUS-DP从站通信接口的设计
  目前内对自动化产品(电器、仪表、驱动装置等)提出PROFIBUS通信功能要求,主要来源于:(1)国外生产设备及技术的引进,特别从欧洲引进的成套设备通常采用PROFIBUS现场,因此对国内配套产品提出了现场总线PROFIBUS通信功能的技术要求;(2)国内自动化系统厂家比较成功的、面向行业的,要求系统技术向现场总线技术发展,同时也要求现场设备向智能化、网络化方向发展。基于上述需求,嵌入式PROFIBUS-DP从站通信的设计为自主开发具有PROFIBUS-DP通信功能产品的用户提供了一种快速、高效的。
  实现方法
  (1)设计制作:使用PROFIBUS通信专用ASIC实现协议相关内容,选用合适的,外围加带光电隔离的RS-485驱动;
  (2)+Firmware软件:需要在单片机中 编程(Firmware软件),实现单片机与ASIC的结合;
  (3)用户产品的CPU通过串行接口向PROFIBUS-DP从站通信接口板读/写输入/输出数据;PROFIBUS-DP从站通信接口板自动转换成PROFIBUS-DP协议与PROFIBUS主站通信;
  (4)编写GSD文件,搭建一个调试与测试平台进行PROFIBUS系统配置。
  硬件设计
  嵌入式PROFIBUS-DP从站通信接口板(以下简称接口板)由CPU芯片、PROFIBUS协议芯片及光隔RS-485驱动等电路组成,如图1所示。
  接口板与用户模板采用连接,使用波特率选择可选择指定的7种波特率(K、38.4K、57.4K、115.2K、230.4K、460、8K)中的一种;接口板需要用户模板提供2组5V(VCC/GND-150mA和5V/0V-100mA),分别作为接口板的电源及光隔外电源,由16针插座J1引入。信号A、B、RTS及5V、0V可直接引到用户模板PROFIBUS的D型上(使用PCB布线或软接线均可)。根据PROFIBUS产品测试技术规范,此接法引线或软接线不宜过,通常PCB引线不超过20cm、软接线不超过10cm。
 如果PROFIBUS的D型插头与接口板之间需要更长的引线,可以从接口板上的10针插头J2引出,此时需要采用外接口。
  用户模板PROFIBUS插头为孔型(famel)D型插头,与接口板16针插座连接如图2所示。接口板CPU芯片采用普通的即可,考虑到PROFIBUS对速率的要求,推荐使用高速率、低功耗的8位AVR单片机作为接口板CPU。
  软件设计
  接口板与用户模板的串口
  通信设置
  接口板与用户模板通过串口连接,Txd、Rxd为TTL电平,半双工通信。通信方式采用应答方式:用户模板主动询问,接口板被动回答。设定每个字节用11bits传送:1个启始位、8个数据位、1个偶校验位、1个停止位,即51内核单片机的通信方式3。
  报文长度
  接口模板的初始化报文(发送、接收)固定长度49字节;接口板与用户模板之间数据交换报文(发送、接收),长度由用户在初始化报文中设定,最大为113字节;PROFIBUS输入/输出数据量可自由设定,最大112字节输入+112字节输出。
  实现功能
  (1)可实现PROFIBUS用户数化功能:用户模板可将一次性设置的参数在主站配置中设定,主站在与从站连接时一次将些用户参数传送到从站,用户模板可利用这些参数实现参数化;
  (2)接口板与用户模板通信有字符偶校验和纵向报文校验和,保证数据安全性;
  (3)接口板内设有备份I/O通信缓冲区,可保证实现PROFIBUS与串口通信数据的完整性(一致性)和同步要求。
  用户模板的通信基本过程
  初始化
  用户模板按接口板上波特率设置的波特率向接口板发初始化报文,然后等待接收接口板的回答,如图3所示。接口板回答初始化成功后,进入数据交换状态。
  数据交换状态
  初始化成功后接口板进入数据交换状态,反复进行数据交换。此时,用户模板主动向接口板发送"输入数据报文",其中包含PROFIBUS输入数据;接口板回答"输出数据报文",其中包含PROFIBUS输出数据,如图4所示。
  数据交换状态下接口板的程序流程见图5。
  系统配置
  关于GSD文件
  (1)每一个PROFIBUS从站或一类主站有一个"设备描述文件"称为GSD文件,用来描述该PROFIBUS-DP设备的特性;
  (2)GSD文件包含了设备所有定义参数,包括:支持的波特率、支持的信息长度、输入/输出数据数量、诊断数据的含义、可选模块种类等;
  (3)无论使用什么样的系统配置软件,都要根据GSD文件来对设备配置。
  (4)国际PROFIBUS组织PI提供了GSD文件编辑软件gsdedit.exe,该软件依照PROFIBUS技术标准格式规定,对用户编辑的GSD文件进行格式检查。
  如何使用"用户参数user-prm"
  "用户参数user-prm"的选择对于工业现场设备,常需要用户根据现场应用设定一些参数,其中有些参数不需要在设备运行中实时改变,如器的电流上限保护与报警值、温度的测量温度范围、选型、输出4~20mA/1~5V选择等。如果这些参数作为PROFIBUS主站的I/O输出,将占用PROFIBUS主站I/O资源和周期性轮循PROFIBUS从站的时间资源。
  将这些参数处理成"用户参数",将会缩短PROFIBUS主站通信时间、减小通信报文长度、提高总线通信效率。使用"用户参数"技术,只需要在主站配置中做出参数 选择,主站在与从站连接时,一次性将这些参数传送到从站,从站就可以使用这些用户选择的参数对从站进行参数化(初始化、参数设定)。
  确定"用户参数"类型、个数、字节长度
  在主站配置中选择用户参数用户在系统中配置从站参数,完全靠GSD文件描述。在STEP7的HARDWARE中配置从站,可设定总线波特率及站地址,其中设定的站地址必须与用户模板上地址设置一致。
  带有"用户参数"选择菜单的GSD文件,可在STEP7中生成更加友好的用户参数配置界面。
  结束语
  应用嵌入式PROFIBUS-DP从站通信接口的设计方案,用户不必了解PROFIBUS技术规范细节。具有开发周期短、技术指标高、技术升级快、拥有产品自主知识产权等优点,但用户须有单片机产品开发经验及PROFIBUS产品应用经验。目前国内多家仪表厂商已在此方案的基础上开发出了自己的PROFIBUS-DP从站产品。
一种用于单片机的红外串行通信接口
引& 言&& 在很多应用系统中,常常利用非电信号(如光信号、信号等)传送控制信息和数据信息,以实现遥控或遥测的功能。例如在单相抄表系统中,就是使用手持抄表器通过遥控的方式,来完成电度表用电量的抄录、设置表底数、电度表校时等工作。红外通信具有控制简单、实施方便、传输可靠性高的特点,是一种较为常用的通信方式。实现单片机系统红外通信的关键在于红外的设计以及接口驱动程序的设计。
1 红外通信的基本原理
&&& 红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。发送端采用脉时调制(PPM)方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外以光脉冲的形式发送出去;接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。
&&& 简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输;红外通信接口就是针对红外信道的调制。2 红外通信接口的硬件电路设计
&&& 单片机本身并不具备红外通信接口,但可以利用单片机的串行接口与片外的红外发射和接收电路,组成一个应用于单片机系统的红外串行通信接口。
&&& 红外发送器电路包括脉冲、驱动管T1和T2、D1和D2等部分。其中脉冲振荡器由NE555、(R1、R2)和电容(C1、C2)组成,用以产生的脉冲序列作为载波信号;红外发射管D1和D2选用公司生产的TSAL6238,用来向外发射950nm的红外光束。
&&& 红外发送器的工作原理为:串行数据由单片机的串行输出端TXD送出并驱动T1管,数位“0”使T1管导通,通过T2管调制成的载波信号,并利用两个红外发射管D1和D2以光脉冲的形式向外发送。数位“1”使T1管截止,红外发射管D1和D2不发射红外光。若传送的波特率设为1200bps,则每个数位“0”对应32个载波脉冲调制信号的时序。&2.2 红外接收器
&&& 红外接收电路选用公司生产的专用红外TSOP1738。该接收模块是一个三端元件,使用单+5V电源,具有功耗低、抗干扰能力强、输入灵敏度高、对其它波长(950nm以外)的红外光不敏感的特点。
&&& TSOP1738的工作原理为:首先,通过红外光敏元件将接收到的载波频率为的脉冲调制红外光信号转化为电信号,再由前和自动增益进行放大处理。然后,通过带通和进行滤波,滤波后的信号由解调电路进行解调。最后,由输出级电路进行反向放大输出。
&&& 为保证红外接收模块TSOP1738接收的准确性,要求发送端载波信号的频率应尽可能接近,因此在设计脉冲振荡器时,要选用精密元件并保证电源电压稳定。再有,发送的数位“0”至少要对应14个载波脉冲,这就要求传送的波特率不能超过2400bps。利用上述红外收发电路构成的红外信道最大通信距离为8m。3 红外通信的软件设计
3.1 通信方式
&&& 考虑到红外光反射的原因,在全双工方式下发送的信号也可能会被本身接收,因此红外通信需采用异步半双工方式,即通信的某一方发送和接收是交替进行的。这里设置单片机的串行口采用方式3通信;通信的数据格式为每帧11位,包括1位起始位、8位数据位、1位奇偶校验位和1位停止位;片内定时器T1作为波特率,选择传送的波特率为1200bps,则定时器T1的初值应设置为TL1=TH1=E8H,另外应禁止定时器T1中断,以免因定时器T1溢出而产生不必要的中断。
3.2 通信协议
&&& 进行红外通信之前,通信双方首先要根据系统的功能要求制订某种特定的通信协议,然后才能编写相应的通信程序。例如在电度表抄表系统中,红外通信的一方是单相电度表,另一方是手持抄表器,双方遵循表1格式的通信协议。表1 抄表系统的通信协议
&&&&&&&&& 格 式& 操 作
3字节BCD码
3字节BCD码
3字节BCD码
设置表底数
3字节BCD码
3字节BCD码
开/关表设备
3字节BCD码
3字节BCD码
EDH3.3 单相电度表通信程序
&& 在电度表抄表系统中,单相电度表接收命令是被动的,因此它采用实时性的中断方式进行接收。在系统初始化程序中依据如前所述的通信方式,对串行口和定时器T1进行相应的设置。
&&& 在中断程序程序中按字节形式进行接收,将接收到的字节存放在预先设定的缓冲区内,当接收到命令结束符后,则转入命令处理并回送相应的信息。接收过程中若发现校验错误,则停止接收并调用错误处理子程序,发送接收出错的信息,要求发送端重新发送。
3.4 手持抄表器通信程序
&&& 在红外通信过程中,手持抄表器是通信的发起者,其发送和接收都是主动的。它的具体工作过程为:不断扫描键盘,若发现有命令键按下,则调用发送子程序发送相应的操作命令;发送结束后即启动接收子程序,以接收电度表回送的信息,然后对接收到的信息进行后续处理。
&&& 本文介绍的应用于单片机系统的红外串行通信接口,具有硬件电路简单、成本低廉、编程方便、通信可靠性高的特点,实现了通信双方非接触式的数据传送。在电度表抄表系统中,由于配备了红外通信接口,利用手持抄表器可以方便地完成对电度表的抄录和校准等工作,大大提高了抄表工作的效率,而且抄表确定高并杜绝了估抄和误抄的问题。这种红外通信方案也可用于其它遥控、遥测的单片机应用场合。
Profibus现场总线智能从站通信接口设计
  开发中使用的是,其与的电路如图3—1。应当注意的是在使用并工作于同步模式时,内部有自己的地址锁存及解码,所以的低8位地址线不经过573锁存器直接与 连接(低8位地址线与8位分时共用传输线)。而CPU的高8位地址线直接与的AB0-AB7相连,且必须为00000XXX(X表示0、1信号都行),AB8-AB10必须为低。此时片选信号输入引脚不起作用,应当将其接至高电平。
  CPU与通过的RAM交换数据,的双口RAM应在CPU地址空间中统一分配地址。CPU把这片RAM当作自己的外部RAM。CPU采用P3和P4口扩展外部,P3口作为数据和低8位地址线,P4口作为高8位地址线。
  与通信接口的电路示意图见图3—2。用于串行通信的4个管脚分别为XCTS、RTS、TXD和RXD。XCTS的含义为清除发送,是 的输入信号,表示允许发送数据。此信号低电平有效,应一直接低电平。RTS为的请求发送信号,其最终接到的输出使能端。 RXD和TXD分别为串行接收和发送端口。  
  为提高系统的抗干扰性,内部线路必须与物理接口在电气上隔离。输入输出通道上的电气
隔离,采用了6N137高速。的电气隔离,采用了DCP0505这种5V到5V的隔离转换电源。
  Profibus通信协议保障了通信的高可靠性,但这以硬件和软件设计为基础。在通信接口设计时,必须遵循一定的规范,如信号的隔离,接口与收发间避免线路过长,电源的滤波处理,收发器和光耦的限流和必须与收发器光耦配合适当等。
  采用的高速光耦为6N137,收发器为SN75ALS176,通信速率可达6M波特率,可用于大部分的应用系统。如果用户需要更高的通信速率,可以将光耦换作可达25M波特率的HCPL-。
  4 通信接口的软件设计
  从站程序包括3个部分:的初始化程序,的中断处理程序和具体的IO应用程序。程序采用结构化编程思想,以便于以后的功能拓展。 的初始化程序应放在具体IO应用的前面;的中断输出作为CPU的中断输入,对于C196来说,采用的是外部中断,中断入口地址为200EH。
  在正常工作之前,必须进行初始化,以配置各个需要的寄存器。初始化程序功能结构见图4—1。
  中断处理程序用于完成发生的各种事件的处理。主要有新的参数报文事件,全局控制命令报文事件,进入或退出数据交换状态事件,新的配置报文事件,新的地址设置报文事件,监测到波特率事件和看门狗溢出事件。
  数据输入和输出处理(输入输出相对于主站而言)以及用户诊断数据输入可以放在应用程序循环中。在一个应用循环中,由应用来刷新输入BUF中的数据,保障所有输入数据是最新更新的数据。而在接收到由Profibus主站传送的不同输出数据时,会产生输出标志位(同样位于中断请求字单元),CPU通过在应用循环中轮询标志位来接收主站数据。相对于特定应用的诊断信息,需要实时传递到主站;主应用程序在应用循环中判断是否有可用的诊断BUF存在,当有空闲BUF时,应用程序输入诊断信息并请求更新。对于实时性要求严格的系统,应采用中断方式进行输出数据和诊断数据处理。
  5 结 论
  为验证所设计从站的Profibus功能及系统性能,需要确定实验方案并组建实验网络。实验中使用的主站采用SIEME的IM180主站模块和 DPMT主站软件。IM180附以主站软件可以实现对从站的状态监控及控制。实验还需要建立自定义从站的GSD文件,目的是为了使用开放的组态组态。使用SIEMENS的GSD-EditorV2.1(可以从Profibus用户组织的网站下载http:∥www.profibus.com)建立定制从站的GSD文件,可以减少定制GSD的周期,并能保证文件格式的正确性。
  实验中采用的总线波特率为6M,采用SIEMENS提供的接线器和自己设计的连接器。主站与从站可以保持可靠的通信。主站对从站发送的“从站地址设置”命令,从站可以正确的接收并处理,对从站的特别工作模式设定是通过全局命令完成,包括对从站锁定和同步的命令。实验结果表明这些功能都得到较好实现。
  不同波特率下所达到的通信距离也是Profibus规范的一个重要指标。本实验中采用屏蔽验证从站的这一特性。表5—1为实验所达到的指标。
  以上实验表明,所设计的从站完全符合Profibus标准。网络的数据传送速率可达6Mbps,且运行稳定,可以满足大多数应用的需求。
  开发过程也证明了利用Profibus通信协议进行Profibus产品开发,可以极大地节约时间和人力。 芯片的使用方法简单,功能相对完善,可以满足智能DP从站的通信接口设计。
PLD与AVR总线通信接口VHDL设计与实现
1、引言   嵌入式系统在日常生活中的大量使用,人们也对其性能和速度提出了更高的要求。和的结合,更能充分发挥嵌入式系统的优势。本文设计和实现的微控制器与可编程逻辑器件之间读写方式通信比传统的串行通信更可靠、速度更快。下面是一些相关术语的说明。
  总线:任何一个都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件设计、简化系统结构,常用一组线路,配置以适当的电路,与各部件和外围设备连接,这组共用的路被称为总线[2]。采用总线结构便于部件和设备的扩充,尤其制定了统一的总线标准则容易使不同设备间实现互连。
  AVR:ATMEL公司的AVR,是增强型RISC内载的单片机,上的附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便。AVR单片机采用增强的RISC结构 ,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令。本系统采用的AVR Mega64L还具有:用32个通用工作寄存器代替累加器,从而可以避免传统的累加器和存储器之间的数据传送造成的瓶颈现象;一个时钟周期执行一条指令;可直接访问8M字节程序存储器和8M字节数据存储器寄存器等特点[3]。
  PLD(Programmable Logic Device):PLD分为CPLD(Complex Programmable Logic Device)复杂的可编程逻辑器件和(Field Programmable Gate Array)两大类[2、3]。
  两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/FPGA。PLD是一种具有丰富的可编程I/O引脚的可编程逻辑器件,具有在系统可编程、使用方便灵活的特点;不但可实现常规的逻辑器件功能,还可实现复杂的时序逻辑功能。把PLD应用于嵌入式应用系统,同单片机结合起来更能体现其在系统可编程、使用方便灵活的特点。PLD同单片机接口,可以作为单片机的一个外设,实现单片机所要求的功能。实现了嵌入式应用系统的灵活性,可以大大缩短设计时间,减少PCB面积,也提高了嵌入式应用系统的性能。
  VHLD:VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,一种被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分)和内部(或称不可视部分),涉及实体的内部功能和算法完成部分[4,5]。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
  2、PLD同单片机接口设计
  系统中采用的MAX II EPM570 芯片有逻辑单元数(LE)570个,等效典型宏单元数440个,最大用户I/O管脚数160个,用户存储器比特数8192,tPD1 角对角性能5.5 ns,tPD2最快性能3.7 ns。采用100-pin TQFP封装。
  EPM570同单片机接口原理如图1所示。
图1 ATmega64L与EPM570接口示意图
  EPM570同单片机接口设计中,单片机采用Atmel公司的AVR系列的ATmega64L。ATmega64L通过ALE、CS、RD、WE、P0口(数据地址复用)同EPM570芯片相连接。ALE:地址锁存信号;CS:片选信号;RD:读信号;WR:写信号;AD0~AD7:数据地址信号复用。
  本系统的设计思想是:在EPM570设置两个内部控制寄存器,通过单片机对两个控制寄存器的读写来完成对其它通信过程的控制。EPM570设置的两个控制寄存器,可以作内部寄存器,也可以直接映射为I/O口,根据实际需要而进行设置。
  本系统设计的关键是:在EMP570 上实现的存储器的读写时序要满足ATmega64L对外部读写时序的需要,有关ATmega64L对外部读写时序请参考相关资料和ATmega64L的数据手册。
  3、PLD同单片机AVR读写接口VHDL实现
  PLD的设计流程[6,7]一般应包括以下几部分:
  ① 设计输入。可以采用原理图输入、DHL语言描述、EDIF网表读入或波形输入等方式。
  ② 功能仿真。此时为零延时模式,主要检验输入是否有误。
  ③ 编译。主要完成器件的选取及适配,逻辑的综合及器件的装入,延时信息的提取。
  ④ 后仿真。将编译产生的延时信息加入到设计中,进行布局布线后的仿真,是与实际器件工作时的情况基本相同的仿真。
  ⑤ 编程验证。有后仿真确认的配置文件下载到PLD相关配置器件中,加入实际激励,进行测试,以检查是否完成预定功能。
  以上各步骤若出现错误现象,则需要重新回到设计阶段,修正错误输入或调整电路,在重复上述过程直到其完全满足系统需要。
  本系统中,使用公司提供的集成开发软件Quartus II 6.0 进行设计,在进行模块实现时请参考ATmega64L的数据手册中关于ATmega64L对外部存储器的读写时序。
本设计实现 的VHDL部分源码如下:
  地址锁存:
写数据进程:
读数据进程:
4、仿真验证结果
  使用Quartus II 6.0 自带的仿真软件仿真结果如图2和图3所示。图中ale、cs、rd、we、_data 是激励信号,表示ATmega64L 相应接口信号,conreg1和 conreg2 为EPM570 输出信号,其目的是为了观察仿真结果是否正确,而实际应用中应根据项目需求而进行添加或是减少相应的I/O口。
  图2是ATmega64L向 EPM570 写数据过程。首先,在片选信号cs为低期间,在ale信号的下降沿,锁存mcu_data上的数据到add内部地址锁存寄存器。然后,在we信号低电平时,把mcu_data (0XAA)的数据直接写到conreg1(B),通过外接可以直接观察结果是否正确,当然,在实际应用中可以把数据锁存到内部寄存器中。
图2写数据0X“AA”到0地址处
  图3是读数据过程。在片选信号为低期间,首先,在ale信号的下降沿,锁存mcu_data(0X01)数据到add内部地址锁存寄存器。然后,在rd信号的低电平期间,把内部寄存器地址为0X01的数据reg02(0xAA)读到mcu_data数据线上传回单片机ATmega64L。
图3 读地址为0X“01”上的数据0x“AA”并传回数据总线
  从读写数据图中可以看出,ATmega64L对EPM570内部数据读写过程完全满足ATmega64L数据手册上的时序需要。关于ATmega64L的读写时序可以参考ATmega64L数据手册。
  本文实现PLD与AVR ATmega64L通信接口设计是笔者设计的一种纺织机械控制设备的一部分,经实际验证完全正确,并已投入生产。简单地修改该读写,可应用于多个CPLD或FPGA与单片机通信接口的项目中,本模块还可以根据需要扩展为16位、32位地址线的读写接口。
  本文创新点:充分利用可编程逻辑器件丰富的I/O口和内部可编程逻辑资源,通过总线读写的方式通讯,使PLD和MCU的通信速度大大提高,同时也提高了嵌入式系统或是工业控制中的其他相关性能,极大提高产品的竞争力
单片机系统中红外通信接口的设计
  在许多基于的应用系统中,系统需要实现遥控功能,而红外通信则是被采用较多的一种方法。一般市场上的协议简单、保密性不强、抗干扰能力较弱。这里,我们介绍一种基于字节传输的红外遥控系统,可以适合于各种复杂的应用场合。
  红外通信的基本原理
  红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。本系统采用的为脉时调制方法。数据比特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据比特,如图1所示。
  硬件设计
  复费率系统可分为手持遥控器和复费率电能表两部分。手持遥控器为发射部分,其基本电路如图2所示。采用塑封的SE303ANC-C发射,波长为940nm。按照协议规定导通或截止,从而产生特定频率的发射信号,这里选用的频率为38.9kHz。复费率电能表红外接收部分的基本电路如图3所示。采用***光公司的PIC-12043,其接收频率为37.9kHz,它直接将37.9kHz的调制信号解调为基带信号,提供给接收CPU。该接收灵敏度高,性能稳定。其基本工作过程为:当接收到37.9kHz信号时,输出低电平,否则输出为高电平。电能表部分采用的是51系列单片机,以中断方式检测接收信号。这里的非门对接收信号起整形作用。
  软件设计
  发射部分的程序相对来说非常简单,主要是产生不同时间间隔的37.9kHz脉冲串信号去控制发射管的通断。在发射端,CPU不断扫描键盘,一旦发现有键按下,即启动发射子程序将相应的数值发送出动。在我们的设计中,采用的是4×4的小键盘,正好和0~F编码对应,为了提高可靠性,采用最简单的纠错编码——将每位数重复发送一次,即和键盘数字对应的编码为00~FF。这样,一个键值要发送8比特。接收端接收满8比特信号后,再进行纠错处理,不正确的编码认为无效。收足规定的号码后,即调用号码分析程序进行处理。当每收到一个脉冲串信号后即启动一个。下次中断发生时,通过定时器的计数值判断是0还是1。如果定时器溢出,则清除本次接收的号码,恢复到接收初始状态。接收部分的基本程序流程如图4所示。
  在程序设计时,应该注意的中断方式采用下边沿触发;接收端通过T0计数值来判断发送比特,一般采用硬判决,即取0和1比特时宽的平均值为判决门限A,当T0值大于A时判接收信号为0,小于A时判为1。
  复费率电能表中的红外接收程序如下(MCU为 ,采用C语言编写):
#i nclude #i nclude #i nclude #pragma OPMIZE(5,SPEED)sbit RECV=P3^3;bdata unsigned
SIGN, RECVBYTE;sbit RECVBG=SING^0;sbit US1AT=SIGN^6;sbit RECVBITO=RECVBYTE^0;unsigned
RECVBIT;//-------------------------------------
timer0() interrupt 1 //entrance: 8*n+3=0Bh;{IE=0×8d; //1(EA)0(X)0(X)0(X)_1(ET1)1(EX1)0(ET0)1(EX0)Recvbg=0;}//--------------------------------------EX_INT1() interrupt 2 //接收红外信号{TC=0×45; //0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0)If(RECVBG==0) {RECVBG=1;RECVBIT=8;}else{ RECVBYTE=RECVBYTE&&1;if(TH0&=4)RECVBIT0=1;else RECVBIT0=0;RECVBIT--;if(RECVBIT==0) { RECVBG=0;US1AT=1;}}TH0=0;TL0=0;TCON=0×55; //0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0)IE=0×8f; //Enable the timer0 interrupt}//----------------------------------------------------void main() {RECVBYTE=0;SIGN=0;TMOD=0×11;TCON=0×55;//0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0)IP=0×00;IE=0×8d; //1(EA)0(X)0(X)0(X)_1(ET1)1(EX1)0(ET0)1(EX0)//基本循环程序while(1){··(略)·if(US1AT==1) { //红外接收处理··(略)·}}}
  以上设计方案在复费率电能表中应用后,效果良好,达到了设计要求。整个系统外围元件少,调试方便;软件工作量也较小。如果应用来传送大量数据时,还可以根据需要改变相应的编码形式,提高数据传送速率。
DK04监控模块与计算机通信接口电路
RS485通信接口原理图
改进后的485通信接口原理路
红外串行通信接口原理图
现在有1870人对本文发表评论
<form onsubmit="if(document.getElementById('content').value.length500){alert('评论不能少于三个字符,大于500个字符!');document.getElementById('content').focus();}" action="/common/comment_post.aspx" method="post">
Copyright & 2007- Corp.All Rights Reserved. 版权所有 经营许可证编号: 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:9-8016 QQ: | MSN: |}

我要回帖

更多关于 周一早晨 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信