我想通过手机和CC2540 Soc建立通信之后,能够通过手机来修改内部的一些参数,比如说advertData[]等等,我不清楚这些数据具体存放在那块存储区,以及CC2540在运行时如何通过查询这块区域来广播信息。
希望有做过这一块的可以指点一下,万分感谢!
Yan:
Hi wang,
advertData[] 是存放在内存中的, 可以修改.
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
通过上面这个函数就可以灵活修改, 在每次广播开始的时候发送新的广播包.
wang jhon:
回复 Yan:
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与设备相连,之后手机可以设定我想改变的那些的静态值。
changjun shan:
回复 wang jhon:
提供一个思路:
①.先制定一个简单的协议,用于手机App和CC2540的Firmware的通信;
②.手机App在跟CC2540的基本通信建立以后,用上述协议中约定的命
令把要修改的数据送到CC2540;
③CC2540收到数据以后,再调用接口:
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
来改变参数。
以上,供参考。