This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2650移植的几个问题 CC2650 7X7移植到CC2630 5X5封装

Other Parts Discussed in Thread: CC2630, CC2650, CC2500, CC2640R2F

我使用TI-RTOS Examples /CC2650DK_7ID/RF Examples下的RF Packet TX和RF Packet RX例程修改移植后实现了单板的接收和发送数据,修改成功使用正常。我还需要将CC2650 7X7的芯片修改到CC2630的5X5模块上,我遇到如下几个问题无法确定:

1.在运行到下面这条命令时就一直过不去了

//发送RF的操作到命令队列
//RF_cmdFs:发射频率设置
RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);

想问下7*7改5*5的封装有什么要特别注意的吗,我已经用5XD例程下的CC2650DK_5XD、CCFG、Board替代了原先的7ID文件了。在此期间程序中的小灯、按键控制都能正常工作,就是射频部分无法正常启动。

还是CC2630不支持Proprietary Radio,所以导致根本无法设置相关的无线参数。

2.我需要在改例程上再做进一步的修改将Proprietary Radio协议修改为IEEE802.15.4,但是我并不需要ZIGEE的标准协议来运行,我只需要按标准的IEEE802.15.4来发送数据:(preamble(4BYTE)-  SFD(1BYTE) length(1BYTE) -packet Data(125 BYTE MAX)- FCS(2BYTE)),

在packet data中我不需要发送网络ID,源地址,目标地址这些信息。我只需要发送一组自定义数据即可。

在RF.h文件中有看到如下备注

* ## Unsupported Functionality #
* The RF driver does not support:
* - IRQ_FG and IRQ_BG required by the IEEE 802.15.4 mode

所以请告知我能否在TI-RTOS Examples 的例程下修改smartrf_settings.c的程序对应的IEEE的寄存器地址通过RF命令来操作IEEE802.15.4标准下的数据收发。

3.如果不能这样改那我可能只能基于栈协议的DEMO来修改程序,栈协议的程序浏览后发现基于无线收发的最底层的调用是到下面这个函数

status = AF_DataRequest( destAddr, epDesc, clusterID, msgLen, msgBuf,
&zcl_TransID, options, AF_DEFAULT_RADIUS );

没看错的话这个函数携带了ZIGBEE的相关协议信息(地址、PANID等),而我需要的最底层的IEEE802.15.4发送函数的API是哪个,在哪里调用。看了一遍没找到。

4.CC2630的PIN3是RX_TX Optional bias pin for the RF LNA ,在CC2650 7*7的芯片上并没有这个功能脚,那我从CC2650的7*7移植到CC2630 的5*5封装上是否在软件上要单独再处理这个脚?

一口气问了好几个问题,有劳解惑。非常感谢!!

