大家好,
我已经在SDK 5.0.2.1中使用了BLE_APP_PERITIVELAL示例for UART数据传输。
我需要在BLE_APP_PERITIVELAL示例中添加睡眠模式功能。
要求是,
现有代码应转到睡眠模式,而我从外部MCU发送GPIO中断(通过任何GPIO引脚)。
(默认情况下,应关闭,其应发送/接收数据,外部MCU将在运行时设置/在睡眠模式下)
而且我也想使用同样的GPIO引脚禁用/唤醒睡眠模式,如剪切。
请在此ASPS上分享您的观点。
谢谢,
设备:
大家好,
请在此ASPS上分享您的观点。
谢谢,
嗨gak,
感谢您在DA14580上的闲聊,
最新到Date SDK版本的最新版本支持DA14580是5.0.4版本,您可以参考它。
我们已经提供了一个应用程序ble_app_sleepmode.显示如何使用
睡眠模式API和运行时更改睡眠模式。对于DA14580,可以使用两种睡眠模式:
●扩展睡眠模式
●深度睡眠模式
在该示例中,用户可以按按钮唤醒设备。按钮按下设备后,将开始再次通告预定义的时间,然后睡觉。
您可以在外围示例中使用/添加这些API。
如果您有更多问题,请告诉我们。
问候
IBA_DIALOG.
大家好,
谢谢你的支持,
根据您的建议,我从按下按钮后醒来。(如果按下按钮,则只需一次调用唤醒回调)
它通过使用唤醒中断处理程序(wkupct_register_callback(app_button_press_cb))和(wkupct_enable_irq())进行正常工作。
我想使用一些GPIO引脚(Port1_pin3)唤醒而不是按钮。
为此,我保留,配置GPIO引脚并注册我的回调(WKUPCT_REGISTER_CALLBALL(APP_BUTTON_PRESS_CB)),并启用GPIO引脚并将极性(高)设置为适当的PIN(WKUPCT_ENABLE_IRQ())。
GPIO的输入高,经过一段时间,它会降低。(就像按钮按下)
此时唤醒回拨回调并唤醒正常工作。
但随着GPIO的调用,唤醒回电甚至被称为低电平,(使用多仪表检查GPIO状态 - 仅限电压为0.0Volt)。
这里是“wkupct_enable_irq(wkupct_pin_select(gpio_port_1,gpio_pin_3),//选择pin(gpio_button_port,gpio_button_pin)的编程
wkupct_pin_polarity(gpio_port_1,gpio_pin_3,wkupct_pin_polarity_high),//极性低
1,// 1事件
10);“我使用了。
我的期望是,GPIO引脚将会低,唤醒回电不应该调用。
它应该只调用GPIO引脚是高分的。
我也想知道这个唤醒功能如何完美适用于按钮?
一个按=一次唤醒呼叫调用。
在SDK中使用了WKUPCT_DISABLE_IRQ()回调。
也解释一下。
请尽快证明您对此的支持。
谢谢,
嗨gak,
很高兴能够通过按钮按下并按照IBA_DIALAOG的说明来唤醒您的设备。但是,我需要几个澄清您试图实施的内容。道歉,但我无法完全理解你想要完成的事情,所以让我问你一些问题让事情变得清晰。
(默认情况下,应关闭,其应发送/接收数据,外部MCU将在运行时设置/在睡眠模式下)
而且我也想使用同样的GPIO引脚禁用/唤醒睡眠模式,如剪切。“
如果我理解正确,那么设备将最初处于活动模式,它应该能够通过UART发送或接收数据。你想用gpio中断实施什么?您希望在扩展睡眠模式下收到中断并设置您的设备吗?如何如何将睡眠模式配置从活动模式更改为扩展睡眠模式?GPIO中断由外部MCU驱动?请注意,由于设备进入扩展休眠模式,因此所有外设块都会关闭,因此您将无法进行UART活动。
为了获得有关SDK的BLE_APP_SLEEPMODE示例的更多信息,我会非常建议您阅读8.50支柱5(睡眠模式)
UM-B-050:DA1458X软件开发人员指南(SDK5)。您可以从我们支持页面的DA14580选项卡找到它。本应用示例的主要目的是展示如何使用睡眠模式API并在运行时更改睡眠模式。
谢谢,PM_DIALOG.
大家好,
是的,你是对的,
请找到以下信息进行澄清,
1)设备最初在活动模式下,它应该能够通过UART发送或接收数据。
2)如果GPIO中断由外部MCU驱动,则设备应转至扩展睡眠模式。
3)唤醒也由外部MCU控制,另一个GPIO中断由外部MCU驱动,用于唤醒。
4)唤醒后,我应该能够恢复BLE设备状态以继续进行数据传输。
找到内联答案,
您想在扩展睡眠模式下收到中断并设置您的设备吗?<<<是的,
当它从外部MCU接收中断时,它应该将设备设置为扩展睡眠模式。
如何如何将睡眠模式配置从活动模式更改为扩展睡眠模式?<<<
步骤1)活动模式下的设备(此模式中的一个,除了用于通过空气传输数据)
步骤2)扩展睡眠模式(通过外部MCU驱动的GPIO中断)
步骤3)设备从睡眠模式唤醒(通过外部MCU通过GPIO中断)
步骤4)唤醒设备后应准备转移数据后
GPIO中断由外部MCU驱动?是的,
请注意,由于设备进入扩展睡眠模式,因此所有外围设备块都将关闭,因此您将无法进行UART活动。<<是的,在睡眠模式下无需通过UART发送任何数据。但是,当从睡眠中醒来时,它应该恢复像广告/数据传输的旧状态。
请尽快提供支持。
谢谢,
嗨gak,
您能否检查以下帖子吗?
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
此帖子可能会帮助您捕获外部MCU生成的中断,并且您应该调用app_easy_gap_advertise_stop函数。此外,您还可以检查无附加参考应用程序代码。使用此应用程序,您可以通过UART发送到DA14580的命令,因此您可以通过在命令中发送相应的休眠模式以扩展睡眠模式配置设备
https://support.dialog-semicondiondiondum/connectivity/product/da14580?qt ...
谢谢,PM_DIALOG.
大家好,
已经使用,我使用“唤醒定时器”块来唤醒DA14580,唤醒定时器与开关SW3(P1_1)和SW2(P0_6)工作正常。
如上所述帖子“https://support.dialog-semicondiondiondiondum/forums/post/dialog-smartbond-bl.......“,对我来说并不是一个完整的解决方案。
我想通过使用WKUPCT_IRQ使用GPIO P1_3来唤醒DA14580。
代码更改是,
#define gpio_button_port gpio_port_0.
#define gpio_button_pin gpio_pin_1.
(我从外部MCU(低到高)给出DA14580的信号到(GPIO)P1_3)
实际问题是,
一旦P0_1pin状态从低电平变为高电平,WKUPCT_CALLBALL一次被调用一次一次。
只有在使用SW3 / SW2(即,WKUPCT_IRQ一次按SW3 / SW2的单按一次)
我的观察是在将SW2 / SW3更改为GPIO P1_3之后,每3秒偶数GPIO P1_3调用WKUPCT IRQ即可。
但它不应该调用每3秒,就像SW2 / SW3按下一样。
请尽快提供您的支持
联系:
J5 - 5号PIN在DA14580中
跳线用于将外部MCU GPIO引脚连接到DA14580 GPIO P1_3。
谢谢,
嗨gak,
如果我理解正确,则要从PIN1_3唤醒设备,并从SW3和SW2中删除唤醒功能。那是对的吗?您是否在user_periph_setup中配置了PIN1_3?对不起,但我有点混淆你的描述,你能解释一下你想要完成的事情吗?你想从哪个gpio醒来?PIN0.1做了什么?请您可以上传配置和PIN1_3的唤醒过程吗?
谢谢,PM_DIALOG.
大家好,
如果我理解正确,您希望从PIN1_3唤醒设备,并从SW3和SW2中删除唤醒功能。<<<是的它是正确的。
你想从哪个gpio醒来?<<<< GPIO P1_3正在使用。
PIN0.1做了什么?<<抱歉,错误使用。使用了gpio p1_3。
请找到上传的文件fyi。
谢谢,
嗨gak,
根据您的描述,P1_3处于活动高电平,外部MCU触发从低电平到高,这是正确的?如果是,则应更改极性,因为在附加的代码片段中,您使用wkupct_pin_polarity_low极性。按钮配置为INPUTE_PULLUP,因此当GPIO变为低电平时触发唤醒控制器,这就是为什么衬套按钮的极性低。在你的情况下,你应该做到相反的。此外,您应该将p1_3配置为input_pulldown并使用wkupct_pin_polarity_high。请找到附加的p1_3唤醒程序的示例。
谢谢,PM_DIALOG.
大家好,
感谢您的支持,
我在项目中使用了上面提到的配置。
请找到澄清的内联,
P1_3处于活动高,外部MCU从低到高电平,这是正确的?<<<是。
实际的是,当外部MCU从低到高电平触发时,“app_button_press_cb()”呼叫呼叫仅呼叫一次。
但在我的情况下,唤醒控制器“app_button_press_cb()”呼叫后触发,然后一次(外部MCU将GPIO P1_3从高到低改变为GPIO P1_3)。
请为此提供支持。
谢谢,
嗨gak,
你是什么意思唤醒控制器正在触发多次?如果它被触发多次,这意味着您将稍微获得中断。您是否可以检查P1_3是否从外部MCU多次触发?
谢谢,PM_DIALOG.
大家好,
是的,一个中断触发了一次。
请找到圆线,
您是否可以检查P1_3是否从外部MCU多次触发?>>我通过CRO在外部MCU侧通过CRO检查了P1_3状态,并且其未多次触发。
此外,我还通过CRO检查DA145080 Pro套件中的相同引脚,此引脚状态也根据外部MCU而变化。
谢谢,
嗨gak,
当您在唤醒控制器中获得活动低中中断时APP_BUTTON_PRESS_CB()。这意味着只有当设备处于永久睡眠状态时,才会执行App_button_press_cb(),并且您将获得唤醒中断。如果设备仍在宣传,则不会触发此回调。所以,你的设备进入永久睡眠模式,您发送中断唤醒您的设备,然后它是广告,回调仍然被执行?我试图了解你的问题是什么。
谢谢,PM_DIALOG.
大家好,
...你发送一个中断唤醒你的设备,然后它是广告,回调仍然被执行?是的,它的正确性,唤醒回调也被执行了广告中的设计。
谢谢,
嗨gak,
我想让你知道这有点奇怪的情况。请检查默认BLE_APP_SLEEPMODE示例,您将看到APP_BUTTON_ENABLE()仅调用为VOID USER_APP_ADV_UNDIRECT_COMPLETE()函数,因此才会在设备进入永久睡眠模式时触发APP_BUTTON_PRESS_CB(),并且您将唤醒打断。在您的情况下,我并不完全确定您的固件是什么。在我的情况下,我无法复制这个问题。如果app_button_press_cb()是多次执行的,这意味着您就会超过唤醒控制器将中断发送到唤醒控制器。您是否尝试过连接到唤醒控制器的GPIO?
谢谢,PM_DIALOG.