我根据rfPacketTx例程,在smartRF Studio 7中设置了BLE mode(官方的例程里面是专有模式),设置为37频道,然后使用代码导出更改了smartrf_settings.h/smartrf_settings.c文件,在rfPacketTx.c代码中也更改了部分:
//BLE Non-Connectable Advertiser Command 配置RF_cmdBleAdvNc.pParams->advLen = PAYLOAD_LENGTH;RF_cmdBleAdvNc.pParams->scanRspLen = SCANRSP_LENGTH;RF_cmdBleAdvNc.pParams->pAdvData = packet;RF_cmdBleAdvNc.pParams->pScanRspData = &scanRspData;RF_cmdBleAdvNc.pParams->pDeviceAddress = &DeviceAddress;RF_cmdBleAdvNc.startTrigger.triggerType = TRIG_NOW;/* Request access to the radio 请求访问radio*/rfHandle = RF_open(&rfObject, &RF_ble, (RF_RadioSetup*)&RF_cmdBle5RadioSetup, &rfParams);
RF_EventMask terminationReason = RF_runCmd(rfHandle, (RF_Op*)&RF_cmdBleAdvNc,
RF_PriorityNormal, NULL, 0);
用CC2540 Dongle USB 抓包可以抓到修改后的rfPacketTx所发送的数据包:
但是通过手机端蓝牙搜到的CC2640R2F launch设备,数据内容现实为空:
,请问是什么原因?谢谢
我可以理解为是 必须得通过协议栈的方式来设置beacon吗,比如使用SimpleBroadcaster例程。
Kevin Qiu1:
设置Beacon建议用SimpleBroadcaster例程,rfPacketTx例程没有蓝牙协议栈相当于2.4G的私有协议
user6172527:
回复 Kevin Qiu1:
您好,谢谢回答,请问一下,我可以通过修改rfPacketTx例程,来实现蓝牙的方式吗?
Kevin Qiu1:
回复 user6172527:
实现不了,建议还是直接用蓝牙的例程来做