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.

关于BLE CC2540如何通过手机来修改程序参数

Other Parts Discussed in Thread: CC2540

我想通过手机和CC2540 Soc建立通信之后,能够通过手机来修改内部的一些参数,比如说advertData[]等等,我不清楚这些数据具体存放在那块存储区,以及CC2540在运行时如何通过查询这块区域来广播信息。

希望有做过这一块的可以指点一下,万分感谢!

  • Hi wang,

    advertData[] 是存放在内存中的, 可以修改.

    GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );

    通过上面这个函数就可以灵活修改, 在每次广播开始的时候发送新的广播包.

  • Hi,Yan

    感谢你的及时回答,我表达的有点不清晰,我想做的是通过手机APP来动态的修改adverData[].

    通过程序我知道,这些静态变量存放的位置是XDATA,DMA可以操作XDATA全部的空间,在

    XDATA_I
    Relative segment, address: XDATA 000004B1 - 000004CF (0x1f bytes), align: 0
    Segment part 16. Intra module refs: GAPRole_GetParameter
    GAPRole_SetParameter
    gapRole_ProcessGAPMsg
    LOCAL                                      ADDRESS
    =====                                       =======
    gapRole_AdvertData             000004B1

    从这里可以看出AdverDate的地址,可以通过DMA操作来进行动态的修改。我想问的是,有没有例程介绍,DMA的运行,以及如何并非是通过烧录程序来修改这些静态的值,举个例子,通过手机APP与设备相连,之后手机可以设定我想改变的那些的静态值。

  • 提供一个思路:

          ①.先制定一个简单的协议,用于手机App和CC2540的Firmware的通信;

          ②.手机App在跟CC2540的基本通信建立以后,用上述协议中约定的命

    令把要修改的数据送到CC2540;

          ③CC2540收到数据以后,再调用接口:

    GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );

    来改变参数。

          以上,供参考。