通过GPIO中断广播

了解更多常见问题解答教程

5 posts / 0 new
最后一篇
尼克长
离线
最后一次露面:1周前1周前
加入:2020-05-20 04:00
通过GPIO中断广播

您好对话框的东西,我计划根据DA14531开发一个计数器。
最终效果是,当DA14531的P0_1引脚检测到上升沿时,变量表示计数器将添加1,然后随后将进行计数器的值。之后DA14531睡眠并侦听PIN P0_1上的下一次中断。我将在智能手机扫描仪应用程序上看到制造商特定数据中计数器的值。
我认为组合Timer1_software_example和ble_app_barebone示例可能会实现我的目标。但是,我试过并失败了。

你能告诉我一个有关实现的详细程序吗?这将是非常感激的。

设备:
尼克长
离线
最后一次露面:1周前1周前
加入:2020-05-20 04:00
嗨,

嗨,

我发现了另一个例子来实现我的目的。这是BLE_BUTTON_WAKEUP示例。但是,我在user_wakeup.c和代码“计数器++中”添加全局变量计数器。在user_app_wakeup_press_cb()函数中。如何在User_Barebone.c中将计数器的值更新为“mnf_data.proprietary_data [1]”并宣传此值?你能帮忙吗?谢谢。

PM_DIALOG.
离线
最后一次露面:13小时20分钟前
员工
加入:2018-02-08 11:03
嗨尼克长,

嗨尼克长,

谢谢你的问题在线。我认为最终开始的项目是SDK6的BLE_APP_SLEEPMODE示例。

您可以在6.0.14.1114 \ projects \ target_apps \ ble_examples \ ble_app_sleepmode sdk路径中找到它。

此示例使用唤醒控制器唤醒设备。请检查app_button_enable()。为了检测高电平信号,应该从WKUPCT_PIN_POLARITY_LOW转换为WKUPCT_PIN_POLARITY_HIGH的极性。

本例还演示了如何更新制造商特定数据。请参阅mnf_data_update()函数。

谢谢,PM_DIALOG.

尼克长
离线
最后一次露面:1周前1周前
加入:2020-05-20 04:00
嗨pm_dialog。Thanks for your

嗨pm_dialog。感谢您的回复。你是对的。我可以修改BLE_APP_SLEEPMODE示例以实现我的目的。我找到了一篇文章https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...to give the procedure. Following are the steps your Dialog stuff gave:

1)注释出在user_app_adv_start()函数中调用的app_easy_timer()。此计时器摘要通过app_easy_gap_advertise_stop()函数停止广告每个app_add_data_update_to秒的adv_data_update_timer_cb()函数。
2)关于更新广告字符串,您应该停止添加,然后动态更新您的数据,然后再次启动广告。在app_wakeup_cb()函数中添加app_easy_gap_advertise_stop()以停止广告。
3)将App_Button_Enable添加到User_App_Adv_start()中,以便按按钮按钮按钮
4) Then in the user_app_adv_undirect_complete() comment out the arch_ble_ext_wakeup_on() and the app_button_enable() and add user_app_adv_start(). The user_app_adv_start() will start the advertising after the update of the advertising data.

App_button_enable()函数将按钮设置为唤醒触发事件并设置唤醒控制器。WKUPCT_REGISTER_CALLBACK()注册将要在唤醒控制器中调用的APP_BUTTON_PRESS_CB()函数。此外,WKUPCT_ENABLE_IRQ()选择连接按钮的GPIO,并在发生唤醒中断时触发。

But there is still something he did not illustrate clearly. Below are my realization steps based on my understanding. could you please check whether they are correct?

1)注释为app_adv_data_update_timer_used = app_easy_timer(app_addata_update_to,avd_data_update_timer_cb);在user_app_adv_start()函数中,在user_app_add_start()函数中的第一行中添加app_button_enable()函数。我不确定app_button_enable()函数的位置是否正确。

2)在App_button_press_cb()函数中的最后两行中添加app_easy_gap_advertise_stop()和mnf_data_update()函数。

3)根据我的需要,更改GPIO_BUTTON_PORT,GPIO_BUTTON_POLARY_LOW在APP_BUTTON_ENABLE()函数的定义中。

4)注释OUT ARCH_BLE_EXT_WAKEUP_ON()和APP_BUTTON_ENABLE()在USER_APP_ADC_UNDIRECT_COMPLETE()函数中的函数,然后添加USER_APP_ADC_START()函数。

5)change mnf_data_update() like this for counting.
static void mnf_data_update()
{
mnf_data.proprietary_data [1] ++;
}

在通过这五个步骤修改代码之后,当我将我设置为按钮的P0_1将其设置为按钮,到GND,我的扫描仪应用程序中显示的制造商数据将添加一个。但是,这不起作用非常稳定。有时DA14531将停止宣传,我无法通过将P0_1连接到GND来唤醒它。我只能按RESET按钮以获得新计数。你能帮这个问题吗?非常感谢!

Regards,
缺口

PM_DIALOG.
离线
最后一次露面:13小时20分钟前
员工
加入:2018-02-08 11:03
嗨尼克长,

嗨尼克长,

谢谢你的回应。我建议你圣art debugging the project.So, please run it in debug mode and check if the firmware is rerunning correctly. Is the fw running, or it freezes into an assertion, NME etc. ? Add also some breakpoints, so you can verify that all is working as expected.

Question : Does the device boot from SPI Flash or System-RAM? In case of System-RAM, what is the behavior?

您可以通过按“开始/停止调试会话”按钮,然后从Keil IDE中的“RUN”按钮进行调试模式中运行它?

谢谢,PM_DIALOG.