3个月前
通过GPIO中断广播
张贴了尼克长0分 4回复您好对话框的东西,我计划根据DA14531开发一个计数器。
最终效果是,当DA14531的P0_1引脚检测到上升沿时,变量表示计数器将添加1,然后随后将进行计数器的值。之后DA14531睡眠并侦听PIN P0_1上的下一次中断。我将在智能手机扫描仪应用程序上看到制造商特定数据中计数器的值。
我认为组合Timer1_software_example和ble_app_barebone示例可能会实现我的目标。但是,我试过并失败了。
你能告诉我一个有关实现的详细程序吗?这将是非常感激的。
3个月前
嗨尼克长,
谢谢你的问题在线。我认为最终开始的项目是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.
3个月前
嗨pm_dialog。感谢您的回复。你是对的。我可以修改BLE_APP_SLEEPMODE示例以实现我的目的。我找到了一篇文章https://support.dialog-semicondiondiondiondum/forums/post/dialog-smartbond-b...给出程序。以下是您对话框的步骤给出了以下步骤:
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)然后在user_app_add_undirect_complete()中注释出ARCH_BLE_EXT_WAKEUP_ON()和APP_BUTTON_ENABLE()并添加USER_APP_ADV_START()。user_app_adv_start()将在更新广告数据后启动广告。
App_button_enable()函数将按钮设置为唤醒触发事件并设置唤醒控制器。WKUPCT_REGISTER_CALLBACK()注册将要在唤醒控制器中调用的APP_BUTTON_PRESS_CB()函数。此外,WKUPCT_ENABLE_IRQ()选择连接按钮的GPIO,并在发生唤醒中断时触发。
但仍然有一些他没有清楚地说明的东西。以下是我的理解实现步骤。请你检查它们是否正确?
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)更改像这样的mnf_data_update()以计数。
静态void mnf_data_update()
{
mnf_data.proprietary_data [1] ++;
}
在通过这五个步骤修改代码之后,当我将我设置为按钮的P0_1将其设置为按钮,到GND,我的扫描仪应用程序中显示的制造商数据将添加一个。但是,这不起作用非常稳定。有时DA14531将停止宣传,我无法通过将P0_1连接到GND来唤醒它。我只能按RESET按钮以获得新计数。你能帮这个问题吗?非常感谢!
问候,
缺口
3个月前
你好,
我发现了另一个例子来实现我的目的。这是BLE_BUTTON_WAKEUP示例。但是,我在user_wakeup.c和代码“计数器++中”添加全局变量计数器。在user_app_wakeup_press_cb()函数中。如何在User_Barebone.c中将计数器的值更新为“mnf_data.proprietary_data [1]”并宣传此值?你能帮忙吗?谢谢。