⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
8个职位/ 0个新职位
最后发表
MarkDsylva_2277
离线
最后一次露面:4周5小时前
加入: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天4小时前
工作人员
加入: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
离线
最后一次露面:4周5小时前
加入: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天4小时前
工作人员
加入:2018-02-08 11:03
嗨马克,

嗨马克,

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

在每次唤醒时执行peripher_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
离线
最后一次露面:4周5小时前
加入:2019-06-19 04:20

嗨PM_Dialog,

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

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

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

问候,

马克

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

嗨马克,

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

谢谢,PM_DIALOG.

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

嗨PM_Dialog,

是的,我已经关闭了看门狗定时器。

问候,

马克

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

嗨马克,

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

谢谢,PM_DIALOG.