查看: 27203|回复: 22

“飞比”Zigbee论坛CC2530开发板学习教程(六)-- RemoTI例程详解

[复制链接]
outman 发表于 2010-9-29 14:59:58 | 显示全部楼层 |阅读模式
最近不少网友都在询问开发板项目的进度,希望能早点拿到手。首先向关注与支持“飞比”的网友表示感谢,我们全力以赴,争取能在国庆放假回来后能正式发行。同时,由于项目紧,时间有限,很多网友在论坛与群里的问题,我们也无法一一进行回复,敬请谅解。

  “飞比”CC2530开发板的一个很大的特色就是将Zigbee与RF4CE两种流行协议在同一开发板上进行了整合,分别采用的是TI公司的ZStack与RemoTI两种协议栈。并且在原有官方RemoTI开发板的基础上,增加了传统红外遥控器(IR)的兼容。

  本篇将基于FB2530EB开发板,对RemoTI的基本功能进行详解。

  [注:本文源自www.feibit.com--“飞比”Zigbee论坛,为尊重劳动者成果,如需转载请保留此行,并通知作者]

  作为开篇,我们首先来看一下RemoTI到底是什么,然后认识一下FB2530EB开发板,讲解如何将其设置成为一个RemoTI的开发套件。然后,从三个例程中仔细了解其功能及原理。

一、RemoTI是什么?
  RemoTI,顾名思义,即Remote + TI, 它是由TI公司按照国标标准的RF4CE协议规范开发的一个遥控协议栈。可实现一个2.4G的遥控器的功能,同时也可兼容传统的红外遥控器。其相对于传统遥控器来说,具体远距离,智能化,标准化等特点。

二、RemoTI开发板实现什么样的功能?
  作为入门,我们可以简单地将其功能理解为一个2.4G遥控器(RC)加一个遥控接收板(Target board)。我们先从TI提供套件的图片中,直观地看下其功能:

     remoTI.PNG
  如图,遥控器发送命令码,接收板将其接收下来,然后传给其控制的系统的主控MCU,例如,可通过USB线连接电脑,对电脑其进行控制,连接方式如下图所示:

     target connect.PNG

  为节约成本,让更多的人了解这门技术,我们在CC2530的开发套件上进行了硬件改进,使其整合了TI官方提供的SmartRF05EB与RemoTI两套开发板的功能,将遥控器的按键进行了删减,共可实现8个键的功能,并且由串口来替代USB与上位机的连接。同时,我们对软件也进行了更改,虽然压缩了成本,但并不影响实际的学习效果。

  整合以后的套件如下图所示:
  (图片待传)

  了解了RemoTI开发套件的基本功能以后,下面我们对其三个基本例程进行一一讲解,例程一为遥控功能测试例程(RC TEST),同时也实现了误包率(PER)的测试;例程二为串口升级接收板软件的例程;例程三演示了遥控器软件的空中升级(OAD)。

例程一、遥控功能测试例程(RC TEST)

[一]程序功能
  按下遥控器的按键,发送一个相应的CERC(即符合RF4CE标准的)命令码,空中传送到接收板以后,由接收板对其进行解码,将实际的控制指令通过串口发送至其控制的上位机,同时可以对传输性能参数之一的误包率(PER)进行测试。功能如下图所示:

     rc test.png

[二]操作说明
一、遥控器的操作
1、跳线设置
  注:RemoTI例程暂不支持LCD显示,所以这几个实验可以将LCD板取出。

2、编译与下载
  首先将CC Debugger与FB2530EB连接,如下图所示:

  (图片待传)

  如果CC Debugger的LED指示灯为红色,则按下CC Debugger上的Reset按键,LED指示为绿色表示连接成功,可以正常下载。

  打开IAR软件,选择.. \RemoTI-1.1\Projects\RemoTI\BasicRemote\CC2530RC目录下的rsa_cc2530.eww文件,在左侧workspace下拉框中选择“CC2530F256”项目,点击project == > build all进行编译,然后点击project == > debug进行下载。此时,如果无需仿真,则可点击”stop debugging”,拔掉debug线,按板子上的reset键,则遥控器的程序已经正常运行了。

