尊敬的用户,您好!欢迎登陆艾逊!
用户名 密码

技术前沿

红外通信协议技术

红外通信协议 - 红外接收器(例一)

 

红外通信协议红外通信协议

红外接收电路选用Vishay公司生产的专用红外接收模块TSOP1738。该接收模块是一个三端元件,使用单电源+5V电源,具有功耗低、抗干扰能力强、输入灵敏度高、对其它波长(950nm以外)的红外光不敏感的特点,其内部结构框图如图3所示。

 

红外通信协议 - 红外通信的软件设计

通信方式

考虑到红外光反射的原因,在全双工方式下发送的信号也可能会被本身接收,因此红外通信需采用异步半双工方式,即通信的某一方发送和接收是交替进行的。
 

通信协议

进行红外通信之前,通信双方首先要根据系统的功能要求制订某种特定的通信协议,然后才能编写相应的通信程序。

红外通信协议 - 最新进展

爱可信发布新红外协议支持4Mbps红外通讯

无线数据业务解决方案提供商爱可信公司(ACCESS,东京股票交易所4813)发布IrDA红外通信协议栈的最新版本IrFrontv2.1。

IrFrontv2.1将使普通红外通信速度提升4至10倍,能够处理大量的手机数据。2005年10月推出支持4Mbps的IrFront版本,而支持高速红外通信IrSimple*国际协议的版本也于2006年1月面市。

爱可信总裁兼首席执行官ToruArakawa说:“新版IrFront能够提供高速、大数量的红外通信能力。诸如IrFront这类高速红外解决方案,为当今网络世界的设备互联和信息互通了提供新的方式,必能为未来生活带来创新。”

IrFront是一个针对手机及其他资源有限的嵌入设备的精简的IrDA通信协议栈。IrFront由爱可信公司开发,完全符合IrDA*红外通信协议规范。除了支持标准的IrCOMM、IrTran-P,IrFront还提供丰富的可选性能,包括用于红外金融服务的IrFM功能,及各种配置的OBEX以及其它选项,如可以用于交换地址薄、Email和其它数据的IrMC。迄今为止,已有超过6家手机制造商在他们的手机产品中采用了IrFront;在NTTDoCoMo,IrFront被大规模用于i-mode手机。IrFront还大量应用于各种打印机,如富士胶片公司生产的手提打印机。IrFront还可以通过无网络连接设备的红外功能,使之接入互联网。

IrFrontv2.1主要基于IrSimple开发,IrSimple是用红外技术实现高速通信、并通过简单和标准化的模块降低客户开发成本的国际协议。IrSimple可以实现静态图像和视频影像从手机到打印机或电视的瞬时传送。

IrFrontv2.1在日本罗姆(ROHM)有限公司的红外发射/接受控制器(BU92002GU和BU92004GU)上经过了测试。IrFrontv2.1能够稳定运行在这些标准芯片上,并提供了可降低CPU功耗、支持大数据量交换的接口。

红外通信协议 - 在嵌入式系统中的实现

采用Sitronix公司的ST2204电路板为硬件平台,处理芯片内核为65C02。ST2204电路板使用了集成的8位处理器,寻址能力达到了44M字节,并提供了低电压检测功能。由于2204集成了上述这些功能,非常适合省电、支持长电池寿命的手持移动设备嵌入式设计实现方案。在固件设计、软件设计方面采用了汇编语言。65C02上的汇编采用存储器映象方式,并广泛使用了零页寻址,因此使用起来十分方便、高效。整个设计实现可分为硬件设计和软件设计两部分。硬件设计包括电路设计和固件程序(Firmware)的编写;软件设计包括CRC数据编码校验、数据收发及主站(Primary)、辅站(Slave)状态要流程实现等。

