⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
8个帖子/ 0个新
最后发表
MarkDsylva_2277
离线
最后一次露面:3周14小时前
加入:2019-06-19 04:20
停止广告

嗨PMDialog,

我正在努力'ble_app_noncon'例如'杂项”文件夹中。广告数据被填充到广告字符串中。我正在使用BLE扫描仪应用程序来查看我的手机上的字符串。当我试图通过拨打'app_easy_gap_advertise_stop ()功能,广告停止。我正在运行一个调试会话和程序停止在ASSERT_ERROR (0);

case GAPM_CANCEL: {if(param->status != GAP_ERR_NO_ERROR) {ASSERT_ERROR(0);//意外错误}if (app_process_catch_rest_cb != NULL) {app_process_catch_rest_cb(msgid, param, dest_id, src_id);}}打破;

我正在尝试停止广告并转到睡眠模式。请指导。

问候,

马克

设备:
PM_DIALOG.
离线
最后一次露面:1天6小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

不确定您使用的是哪个SDK,但我们强烈推荐使用我们最新的SDK6版本6.0.12。此版本适用于DA14531和DA14585/586产品。雷电竞官网登录

请注意,如果您正在开始一个新的设计,我们强烈建议您开始使用DA14531和我们最新的SDK6.0.12,因为它有了更多的改进。我们有很多代码示例,改进的文档等等

https://www.dialog-seminile.com/produ雷电竞官网登录cts/connectivity/bluetooth-low ...

这个功能已经在SDK的ble_app_sleepmode示例中实现了。该应用程序增加了睡眠模式API的使用,利用了两个可用的睡眠模式-扩展睡眠模式(带或不带OTP副本)与OTP副本。

具体来说,设备默认启动无定向广告。在user_app_adv_start()中设置了一个“app easy”计时器。在预定义的时间(APP_ADV_DATA_UPDATE_TO)之后,计时器将过期,并触发adv_data_update_timer_cb()回调函数。这个函数调用app_easy_gap_advertise_stop(),因此系统停止发布,并执行user_app_adv_undirect_complete()。该功能使芯片进入睡眠模式。只有外部(GPIO)唤醒事件才能唤醒处理器

关于ble_app_nonconn, app_easy_gap_advertise_stop()发送一个GAPM_CANCEL_CMD消息到堆栈以停止不可连接的广告。然后,触发user_app_adv_nonconn_complete()回调函数。如果广告被取消(GAP_ERR_CANCELED),则更新广告数据并重新开始广告。在您的情况下,您应该根据应用程序的要求修改此功能——将设备设置为睡眠模式。

谢谢,PM_DIALOG.

MarkDsylva_2277
离线
最后一次露面:3周14小时前
加入:2019-06-19 04:20

嗨PM_Dialog,

谢谢您的答复。如您所说,我能够停止广告并将设备放入睡眠状态。我通过使用万用表测量电流消耗来确认这一点。我还添加了一个唤醒按钮中断,并且设备唤醒并开始传输数据。现在一切都很好。

我有另一项要求。当我获得一个按钮中断时,我必须在唤醒时启用UART。我在periph_init()中初始化了UART_INITIALIZE()函数。在按钮中断回调时,我正在调用Arch_resume_from_sleep()函数,这唤醒了设备,但设备粘贴在UART_RECEIVE(UART1,(UINT8_T *)缓冲区,4,UART_OP_BLOCKING)函数上。外部处理器通过UART发送数据,我在范围内确认了它。

我只想唤醒并从UART读取9个字节的数据,并将那些转移到广告字符串。我被困在设备唤醒的UART。

问候,

马克

PM_DIALOG.
离线
最后一次露面:1天6小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

很高兴您能够启动/停止广告,并将设备置于睡眠模式。如果您发现答案有用,请将其标记为“接受”,供其他论坛用户使用。

每次唤醒都会执行外围init()。BLE_WAKEUP_LP_Handler是系统唤醒时触发的ISR。然后,CPU将从WFI恢复。请检查arch_main.c文件中的main()。在WFI之后,arch_resume_from_sleep()当处于睡眠模式时,包括UART在内的所有外设块将被关闭。我的建议是在app_wakeup_cb()函数中初始化UART。为了执行UART读取,请参考SDK6.0.12的UART示例并检查uart_register_rx_cb()。这个例子位于projects\target_apps\peripheral_examples\uart SDK路径下。您还可以使用uart_read_buffer()来指定字节数。

谢谢,PM_DIALOG.

MarkDsylva_2277
离线
最后一次露面:3周14小时前
加入:2019-06-19 04:20

嗨PM_Dialog,

我照你的建议做了。我在app_wakeup_cb()函数上初始化了uart,我在那里执行uart读取,但它在uart read function()上卡住了。

为了中断对话芯片休眠,我使用一个外部处理器的gpio引脚。中断后,外部处理器在7ms后通过UART发送1个字节。我用示波器证实了这一点。芯片使用回调函数从睡眠中正确唤醒,但它在uart读取时卡住。是UART的问题还是别的什么?

注意:要确认外部处理器是否已正确发送数据,我尝试了SDK中外设示例文件夹中的UART示例之一。它收到数据不变。只有当我从睡眠中醒来时使用UART时,问题才是问题。

问候,

马克

PM_DIALOG.
离线
最后一次露面:1天6小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

抱歉我回复晚了。你能分享uart读取功能吗?你启用或禁用WDOG了吗?

谢谢,PM_DIALOG.

MarkDsylva_2277
离线
最后一次露面:3周14小时前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

是的,我已经禁用了看门狗定时器。

问候,

马克

PM_DIALOG.
离线
最后一次露面:1天6小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

你能启动WDOG吗?可能是固件卡住了…WDOG可用于检测由软件逃逸引起的意外执行序列,并可生成一个完整的系统复位(WDOG复位)或一个不可屏蔽中断(NMI)。

谢谢,PM_DIALOG.