二、遥控接收板的操作
1、跳线设置与硬件连接
  跳线设置如下图所示:

  (图片待传)

  硬件连接图:

  (图片待传)

2、编译与下载
  连接方式请参考上述遥控器连接,然后打开IAR软件选择 \RemoTI-1.1\Projects\RemoTI\RNP\CC2530EB目录下的rnp_cc2530.eww文件,在左侧workspace下拉框中选择“CC2530F256”项目,然后进行编译、下载,其操作与遥控器相同。此时拔掉debug线,连接好串口线,如上图所示。按下板子上的reset键,则接收板也进入工作状态了。

三、软件模拟遥控码收发
  此实验实现的功能,我们可以想象成电视的遥控器所完成的功能,遥控器发出控制指令,电视主控IC进行接收并执行相应的指令,如换台,音量加减等。但在这套系统中,增加了一个遥控接收板(Target Node)进行指令的中转。也就是说,先由接收板接收到指令,然后再转达给电视的主控IC。

  在TI的RemoTI开发套件中自带一个软件仿真器(Target Emulator,以下简称仿真器),其通过串口与遥控接收板进行连接,实现上述电视主控IC的功能。

  打开..\ RemoTI-1.1\bin目录下的TargetEmulator.exe软件,在”Target”菜单下选择”start target emulator”,如下图所示:

     RemoTI Target Emulator.PNG
  然后选择数据传输方式为串口(Serial Port):

     serial.PNG
  选择相应的端口号:(如不清楚端口号,可在windows设备管理器中查看)

     port select.PNG
  然后从弹出的支持设备列表中选择一种,作为基本的讲解,这里我们选择电视(Television)

     TV.PNG
  此时,将打开如下界面:
     RemoTI Target Emulator UI.PNG

  至此,软硬件均已准备完成。

  下一步,两个设备之间首先要进行“绑定”才可以互相通讯,还记得在教程(四)-Serial App的实验中,中国小伙与美国姑娘是怎么认识的吗?其概念类似,想象一下,2.4G的信号是可以穿墙的,如果没有这个“绑定”的过程,那隔壁家的遥控器是不是也能控制到你家的电视呢?相信没人希望这样吧!

  那在这个实验中,如何实现这个“绑定”的过程呢?

  首先,点击仿真器上的“pair”键,弹出对话框中选“确认”,此后的30秒内,按遥控器上的”S1”键进行确认,则仿真器上的“paired controllers”计数值由0变为1,则证明两个设备成功地进行了绑定。值得指出的是,一个遥控器可以和多个接收板进行绑定,同时一个接收板也可以接收多个遥控器的指令,甚至是遥控器之间也可以互相通讯。从这里我们可以看出RF4CE遥控器的优势了吧?设备间可以相互对话,物物相联!

  在实现绑定之后,我们就可以模拟遥控码的收发过程了。

  按遥控器Joystick的“上”、“下”和“左”键,看看发生什么了?左侧遥控器上对应的“上”“下”和数字“1”键是不是出现红色的高亮显示了?同时,右侧“received packets”值是不是也加了一个?这说明电脑已经接收到了遥控器发出的指令,并执行了相应的动作。

  需要特别说明一点:TI官方的RemoTI开发套件里的遥控器实现了全键盘的按键扫描功能,但我们的“飞比”FB2530EB开发板中,由于整合ZStack 与RemoTI两套功能,因功能复杂,遥控器只保留了8个按键,但对开发和学习来讲,相信只要能实现一个键的功能,其他的并不是难事!

  下面,列举一下在RemoTI例程中,每个按键的具体功能