在硬件设计方面根据对设备的需求和硬件板芯片性能,可以设计出相应的电路在仿真板上进行实验。固件程序和编写可采用分块的方法,例如初始化(Initilize)模块、中断处理(Interrupt)模块、时钟(Timer)事件处理模块等。初始化模块可根据硬件板的指南说明(Specification)提供的各个寄存器值设备初始化参数;中断处理模块可按照中断向量表提供的入口地址编写,其基本要求短小精悍,运行的时钟周期与微处理器频率和设备需求的波特率紧密相关。时钟事情处理可根据硬件板提供的基本时钟设备不同的时钟精度,以满足不同的需求。在红外传输实际设计中定时器主要用于三个方向:第一是sniff探查过程中主站发广播帧后辅站超时未响应的处理;第二是超时重发控制;最后一个是数据传输过程中轮转时间片的控制。其中第三个方面要求的精度比较高,红外协议制定的标准是在25ms~85ms之间。因此有必要把超时处理放在中断处理。在程序编写时使用信号量和程序计数器进行时间控制。其基本思路得设备一个程序计数器进行累加计时,当各自事情时间到达时分别设置三个信号量来标志事件处理,当事件处理完毕后重置各自信号量,转入重新计时。

在软件设计方面,要对发送的数据进行帧包装(FrameWrapper),添加CRC16校验,用汇编实现CRC算法比C稍微复杂些。一个主要的技巧是将要进行校验的数据地址和CRC数据表的索引地址置入一个零页的内存地址中,采用通用寄存器对其进行间接寻址。这样就实现了C语言中的指针效果,可以比较方便地查询CRC表。在数据收发应用中,分为主站(Primarystation)和辅站(slavestation)两种角度。主站角度负责发起,建立连接,进行时间片轮转调度等。辅站主要负责应答,响应命令。在一定条件下主站辅站角度可以互换,主辅站均可收发数据。

 

红外通信协议红外通信协议

收发数据的中断函数最重要也是底层的核心所在。在接收方首先公进行硬件初始化,设置UART接收初始化状态并进行中断允许标志设置(具体设置可以参考所选择的电路板说明)等。当红外数据到达后即会触发一个UART中断,系统处理完当前事件后便会根据中断向量表提供的入口地址调用接收中断处理接收数据。在接收过程中,UART会搜索匹配开始位和结束标志。接收完毕后,返回系统调用程序。在实际应用中,当接收完数据后,即可按装收帧控制域判断帧类型,并结合接收站所处的相应状态机进行流程处理。下面是红外接收数据的中断程序源码:

 

/*******************************************

*UARTReceiverInterruptServiceRoutine

********************************************/

ISR_URX:

pha

phx;压栈,保存通用寄存器值

cld;清空十进制标志位

ldx#00001100B;允许接收,并设置可以接收下一字节

stx< P>

ldxmBagLen

cpx#IrDAb_BAG_LEN;一个包的长度

bcsferr_over;溢出否

lda< P>

stamReadBuff,x;写数据

lda< P>

stamIrdaByteFlag;保存状态标志位

incmBagLen;计数器

bra?exit

?err_over;

smb0< P>

?exit;

plx;出栈,恢复通用寄存器值

pla

rti

该中断处理程序在硬件收到一个字节时触发。它先将通用寄存器值压栈保存,接下来进行状态寄存器的控制,并检查一些状态标志,然后进行数据的接收;将数据保存在一个缓存里,并进行溢出等状态的检测和控制。最后恢复通用寄存器的值,返回中断调节函数。按照类似的原理可以编写出红外发送方程序。编写数据收发中断程序有一点要注意,程序代码量和处理器主频以及选择的红外波特速率是密切相关的。若不注意就很容易造成“丢中断”的现象,这是应该避免的。还有一点要说明:UART是工作在半双工模式下,在一些实时系统和时间精度要求较高的应用中是不能同时进行收发数据的。但由于其收发时间片较短(最长为500ms),在一些普通应用中可以模拟成同时收发。

在程序编写完后对其进行编译/连接定位,用调试器以16进制的形式加载在主机开发系统中即可进行模拟调试。但是模拟调式不能百分之百地模拟硬件的全部特性。它主要用于调试软件逻辑、状态机流程。对于调试UART数据收发等实时性较强的硬件特征还需到目标系统上进行验证。

发布时间:2012-08-28 13:45:39
 
CopyRight © 2005-2011 MRO工业品-艾逊实业(上海). All Rights Reserved.