大家好,
我已经在SDK 5.0.2.1中使用了BLE_APP_PERITIVELAL示例for UART数据传输。
我需要在ble_app_peripheral示例中添加睡眠模式特性。
要求是,
当我从外部MCU发送GPIO中断(通过任何GPIO引脚)时,现有的代码应该进入睡眠模式。
(默认情况下,应关闭,其应发送/接收数据,外部MCU将在运行时设置/在睡眠模式下)
而且我也想使用同样的GPIO引脚禁用/唤醒睡眠模式,如剪切。
请在此ASPS上分享您的观点。
谢谢,
设备:
大家好,
请在此ASPS上分享您的观点。
谢谢,
嗨gak,
感谢您对DA14580的关注,
支持DA14580的最新SDK版本是5.0.4版本,可以参考。
我们已经提供了一个应用程序ble_app_sleepmode.显示如何使用
睡眠模式API和运行时更改睡眠模式。对于DA14580,可以使用两种睡眠模式:
●扩展睡眠模式
●深度睡眠模式
在该示例中,用户可以按按钮唤醒设备。按钮按下设备后,将开始再次通告预定义的时间,然后睡觉。
您可以为您的外设示例使用/添加这些api。
如果您有更多问题,请告诉我们。
问候
IBA_DIALOG.
大家好,
谢谢你的支持,
按照您的建议,我用from按键来叫醒我(如果按了按键,叫醒回叫只会叫一次)。
它通过使用唤醒中断处理程序(wkupct_register_callback(app_button_press_cb))和(wkupct_enable_irq())进行正常工作。
我想使用一些GPIO引脚(port1_pin3)唤醒而不是按钮。
对于这个我是保留,配置GPIO引脚和注册我的回调(wkupct_register_callback(app_button_press_cb))和启用GPIO引脚和设置极性(高)到适当的引脚(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引脚是Low,不应该被唤醒回叫。
它应该只调用GPIO引脚是高分的。
我也想知道这个唤醒功能如何完美适用于按钮?
一个按=一次唤醒呼叫调用。
在SDK中使用了WKUPCT_DISABLE_IRQ()回调。
也解释一下。
请尽快证明您对此的支持。
谢谢,
嗨gak,
很高兴能够唤醒您的设备通过一个按钮按下,并遵循iba_dialog的指示。然而,我需要对您试图实现的内容进行一些澄清。抱歉,但我不能完全理解您想要实现的目标,所以让我问您一些问题来把事情弄清楚。
(默认情况下,应关闭,其应发送/接收数据,外部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函数。此外,您还可以检查CodeLess引用应用程序代码。使用此应用程序,您可以通过UART将AT命令发送到DA14580,因此您可以通过发送适当的AT命令将设备配置为扩展睡眠模式
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.,并不能给我一个确切的解决方案。
我想用GPIO P1_3通过wkupct_irq唤醒DA14580。
代码更改,
#define gpio_button_port gpio_port_0.
#define gpio_button_pin gpio_pin_1.
(我从外部MCU给DA14580的(GPIO) P1_3信号(从低到高))
实际问题是,
一旦P0_1pin状态从低变为高,wkupct_callback每3秒调用一次。
它只被调用一次,如果我使用sw3/sw2(即,wkupct_irq被调用一次,单按sw3/sw2)
我的观察是在将SW2 / SW3更改为GPIO P1_3之后,每3秒偶数GPIO P1_3调用WKUPCT IRQ即可。
但它不应该调用每3秒,就像SW2 / SW3按下一样。
请尽快提供您的支持
联系:
J5 - 5号PIN在DA14580中
跳线用于将External 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从高改为低)。
请为此提供支持。
谢谢,
嗨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_add_undirect_complete()函数,因此才会在设备进入永久睡眠模式时触发APP_BUTTON_PRESS_CB()打断。在您的情况下,我并不完全确定您的固件是什么。在我的情况下,我无法复制这个问题。如果app_button_press_cb()是多次执行的,这意味着您就会超过唤醒控制器将中断发送到唤醒控制器。您是否尝试过连接到唤醒控制器的GPIO?
谢谢,PM_Dialog