按键位置按键名称功能描述
JoystickUp向上
JoystickDown向下
JoystickOK确认
JoystickNum 1数字1,“测试模式”下的“开始”键
JoystickPoll空中升级遥控器时的“开始”键
S1Pair遥控器的“绑定确认”键
S6Test Mode进入“测试模式”
S2保留此键为接MSP430板时的保留按键,也可通过跳线接到某IO口使用。暂时保留。



  实现了基本的遥控收发实验后,下面我们来看看RC TEST这个实验中的“测试模式”。在这个模式下,遥控器将持续地发“OK”键的命令码,发一定的数量之后,停止发送,按“OK”键,可将本次的测试结果发送至PC端。

  我们通过下面的图来了解下“测试模式”的工作流程:
     remoti rc test.png
  从图中可以看出,在遥控器正常工作模式下,首先按下“TEST MODE”键,LED慢速闪烁,按下数字1,开始发送数据,此时软件仿真器上不断接收到“OK”键,发送1000次之后,LED灭,此时按下OK键,软件仿真器收到如下报告:

     test report.png

  图中,PER值为0表示发出的1000个包全部收到,下面列表将这1000个包的接收时间做了列举,从中可以看出这1000个包全部在10ms以内收到的。如果接收时间长的包占多数,则表明传输质量相对较差。
 楼主| outman 发表于 2010-9-29 15:33:12 | 显示全部楼层
例程二、遥控接收板的串口软件升级(SB)

[一]程序功能
  此例程实现了遥控接收板的串口软件升级,此功能非常有用,可以灵活地对接收板的功能通过串口进行软件升级,以支持更多的设备。其原理是在接收板里先下载一个串口bootloader,这个bootloader与PC终端上的用于升级的软件(RemoTI_SBDemo.exe)通过UART进行通讯,将程序的二进制文件复制到CC2530的flash中,从而实现软件的升级。

其功能如下图所示:

     SB.png

[二]操作说明
  serial bootloader自带UART的驱动,可自行进行串口收发操作。所以它可以对程序的镜像文件进行操作,来实现升级。

1、编译与下载serial bootloader程序
  从IAR中打开..\RemoTI-1.1\Projects\RemoTI\SerialBoot\CC2530RC_Src文件夹下的SerialBoot.eww文件,在workspace中选择CC2530项目,此项目是用UART来通讯的,另外一个CC2530_SPI,则使用SPI方式来进行通讯。

  编译与下载方式与前述相同,下载完成后点stop debugging,取掉debug线,按reset,程序准备就绪。

2、编译应用程序的镜像文件
  上述步骤1,只是将一个bootloader下载到了目标板中,应用程序需要生成一个二进制的镜像文件,然后通过串口进行升级。

  从IAR中打开..\RemoTI-1.1\Projects\RemoTI\RNP\CC2530EB目录下的rnp_cc2530.eww文件,在左侧workspace下拉框中选择“CC2530F256_SB”项目,然后进行编译。编译完成后,进入.. \RemoTI-1.1\Projects\RemoTI\RNP\CC2530EB\CC2530F256_SB\Exe文件夹下,看看是不是生成了一个rnp_cc2530.bin的文件?这就是升级所用的二进制镜像文件。

3、通过Serial bootloader对遥控接收板的程序进行升级
  连接好串口线,进入到..\ RemoTI-1.1\bin目录下,打开RemoTI_SBDemo.exe程序,其界面如下:

    SB demo.PNG    
  点击“…”按钮,选择步骤2中生成的rnp_cc2530.bin文件,然后在“COM Port”中填写对应的串口端口号,点击“Load Image”,则出现如下进度条:

    SB loading.PNG

  表示程序正在升级中,完成后会有升级成功的提示。此时,读者可重复例程一的实验,或者更改部分代码对其进行测试。


例程三、遥控器软件的空中升级(OAD)

  这是非常有用的一个功能,比如在家庭增加一个新的机顶盒的时候,并不需要相应增加一个遥控器,而是对原有遥控器进行一次程序升级即可,这和现在的客厅茶几上一堆遥控器的状况相比,是不是进步不少呢?

[一]程序功能
  我们先一起来看一下其系统原理图:
     oad.png

  首先,遥控的程序升级数据,是以二进制文件的形式存放在电脑上,通过串口传输给遥控接收板,然后空中传输至遥控器进行程序升级。

