红外通信模块的设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4 上位机程序设计与实现
4. 1 上位机界面设计 为了更好地控制下位机通信 ,我们设计了上位
机控制台程序 ,它是基于 L inux系统的 KDE开源图 形桌面环境的 ,使用 Q t图形库 ,在 Q t Designer开发 环境下用 C + +语言来编写完成 。其功能类似于 W indow系统下的超级终端 ,或者类似于 linux系统 下的串口控制程序 m inicom ,只不过功能上比它们
tle2end) buffer 3 / 由 bUART ( x, Nb)宏定义可以得到串口 x的基
地址 ,再加上 oURXHL 这个小端系统的接收缓冲区 地址 ,就得到了对应串口的存放其所接收到的数据 的地址 ,程序只需要从该位置读出数据就完成了读 的功能 [ 4 ] 。
主控函数模块也就是用户利用系统所提供的上 述串口编程接口进行红外通信应用程序设计的地 方 。整个红外通信应用程序都在这里得到实现 。该 main主函数通过调用 ARM TargetInit ( )来先对开发 板进行初始化工作 ,然后进入主循环 ,从而开始红外 通信的主选择菜单 。程序将打印出菜单的提示信 息 ,选择 1即表示进入红外接收模式 ,选择 2即进入 红外发送模式 ,选择 3即退出程序 。
当程序从 main函数开始运行之后 ,将创建一个 SerialComm Imp l类 ,于是便会调用该类的构造函数 实现对整个界面的初始化工作 。
SerialComm Imp l: : SerialComm Imp l ( QW idget 3 parent) : SerialComm ( parent) , outputTimer ( this) , keyRepeatTimer( this)
#define UART1 _CTL _BASE UART_CTL _BASE
+ 0x4000
#define UART2 _CTL _BASE UART_CTL _BASE
+ 0x8000 #define bUART ( x, Nb) _ _REG (UART_CTL _
BASE + ( x) 3 0x4000 + (Nb) ) #define oURXHL 0x24 / 3 R , UART receive ( lit2
0 引 言
从家用电器﹑手持通讯设备﹑仪器仪表﹑汽车 到航天航空﹑军事装备等各个领域 ,嵌入式系统已 经广泛地渗透到人们的工作 、生活中 。在嵌入式系 统中往往使用红外 、蓝牙等无线通信技术 。本文基 于北京博创公司的 S3C2410 - S ARM9实验箱的红 外模块 TFDU4100实现红外通信下位机程序 ,并调 用 Q t图形库 、使用 C + +语言在 linux系统下实现 可视化的上位机程序 。
二进制数“0”。而对于接收端来说 ,没有接收到红 外光 ,则认为是“1”;接收到则认为是“0”。
简而言之 ,红外通信的实质就是对二进制数字 信号进行调制与解调 ,以便利用红外信道进行传输 ; 红外通信接口就是针对红外信道的调制解调器 。
2 红外通信协议体系结构
IrDA 协议栈是红外通信的核心 ,它规定了进行 红外通信双方从硬件到软件的统一通信规范 ,使各 个提供红外通信相应产品的厂商遵守统一的规范来 生产产品 ,从而促进红外通信的发展 。
第 19卷 第 10期 2009年 10月
长 春 大 学 学 报 JOURNAL OF CHANGCHUN UN IVERSITY
Vol. 19 No. 10 Oct. 2009
红外通信模块的设计与实现
许继彦 1 , 杜钦生 2 ,
(11长春大学 旅游学院 , 吉林 长春 130122; 21长春大学 计算机科学技术学院 , 吉林 长春 130022)
于 HP - SIR开发出来的一种异步 、半双工的红外通 信方式 。它以系统的异步通信收发器 UART为依 托 ,通过对串行数据脉冲的波形压缩和对所接收的 光信号电脉冲的波形扩展这一编码解码过程 ( 3 /16 EnDec) ,实现红外数据传输 。所以在本红外程序设 计中 ,完成了红外通信模式的寄存器的设置之后 ,还 需要实现对串口的各种操作函数 ,也即串口的驱动 , 包括对串口的初始化 、读和写以及串口缓冲寄存器 的清空等操作 。
serial_ read 为读串口的函数 ,其返回设备编号 为 ndev的串口的接收缓冲寄存器地址 。串口的接 收功能主要由该操作函数所完成 。
/ /串口地址定义
#define UART_CTL _BASE 0x50000000
#define UART0_CTL _BASE UART_CTL _BASE
1 红外通信原理
红外通信利用 950nm 近红外波段的红外线作 为通信载体来进行通信 [ 1 ] 。
常用的有通过脉冲宽度来实现信号调制的脉宽 调制 ( PWM )和通过脉冲串之间的时间间隔来实现 信号调制的脉时调制 ( PPM ) 两种方法 。发送端将 二进制数调制成某一频率的脉冲序列 ,并利用该脉 冲序列驱动红外线发射管以光脉冲的形式向外发射 红外光 ;而接收端将接收到的光脉冲信号转换成电 信号 ,再进行放大 、滤波 、解调处理后还原成二进制 电信号 。原理图如图 1所示 。
connect ( closePb, SIGNAL ( clicked ( ) ) , this,
SLOT ( disconnectTTY ( ) ) ) ;
...
} 在 SerialComm Imp l构造函数中处理的一件非常 关键的事就是把窗口的 GU I部件和相应的槽函数 建立连接关系 ,因此在代码中用了如上所示的 con2 nect方法 ,例如 connect ( connectPb, SIGNAL ( clicked ( ) ) , this, SLOT ( connectTTY ( ) ) ) ; 语句表示 con2 nectPb按钮如果被用户按下 ,那么其带的 clicked ( ) 信号将会 发出 给应 用程 序 , 应 用 程 序 中 的 Serial2 Comm Imp l类的当前对象 this (由于 SerialComm Imp l 继承来自于 SerialComm ,而 SerialComm 从 QW idget 继承而来 ,故 SerialComm Imp l也是 QW idget的子类 ) 就会对该信号用 connectTTY ( )方法来进行响应 。
下位机红外通信基础程序由五个功能模块所组 成 : ARM 开发板初始化模块 、红外接收模式模块 、红 外发送模式模块 、串口驱动模块 、主控函数模块 。
在主程序中调用 ARM TargetInit ( )函数来实现 整个开发板的 CPU、串口 、系统时钟和总线时钟等 相关开发板硬件初始化 ,而在该函数中调用了 s3c2410_ cpu _ init ( ) 来进行相关 CPU 的初始化工 作 ,然后进行串口 0和串口 2的波特率设置 。
在编写红外收发模式功能模块的过程中 ,根据实 验箱的使用说明 ,在配置红外模式或进行红外的发 送、接收模式切换时都要先关闭发送和接收功能 ,防 止因为配置状态的改变影响数据的正确收发 。另外 在配置状态改变时要给予充分的状态改变时间 ,因此 就有了如下形式的发送代码以及相类似的接收代码 。
void infraredT ( void)
图 2 红外协议栈
红外数据通信协议簇由必要协议和可选协议两 部分组成 ,必要协议包括物理层 、红外链路建立协 议 、红外链路管理协议和信息获取服务 ,依据各种特 殊应用需求可选配流传输协议 、对象交换协议 、模拟 串口层和局域网访问协议 [ 2 ] 。
整个红外协议栈是非常庞大复杂的 ,在嵌入式系 统中由于微处理器速度和存储器容量等限制不可能
第 10期 许继彦 ,等 :红外通信模块的设计与实现
51
都要简单一些 ,其运行界面如图 3所示 。
图 3 上位机程序控制界面
该控制台程序窗口的左面有三个显示部件 :上 面的是 QTextB rower部件 ,用于显示从串口收到的 数据 ;中间的是 QL istBox部件 ,用来实现显示控制 台的输入数据 ;最下面是 QL ineEdit部件 ,用于进行 用户输入 。窗口的右面提供了串口设备 、波特率 、数 据位 、奇偶位 、停止位 、握手信号和时间延迟等相关 串口通信的一系列参数设置 。以上所有部件的设计 都可以很容易地通过 linux系统里带的 Q t Designer 软件来进行设计 。 4. 2 上位机代码实现
ULCON2 =ULCON2 | (1 < < 6) ; / /红外模式
hudelay (100) ; / 3 从串口 2发送 infrared数据 3 / UCON2 =UCON2 | (0x01 < < 2) ; / /允许发送
} infraredR ( )函数用来实现红外接收方式寄存器 的设置 。 在串口驱动模块的编码中 ,由于设计的红外通 信是基于 IrDA 1. 0,即 SIR 协议标准的 ,而 SIR 是基
由于该红外控制台程序相对于红外通信程序来 讲也是一个独立的程序 ,其依然是从主函数 main开 始运行 ,只不过该主函数是由 Q t Designer自动生成 的 。在整个控制台程序中 , Q t Designer为设计的界 面自动生成一个类 SerialComm ,然后公有继承该类 , 从而生成 SerialComm Imp l类 ,在 SerialComm Imp l类 中实现了相关部件的一系列槽函数 。
摘 要 :介绍红外通信的基本原理 ,基于北京博创公司的 S3C2410 - S ARM9实验箱的红外模块 TFDU4100实现红 外通信下位机程序 ,并调用 Q t图形库 、使用 C + +语言在 linux系统下实现可视化的上位机程序 。 关键词 :红外通信 ; Q t; C + +
中图分类号 : TN91911 文献标志码 : A 文章编号 : 1009 - 3907 (2009) 10 - 0049 - 03
/ /调用 SerialComm 父 类 的 构 造 函 数 , 初 始 化 QTimer类型的对象 outputTimer和 / / keyRepeatTimer
{...
/ /建立 GU I部件的信号和槽函数之间的联系
connect( connectPb, SIGNAL ( clicked ( ) ) , this, SLOT ( connectTTY ( ) ) ) ;
3 下位机程序设计与实现
3. 1 硬件资源描述 选择用两个 S3C24102S ARM9实验箱的红外模
块 TFDU4100,在红外通信的有效距离范围内实现 红外通信 。由于 S3C24102S的 UART支持红外通 信 [ 4 ] ,只要将 ULCONn线控制寄存器的红外模式位 设置为 1,并插好实验箱上的相应红外跳线 ,其它相 关的串口寄存器的设置同普通串口实验一样 ,因此 实现起来相对容易 ,故选择了这种基于串口的符合 SIR标准的红外通信实现方式 [ 3 ] 。 3. 2 功能模块设计与实现
பைடு நூலகம்
收稿日期 : 2009209201 作者简介 :许继彦 (19792) ,女 ,吉林榆树人 ,助教 ,硕士研究生 ,主要从事计算机教学与网络安全技术的研究 。
50
长 春 大 学 学 报 第 19卷
也没有必要实现整个红外协议栈 ,只需要根据实际的 需求有选择地实现自己需要的协议和功能即可 。
{ UCON2 =UCON2&0x7fc; / /禁止接收 UCON2 =UCON2&0x7f3; / /禁止发送 / 3 bit [ 6 ] Determ ine whether or not to use the
Infra - Red mode.
0 =Normal mode operation 1 = Infra - Red Tx / Rx mode3 /
红外协议栈与 TCP / IP 协议栈一样 ,管理整个 通信过程 。它被划分成如图 2 所示的几层 ,各层除 有自己的一套管理职责外 ,还与上下层之间联系紧 密 ,可以互相调用 ,将各协议层叠起来就成了协议 栈 。 IrDA 是一套层叠的专门针对点对点红外通信 的协议 。
图 1 红外通信原理
对于发送端来说 ,当无红外脉冲发射时 ,发送的 是二进制数据“1 ”; 而有红外脉冲发射时 发 送的 是
4. 1 上位机界面设计 为了更好地控制下位机通信 ,我们设计了上位
机控制台程序 ,它是基于 L inux系统的 KDE开源图 形桌面环境的 ,使用 Q t图形库 ,在 Q t Designer开发 环境下用 C + +语言来编写完成 。其功能类似于 W indow系统下的超级终端 ,或者类似于 linux系统 下的串口控制程序 m inicom ,只不过功能上比它们
tle2end) buffer 3 / 由 bUART ( x, Nb)宏定义可以得到串口 x的基
地址 ,再加上 oURXHL 这个小端系统的接收缓冲区 地址 ,就得到了对应串口的存放其所接收到的数据 的地址 ,程序只需要从该位置读出数据就完成了读 的功能 [ 4 ] 。
主控函数模块也就是用户利用系统所提供的上 述串口编程接口进行红外通信应用程序设计的地 方 。整个红外通信应用程序都在这里得到实现 。该 main主函数通过调用 ARM TargetInit ( )来先对开发 板进行初始化工作 ,然后进入主循环 ,从而开始红外 通信的主选择菜单 。程序将打印出菜单的提示信 息 ,选择 1即表示进入红外接收模式 ,选择 2即进入 红外发送模式 ,选择 3即退出程序 。
当程序从 main函数开始运行之后 ,将创建一个 SerialComm Imp l类 ,于是便会调用该类的构造函数 实现对整个界面的初始化工作 。
SerialComm Imp l: : SerialComm Imp l ( QW idget 3 parent) : SerialComm ( parent) , outputTimer ( this) , keyRepeatTimer( this)
#define UART1 _CTL _BASE UART_CTL _BASE
+ 0x4000
#define UART2 _CTL _BASE UART_CTL _BASE
+ 0x8000 #define bUART ( x, Nb) _ _REG (UART_CTL _
BASE + ( x) 3 0x4000 + (Nb) ) #define oURXHL 0x24 / 3 R , UART receive ( lit2
0 引 言
从家用电器﹑手持通讯设备﹑仪器仪表﹑汽车 到航天航空﹑军事装备等各个领域 ,嵌入式系统已 经广泛地渗透到人们的工作 、生活中 。在嵌入式系 统中往往使用红外 、蓝牙等无线通信技术 。本文基 于北京博创公司的 S3C2410 - S ARM9实验箱的红 外模块 TFDU4100实现红外通信下位机程序 ,并调 用 Q t图形库 、使用 C + +语言在 linux系统下实现 可视化的上位机程序 。
二进制数“0”。而对于接收端来说 ,没有接收到红 外光 ,则认为是“1”;接收到则认为是“0”。
简而言之 ,红外通信的实质就是对二进制数字 信号进行调制与解调 ,以便利用红外信道进行传输 ; 红外通信接口就是针对红外信道的调制解调器 。
2 红外通信协议体系结构
IrDA 协议栈是红外通信的核心 ,它规定了进行 红外通信双方从硬件到软件的统一通信规范 ,使各 个提供红外通信相应产品的厂商遵守统一的规范来 生产产品 ,从而促进红外通信的发展 。
第 19卷 第 10期 2009年 10月
长 春 大 学 学 报 JOURNAL OF CHANGCHUN UN IVERSITY
Vol. 19 No. 10 Oct. 2009
红外通信模块的设计与实现
许继彦 1 , 杜钦生 2 ,
(11长春大学 旅游学院 , 吉林 长春 130122; 21长春大学 计算机科学技术学院 , 吉林 长春 130022)
于 HP - SIR开发出来的一种异步 、半双工的红外通 信方式 。它以系统的异步通信收发器 UART为依 托 ,通过对串行数据脉冲的波形压缩和对所接收的 光信号电脉冲的波形扩展这一编码解码过程 ( 3 /16 EnDec) ,实现红外数据传输 。所以在本红外程序设 计中 ,完成了红外通信模式的寄存器的设置之后 ,还 需要实现对串口的各种操作函数 ,也即串口的驱动 , 包括对串口的初始化 、读和写以及串口缓冲寄存器 的清空等操作 。
serial_ read 为读串口的函数 ,其返回设备编号 为 ndev的串口的接收缓冲寄存器地址 。串口的接 收功能主要由该操作函数所完成 。
/ /串口地址定义
#define UART_CTL _BASE 0x50000000
#define UART0_CTL _BASE UART_CTL _BASE
1 红外通信原理
红外通信利用 950nm 近红外波段的红外线作 为通信载体来进行通信 [ 1 ] 。
常用的有通过脉冲宽度来实现信号调制的脉宽 调制 ( PWM )和通过脉冲串之间的时间间隔来实现 信号调制的脉时调制 ( PPM ) 两种方法 。发送端将 二进制数调制成某一频率的脉冲序列 ,并利用该脉 冲序列驱动红外线发射管以光脉冲的形式向外发射 红外光 ;而接收端将接收到的光脉冲信号转换成电 信号 ,再进行放大 、滤波 、解调处理后还原成二进制 电信号 。原理图如图 1所示 。
connect ( closePb, SIGNAL ( clicked ( ) ) , this,
SLOT ( disconnectTTY ( ) ) ) ;
...
} 在 SerialComm Imp l构造函数中处理的一件非常 关键的事就是把窗口的 GU I部件和相应的槽函数 建立连接关系 ,因此在代码中用了如上所示的 con2 nect方法 ,例如 connect ( connectPb, SIGNAL ( clicked ( ) ) , this, SLOT ( connectTTY ( ) ) ) ; 语句表示 con2 nectPb按钮如果被用户按下 ,那么其带的 clicked ( ) 信号将会 发出 给应 用程 序 , 应 用 程 序 中 的 Serial2 Comm Imp l类的当前对象 this (由于 SerialComm Imp l 继承来自于 SerialComm ,而 SerialComm 从 QW idget 继承而来 ,故 SerialComm Imp l也是 QW idget的子类 ) 就会对该信号用 connectTTY ( )方法来进行响应 。
下位机红外通信基础程序由五个功能模块所组 成 : ARM 开发板初始化模块 、红外接收模式模块 、红 外发送模式模块 、串口驱动模块 、主控函数模块 。
在主程序中调用 ARM TargetInit ( )函数来实现 整个开发板的 CPU、串口 、系统时钟和总线时钟等 相关开发板硬件初始化 ,而在该函数中调用了 s3c2410_ cpu _ init ( ) 来进行相关 CPU 的初始化工 作 ,然后进行串口 0和串口 2的波特率设置 。
在编写红外收发模式功能模块的过程中 ,根据实 验箱的使用说明 ,在配置红外模式或进行红外的发 送、接收模式切换时都要先关闭发送和接收功能 ,防 止因为配置状态的改变影响数据的正确收发 。另外 在配置状态改变时要给予充分的状态改变时间 ,因此 就有了如下形式的发送代码以及相类似的接收代码 。
void infraredT ( void)
图 2 红外协议栈
红外数据通信协议簇由必要协议和可选协议两 部分组成 ,必要协议包括物理层 、红外链路建立协 议 、红外链路管理协议和信息获取服务 ,依据各种特 殊应用需求可选配流传输协议 、对象交换协议 、模拟 串口层和局域网访问协议 [ 2 ] 。
整个红外协议栈是非常庞大复杂的 ,在嵌入式系 统中由于微处理器速度和存储器容量等限制不可能
第 10期 许继彦 ,等 :红外通信模块的设计与实现
51
都要简单一些 ,其运行界面如图 3所示 。
图 3 上位机程序控制界面
该控制台程序窗口的左面有三个显示部件 :上 面的是 QTextB rower部件 ,用于显示从串口收到的 数据 ;中间的是 QL istBox部件 ,用来实现显示控制 台的输入数据 ;最下面是 QL ineEdit部件 ,用于进行 用户输入 。窗口的右面提供了串口设备 、波特率 、数 据位 、奇偶位 、停止位 、握手信号和时间延迟等相关 串口通信的一系列参数设置 。以上所有部件的设计 都可以很容易地通过 linux系统里带的 Q t Designer 软件来进行设计 。 4. 2 上位机代码实现
ULCON2 =ULCON2 | (1 < < 6) ; / /红外模式
hudelay (100) ; / 3 从串口 2发送 infrared数据 3 / UCON2 =UCON2 | (0x01 < < 2) ; / /允许发送
} infraredR ( )函数用来实现红外接收方式寄存器 的设置 。 在串口驱动模块的编码中 ,由于设计的红外通 信是基于 IrDA 1. 0,即 SIR 协议标准的 ,而 SIR 是基
由于该红外控制台程序相对于红外通信程序来 讲也是一个独立的程序 ,其依然是从主函数 main开 始运行 ,只不过该主函数是由 Q t Designer自动生成 的 。在整个控制台程序中 , Q t Designer为设计的界 面自动生成一个类 SerialComm ,然后公有继承该类 , 从而生成 SerialComm Imp l类 ,在 SerialComm Imp l类 中实现了相关部件的一系列槽函数 。
摘 要 :介绍红外通信的基本原理 ,基于北京博创公司的 S3C2410 - S ARM9实验箱的红外模块 TFDU4100实现红 外通信下位机程序 ,并调用 Q t图形库 、使用 C + +语言在 linux系统下实现可视化的上位机程序 。 关键词 :红外通信 ; Q t; C + +
中图分类号 : TN91911 文献标志码 : A 文章编号 : 1009 - 3907 (2009) 10 - 0049 - 03
/ /调用 SerialComm 父 类 的 构 造 函 数 , 初 始 化 QTimer类型的对象 outputTimer和 / / keyRepeatTimer
{...
/ /建立 GU I部件的信号和槽函数之间的联系
connect( connectPb, SIGNAL ( clicked ( ) ) , this, SLOT ( connectTTY ( ) ) ) ;
3 下位机程序设计与实现
3. 1 硬件资源描述 选择用两个 S3C24102S ARM9实验箱的红外模
块 TFDU4100,在红外通信的有效距离范围内实现 红外通信 。由于 S3C24102S的 UART支持红外通 信 [ 4 ] ,只要将 ULCONn线控制寄存器的红外模式位 设置为 1,并插好实验箱上的相应红外跳线 ,其它相 关的串口寄存器的设置同普通串口实验一样 ,因此 实现起来相对容易 ,故选择了这种基于串口的符合 SIR标准的红外通信实现方式 [ 3 ] 。 3. 2 功能模块设计与实现
பைடு நூலகம்
收稿日期 : 2009209201 作者简介 :许继彦 (19792) ,女 ,吉林榆树人 ,助教 ,硕士研究生 ,主要从事计算机教学与网络安全技术的研究 。
50
长 春 大 学 学 报 第 19卷
也没有必要实现整个红外协议栈 ,只需要根据实际的 需求有选择地实现自己需要的协议和功能即可 。
{ UCON2 =UCON2&0x7fc; / /禁止接收 UCON2 =UCON2&0x7f3; / /禁止发送 / 3 bit [ 6 ] Determ ine whether or not to use the
Infra - Red mode.
0 =Normal mode operation 1 = Infra - Red Tx / Rx mode3 /
红外协议栈与 TCP / IP 协议栈一样 ,管理整个 通信过程 。它被划分成如图 2 所示的几层 ,各层除 有自己的一套管理职责外 ,还与上下层之间联系紧 密 ,可以互相调用 ,将各协议层叠起来就成了协议 栈 。 IrDA 是一套层叠的专门针对点对点红外通信 的协议 。
图 1 红外通信原理
对于发送端来说 ,当无红外脉冲发射时 ,发送的 是二进制数据“1 ”; 而有红外脉冲发射时 发 送的 是