D:WX

 

  • 手册写的都支持的。

    看看是不是移植时候有什么差异化的地方没有做好。

    两个芯片切换,工程中肯定有跟芯片型号相关的设置。另外管脚的版本也不同,你肯定要考虑管脚是否有使用的差异,要做相应的修改。

  • 你好,你回答的是问题1吧,是指CC2630支持Proprietary Radio。我在手册上有看到如下描述:
    23.7 Proprietary Radio
    This section describes proprietary radio command structure, data handling, radio operations commands,
    and immediate commands. The commands define a flexible packet handling compatible with the CC110x,
    CC111x, CC112x, CC120x, CC2500, and CC251x devices, as well as supporting other legacy modes.
    没有描述道CC2630和CC2650的相关信息,所以有所顾虑。
    请问我后面描述的几个问题有确认的答案否?
  • 这句指的:这些命令定义了与CC110x、CC111x、CC112x、CC120x、CC2500和CC251x设备兼容的灵活的包处理,并支持其他遗留模式。
    应该是说与这些老型号的芯片兼容。
    后面23.7.2 Commands
    ID Command Name Supported Devices Description
    0x3801 CMD_PROP_TX
    CC26x0,
    CC2640R2F,
    CC13x0
    Transmit packet
    0x3802 CMD_PROP_RX
    CC26x0,
    CC2640R2F,
    CC13x0
    Receive packet or packets
    的表格里,写的支持型号有:CC26x0
    这指的就是CC2650和2630
    之前文字中列出的是以前的老型号芯片,都十年前的了。
  • 补充:还有一点,这个文档是关于CC13x0, CC26x0 系列的。
    所以那一行描述的几个芯片跟这个系列无关,就是提一下,兼容问题。
  • Thanks,那第一个问题已经确定了,手册上那张表格之前确实也看到了除了0X3807-0x3809的命令外其他的都支持CC26X0系列的。在调试过程中CC2650能通过,CC2630一直通不过,怀疑自己理解有误。再次感谢你的确认。
  • 结果反复测试和核对,手册上还未找到直接证明CC2630不支持Proprietary Radio的说明,但我做了一个实验,我将SMARTRF_SETTINGS.h中的.rfMode 值由RF_MODE_PROPRIETARY_2_4修改为RF_MODE_IEEE_15_4后,如下

    RF_Mode RF_prop =

    {

       .rfMode = RF_MODE_IEEE_15_4,//RF_MODE_PROPRIETARY_2_4,

       .cpePatchFxn = &rf_patch_cpe_genfsk,

       //.mcePatchFxn = &rf_patch_mce_genfsk,

       //.rfePatchFxn = &rf_patch_rfe_genfsk,

       .mcePatchFxn = 0,

       .rfePatchFxn = 0,

    };

    原先一直回调出错当机的命令:

    RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);

    直接就过了,当然由于IEEE和PROPRIETARY对应的寄存器不一样,后续的发送函数等无法运行下去了。

    至此我强烈怀疑CC2630是不支持PROPRIETARY功能的。另外就是SmartRF Studio 7  2.11.0版本配置设置里面只有IEEE802.15.4选项。没找到配置PROPRIETARY设定的任何相关。CC2650里面也没找到,CC2650只能选择IEEE802.15.4或BLE,好奇怪的,

    因为开发包里的历程显示CC2650的SMARTRF_SETTINGS.h是RF Studio导出的。

    不知道是不是由于版本更新,TI已经彻底放弃Proprietary Radio了,还是我么找到相关菜单……

  • 在查找另外一些信息的时候浏览到了下面这个网址,通过TI员工的回答基本可以确认问题1的答案是CC2630不支持Proprietary Radio了 只支持ZIGBEE的调制,而ZIGBEE是建立在IEEE802.15.4上的,按照这样推的话……结论就是CC2630不支持Proprietary Radio

    现在还有问题2,问题3 ,问题4待解决了。

  • 自己继续来更新问题2 ,对于问题2的研究现在得到如下的阶段性的结果:CC2650与CC2630是支持在不用栈协议的情况下调用IEEE802.15.4来收发发送数据的,但是存在一个很大问题,我在开发时进展到现在的阶段发现无法再继续下去了。
    在修改了程序以及对应的IEEE802.15.4相关配置和头文件后,实际调试时发现,程序运行到发送数据的命令时会当机,TXEVEN永远无法完成,在RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0)这条命令下永远无法完成事件。
    我现在能做到的状态是:在调试状态下,CC2630已经将RF的数据通过IEEE802.15.4协议发出,接收端已经能收到我发送的数据,但是发送命令永远在这里当机。
    由于其中用到的rf_patch_cpe_ieee.h头文件是我自己编写不知道是不是这个头文件我的编写有误,我无法确定。
    在E2E的英文社区里也找到类似的问题有好几个,但TI都未给出最终的确定的回复,有一条回复很有意思写的是已在线下解决。
    通过E2E英文社区的描述,TI官方貌似不提供这方面的技术支持以及相关的例程,但是肯定能实现的,我在E2E的英文社区看到Siri贴出的一小段代码中能看出她是用这个方法实现过在这个环境下的数据发送,接收没看到。
    不明白TI为什么不提供这种方案的技术支持和原型。
    我有些怀疑CC2650(CC2630)不通过栈协议直接使用IEEE802.15.4发送和接收数据是否在操作上存在什么隐藏BUG,所以TI关闭了这方面的应用。
    这个可能只有TI的员工才能给出一个确切的答案。
    我的项目到目前为止得更换方向了,此路暂时不通,相关的手册和资料已经翻了一遍又一遍了,每一位RF的寄存器反复推敲,还是无法找到答案。这临门一脚始终踹不开。
  • 下载simplelink_cc13x0_sdk_2_30_00_20 里面有头文件。
    不过这里面没有tidriver文件,去contiki-ng里面下载他的驱动文件,包含cc26x0的。
    802.15.4模式下确实不太好调试。目前就contiki能用。但是用起来比较麻烦。