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.

CC2640R2F: OAD功能实现

Part Number: CC2640R2F
Other Parts Discussed in Thread: UNIFLASH

使用的SDK版本是simplelink_cc2640r2_sdk_1_40_00_45

因为硬件的设计是没有使用32.768K的外部晶振,所以之前是使用的simple_peripheral例程中的RCOSC配置

目前是需要添加OAD的功能,目前考虑2个方法

1、查到SDK中有simple_peripheral_oad_onchip例程,考虑是把功能移植过来,但是该做起来不正常,蓝牙可以广播,但是无法连接成功,

在这个例程中也没有找到与simple_peripheral相类似的修改RCOSC配置的地方,也没有找相关的文档

请问这种情况应该怎么解决

2、是在simple_peripheral例程中增加OAD功能

但是这个页面跳转过去的目标页面却是SDK包

请问这种情况应该怎么解决

谢谢

  • 建议使用方法1来做,在其他程序上添加onchip oad会很复杂

    在这个例程中也没有找到与simple_peripheral相类似的修改RCOSC配置的地方,也没有找相关的文档

    参考这里的步骤来修改:https://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_5_30_00_03/docs/blestack/ble_user_guide/html/ble-stack-3.x/custom-hardware.html#using-32-khz-crystal-less-mode

  • 在simple_peripheral_oad_onchip例程中有如下4个工程

    但我在这几个工程中并未找到与simple_peripheral相类似的文件结构和代码块,所以参考链接中的修改操作在这里我还是不清楚应该如何去使用
    您能给出更详细一点的指引吗

  • oad例程应在bim_main.c文件中去操作,你可以参考simple_peripheral例程中的RCOSC配置和上面的文档来修改

  • 按照文档指引,如下操作:

    1、在bim_oad_onchip_cc2640r2lp_app中将ccfg_app_ble.c状态进行exclude from build操作

    2、在simple_peripheral_cc2640r2lp_oad_onchip_app,将相关文件(rcosc_calibration.crcosc_calibration.h and ccfg_app_ble_rcosc.c)直接复制粘贴到simple_peripheral_cc2640r2lp_oad_onchip_app\Application路径下,增加宏定义USE_RCOSC,文档中的其他操作在这个配置的源码中都已经实现。

    3、编译时,报错

    查找这个函数,发现是有定义的,但不知道为什么报错,重新添加头文件也不行。我就暂时注释掉了RCOSC_enableCalibration()中的语句HCI_EXT_SetSCACmd(500);

    3、这样操作完成后发现编译simple_peripheral_cc2640r2lp_oad_onchip_app生成的bin文件会超出0x9000,占用后面的空间,造成在使用UniFlash时报错overlap,因此在宏定义中修改POWER_SAVING_____X取消低功耗,这样就不会超出

    4、simple_peripheral_cc2640r2lp_oad_onchip_stack中也修改POWER_SAVING_____X取消低功耗

    5、重新编译后,使用UniFlash将3个hex文件、1个bin文件烧写进芯片,使用手机可以扫描到设备名为“SBP OAD APP v001”的设备,点击连接但是一直是建立连接失败。这样情况和代码未做相关修改时类似(测试用的硬件上没有32.768K晶振) 

    6、请问这样操作是否正确?如果正确的话,最后结果不正确还有其他原因吗?

    7、另外,如果不需要使用低功耗功能,在宏定义中将POWER_SAVING注释或修改,是不是不用做上述的相关的操作就可以直接使用?但是这样似乎是不行的,之前在simple_peripheral例程中,这样使用还是出现连接失败的情况

    感谢回复