Thread 中讨论的其他器件: CC2650
您好!
我正在开发一个电路板、其中 BLE 传输和一些测量电路之间似乎存在耦合。 因此、我将尝试在连接事件结束后立即同步测量值。 我将使用 CC2640 IC 和 BLE Stack 2.2.1。 (我已经使用1GHz 示波器探针探测了天线 TX 端口、并注意到连接间隔周期内的尖峰、这些尖峰也与我在模拟测量电路中看到的噪声保持一致)。
我尝试使用 HCI_EXT_ConnEventNoticeCmd ()命令来触发我的测量,但我没有看到正在进行任何同步。 我是否误解了该函数的运行? 或者、实际传输和连接事件结束通知之间是否存在一些看似随机的较大延迟(许多毫秒)? 或者我的代码中是否可能有错误?
我的代码基于 simple_peripheral 示例。 我所做的主要更改是始终启用连接事件(我删除了对启用/禁用连接事件的其他引用)、并在连接结束事件发生时调用自定义测量代码。
案例 GAPROLE_Connected: { linkDBInfo_t linkInfo; uint8_t numActive = 0; Util_startClock (周期时钟); numActive = linkDB_NumActive(); //使用 numActive 确定最后一个的连接句柄 //连接 if ( linkDB_getinfo( numActive -1,&linkInfo )==成功) { uint16_t connHandle = 0; Display_Print1 (dispHandle、2、0、"Num Conns:%d"、 (uint16_t) numActive); Display_print0 (dispHandle、3、0、Util_convertBdAddr2Str (linkInfo.addr)); //启用连接事件,不应该使用太多的功率,应该是吗? if (GAPRole_GetParameter (GAPROLE_CONNNANDLE、&connHandle)==成功) HCI_EXT_ConnEventNoticeCmd (connHandle、self实体、SBP_CONN_EVT_END_EVT); }
发生该事件时、我向我的自定义函数添加了一个调用、该调用会切换某些 I/O 引脚并启动传感器控制器任务:
//首先检查 BLE 堆栈事件 if (pEvt->signature == 0xFFFF) { if (pEvt->EVENT_FLAG & SBP_CONN_EVT_END_EVT) { //并在需要时启动 SC SimpleBLEPeripheral_InitSCConnEvent(); //尝试重新传输待处理的 ATT 响应(如果有) SimpleBLEPeripheral_sendAttRsp(); } }
谢谢、
Nathan