[二]操作说明
  与接收板的SB模式升级程序有所不同,遥控器的升级,首先要将OAD程序下载至遥控器,然后下载bootloader,最后才通过接收板进行空中升级。

1、编译OAD程序,并下载至遥控器
  打开IAR软件,选择.. \RemoTI-1.1\Projects\RemoTI\BasicRemote\CC2530RC目录下的rsa_cc2530.eww文件,在左侧workspace下拉框中选择“CC2530F256_OAD”项目,点击project == > build all进行编译, 然后点击project == > debug进行下载。此时,如果无需仿真,则可点击“stop debugging”,完成下载,但不要关闭IAR。

2、编译bootloader并下载至遥控器
  打开.. \RemoTI-1.1\Projects\RemoTI\OadBoot\CC2530RC_Src目录下的OadBoot.eww文件,在左侧workspace下拉框中选择“CC2530F256”项目,点击project == > build all进行编译,然后点击project == > debug进行下载。此时,如果无需仿真,则可点击“stop debugging”,拔掉debug线,按板子上的reset键,则遥控器即做好了OAD的准备,由于步骤1中下载了应用程序,所以此时的遥控器已经是一个全功能的遥控器了。

3、通过接收板进行空中升级
  为测试是否成功升级,读者可对遥控程序进行修改,比如对换两个按键的位置等。然后重复步骤1,在..\CC2530RC\CC2530F256_OAD\Exe文件夹下生成了一个名为rsa_cc2530.bin的二进制文件,用于程序升级。

  用于OAD升级的windows软件RemoTI_OadDemo.exe,位于..\RemoTI-1.1\bin目录下,其界面如下图所示:

     oad demo.PNG

  因为此软件与TargetEmulator.exe都需要操作串口,同时打开会引起冲突,暂时不打开此软件,而按照如下步骤进行操作:

1)、按照例程1的描述,打开TargetEmulator,并对遥控器进行绑定
2)、关闭TargetEmulator
3)、运行RemoTI_OadDemo.exe,此时Device List窗口为空。
4)、在COM Port里选择与接收板连接的串口的端口号,点击connect,此时在Device List窗口中会显示出步骤1中绑定好的设备,其中包括准备升级的遥控器
5)、在Device List窗口中选择我们要升级的遥控器
6)、点击“…”按钮,选择前面生成的rsa_cc2530.bin文件的位置
7)、点击“Download Image”,此时下文进度条没有任何反应
8)、按遥控器上的“POLL”键,具体位置见上文按键表。此时程序正式开始下载,完成后将有成功完成的提示。
9)、关闭RemoTI_OadDemo,重新打开TargetEmulator,测试遥控是否按更改后的功能运行。
wuxiujiang 发表于 2010-10-8 17:29:55 | 显示全部楼层
果然是高科技啊!!   兴奋……
xingqing 发表于 2010-10-8 22:14:00 | 显示全部楼层
先顶后看 呵呵 我也在研究这个
xingqing 发表于 2010-10-8 23:04:52 | 显示全部楼层
看着这些东西  我觉得有种找到希望的感觉了 嘿嘿  顶你曼哥。。。。
xiaoyige 发表于 2011-1-27 17:16:25 | 显示全部楼层
呵不错我刚调试完TI的程序
沧浪之水 发表于 2011-2-21 15:30:32 | 显示全部楼层
1、请问一个遥控接收板最多可配多少个遥控器啊?/
2、遥控器不按下时,功耗是多少?是不是一直在休眠模式啊?
3、07协议中终端离开网络,貌似会一直搜索网络,不会进入休眠,
   RF4CE的协议中,如果遥控器离开的网络,遥控器会咋样动作呢?
yuqihong 发表于 2011-4-11 22:46:22 | 显示全部楼层
我也去试试!哈哈哈
yuqihong 发表于 2011-4-13 15:47:09 | 显示全部楼层
回复 2# outman


    果然是高科技啊
让人兴奋!
李晓千 发表于 2011-5-11 10:30:36 | 显示全部楼层
大爱奥特曼
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表