嗨,团队,
我已经在SDK 5.0.2.1中使用ble_app_peripheral示例进行UART数据传输。
我需要在ble_app_peripheral的例子中添加睡眠模式特性。
要求是,,
现有的代码应该进入睡眠模式,当我从外部MCU发送GPIO中断(通过任何GPIO引脚)。
(默认睡眠应该关闭,它应该发送/接收数据,外部MCU将在运行时设置/ON睡眠模式)
我还想禁用/唤醒睡眠模式使用相同的gpio引脚像切换。
请分享你对这个ASPS的看法。
谢谢
设备:
嗨,团队,
请分享你对这个ASPS的看法。
谢谢
嗨,嘎,
谢谢你对DA14580感兴趣,
支持DA14580的最新SDK版本是5.0.4版本,您可以参考。
我们已经提供了一个应用程序ble_应用程序_睡眠模式演示如何使用
睡眠模式API,并在运行时更改睡眠模式。DA14580有两种睡眠模式:
● 延长睡眠模式
●深度睡眠模式
在示例中,用户可以通过按下一个按钮来唤醒设备。按下按钮后,设备将开始再次广告预定的时间,然后去睡觉。
你可以为外围设备的例子使用/添加这些api。
如果您还有什么问题,请告诉我们。
当做
IBA_对话框
嗨,团队,
谢谢你的支持,
按照你的建议,我使用from pressing button来唤醒(如果按下按钮,唤醒回调只调用一次)。
它通过使用唤醒中断处理程序(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.0v)。
这里编程像“wkupct_enable_irq(WKUPCT_PIN_SELECT(GPIO_PORT_1, GPIO_PIN_3), //选择pin (GPIO_BUTTON_PORT, GPIO_BUTTON_PIN)”
WKUPCT_引脚_极性(GPIO_端口_1、GPIO_引脚_3、WKUPCT_引脚_极性_高),//极性低
1, // 1事件
“那就是我被利用了。”
我的期望是,GPIO针将低,唤醒回叫是不应该调用。
只有GPIO管脚处于高stat状态时才应该调用它。
我还想知道这个唤醒功能如何完美的工作按钮按下?
按一次=叫醒一次,回叫。
SDK中没有wkupct_disable_irq()回调。
这也解释。
请尽快证明你的支持。
谢谢
嗨,嘎,
很高兴您能够通过按下按钮并按照IBA_Dialaog的说明唤醒您的设备。但是,我需要澄清一下你们试图实现的内容。很抱歉,但是我不能完全理解你想要完成的是什么,所以让我问你一些问题,把事情弄清楚。
(默认睡眠应该关闭,它应该发送/接收数据,外部MCU将在运行时设置/ON睡眠模式)
我还想禁用/唤醒睡眠模式使用相同的gpio引脚像切换。”
如果我理解正确,设备最初将处于活动模式,并且应该能够通过UART发送或接收数据。您希望通过GPIO中断实现什么?是否要接收中断并将设备设置为延长睡眠模式?您希望如何将睡眠模式配置从活动模式更改为扩展睡眠模式?GPIO中断由外部MCU驱动?请注意,由于设备进入延长睡眠模式,所有外围设备模块都将关闭,因此您将无法进行UART活动。
为了获得关于ble_app_sleepmode示例的更多信息,我强烈建议您阅读8.50 Pillar 5 (Sleep Mode)的
UM-B-050: DA1458x软件开发指南(SDK5).你可以在我们的支持页面的DA14580选项卡上找到它。这个应用程序示例的主要目的是展示如何使用休眠模式API并在运行时更改休眠模式。
谢谢,PM_Dialog
嗨,团队,
是的,你是对的,
请查看以下信息,以便您的澄清。
1)设备最初处于主动模式,能够通过UART发送或接收数据。
2)如果GPIO中断是由外部MCU驱动的,设备应该进入扩展睡眠模式。
3)唤醒也是由外部MCU控制,另一个GPIO中断由外部MCU驱动进行唤醒。
4)醒来后,我应该能够恢复BLE设备状态,以便继续数据传输。
找到内联答案,
是否要接收中断并将设备设置为延长睡眠模式?<<是,
当接收到外部MCU的中断时,应该将设备设置为扩展睡眠模式。
如何将睡眠模式配置从活动模式更改为扩展睡眠模式?<<<
步骤1)设备处于主动模式(通告/连接(BLE设备可以通过空中传输数据))
步骤2)进入扩展睡眠模式(通过外部MCU驱动的GPIO中断)
步骤3)设备从睡眠模式唤醒(通过外部MCU的GPIO中断)
步骤4)唤醒后设备应准备好传输数据
GPIO中断由外部MCU驱动?对
请注意,由于设备进入扩展睡眠模式,所有外围设备模块都将断电,因此您将无法进行UART活动。<<是,在睡眠模式下,无需通过UART发送任何数据。但是,当从睡眠中醒来时,它应该恢复旧的状态,如广告/数据传输。
请尽快提供您的支持。
谢谢
嗨,嘎,
你能按顺序检查一下下面的帖子吗?
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。
这篇文章可能会帮助你为了捕获外部MCU生成的中断,你应该调用app_easy_gap_advertise_stop函数。此外,您还可以检查CodeLess引用应用程序代码。使用此应用程序,您可以通过UART将AT命令发送到DA14580,因此您可以通过发送适当的AT命令将设备配置为扩展休眠模式
https://support.dialog-semiconductor.com/connectivity/product/da14580?qt..。
谢谢,PM_Dialog
嗨,团队,
我已经在使用“唤醒计时器”块来唤醒DA14580,并且唤醒计时器在SW3(P1_1)和SW2 (P0_6)交换机上工作得很好。
如上所述"https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl,并不是给我一个精确的答案。
我想使用GPIO P1_3唤醒DA14580使用wkupct_irq。
代码更改,
#定义GPIO\U按钮\U端口GPIO\U端口\U 0
#定义GPIO\U按钮\U引脚GPIO\U引脚\U 1
(我给信号(GPIO) P1_3的DA14580从外部MCU(低到高))
实际问题是,,
一旦P0_1pin状态由低变为高,wkupct_callback每3秒调用一次。
它只在我使用sw3/sw2时被调用一次(例如,wkupct_irq在sw3/sw2的单按下时被调用一次)
我的观察是,在将SW2/SW3改为GPIO P1_3后,即使GPIO P1_3变高,wkupct irq也会每3秒被调用一次。
但它不应该每3秒调用一次,它的工作方式类似SW2/SW3按键。
请尽快提供您的支持
连接:
J5 - DA14580的第5引脚
跳线用于连接外部MCU GPIO引脚到DA14580 GPIO P1_3。
谢谢
嗨,嘎,
如果我理解正确,您希望从Pin1_3唤醒设备,并从SW3和SW2中删除唤醒功能。是否正确?您是否在user_periph_设置中配置了Pin1_3?抱歉,但我对您的描述有点困惑,请您解释一下您试图实现的功能?您希望从哪个GPIO中完成唤醒?Pin0.1的功能是什么?请上传Pin1_3的配置和唤醒程序好吗?
谢谢,PM_Dialog
嗨,团队,
如果我理解正确,您希望从pin_3唤醒设备,并删除SW3和SW2的唤醒功能。<<<是的,它是正确的。
你想从哪个GPIO中醒来?<<<< GPIO P1_3正在使用中。
Pin0.1是做什么的?对不起,用错了。使用GPIO P1_3。
请查找上传的文件供参考。
谢谢
嗨,嘎,
根据您的描述,P1_3处于高激活状态,外部MCU从低到高触发,对吗?如果是,则应更改极性,因为在附加的代码段中,您使用的是WKUPCT_PIN_polarity_LOW polarity。该按钮配置为INPUT_PULLUP,因此当GPIO变为low(低)时会触发唤醒控制器,这就是布什按钮极性低的原因。在你的情况下,你应该做相反的事情。此外,您应该将P1_3配置为输入_下拉菜单,并使用WKUPCT_引脚_极性_高。请参阅随附的P1_3唤醒程序示例。
谢谢,PM_DIalog
嗨,团队,
谢谢大家的支持,
我在我的项目中使用了上述配置。
请查看下面的行内说明,
P1_3是高有源,外部MCU是由低到高触发,对吗?< < <是的。
实际情况是,当外部MCU从低到高触发时,“app_button_press_cb()”回调仅调用一次。
但是在我的情况下,唤醒控制器“app_button_press_cb()”回调被触发超过一次(外部MCU的GPIO P1_3从高到低)。
请在这方面提供您的支持。
谢谢
嗨,嘎,
唤醒控制器被触发不止一次是什么意思?如果它被触发不止一次,这意味着您会被中断不止一次。请检查P1_3是否从外部MCU被触发多次?
谢谢,PM_Dialog
嗨,团队,
是的,中断会被触发多次。
请在线查找下面的命令,
您能检查P1_3是否从外部MCU触发多次吗?>>我通过外部MCU侧的CRO检查了P1_3的状态,但未触发多次。
另外,我正在通过CRO检查DA145080 Pro套件中的一个引脚,这个引脚的状态也根据外部MCU发生了变化。
谢谢
嗨,嘎,
app_button_press_cb()当你得到一个活跃的低中断到唤醒控制器。这意味着app_button_press_cb()只会在设备处于永久休眠且您得到唤醒中断时执行。如果设备仍在发布,则不会触发此回调。所以,你的设备进入永久休眠模式,你发送一个中断来唤醒你的设备,然后它是广告,回调仍然执行?我想知道你的问题是什么。
谢谢,PM_Dialog
嗨,团队,
...你发送一个中断唤醒你的设备,然后它是广告和回调仍然执行?是的,它是正确的,唤醒回调甚至在广告设计执行。
谢谢
嗨,嘎,
我想让你知道,这是一个有点奇怪的情况。请检查默认的ble_app_sleepmode示例,您将看到app_button_enable()仅被调用到void user_app_adv_unddirective_complete()函数中,因此只有当设备进入永久睡眠模式并且您得到唤醒中断时,才会触发app_button_press_cb()。在你的情况下,我不完全确定什么是你的固件。就我而言,我无法复制这个问题。如果app_按钮_press_cb()被执行多次,这意味着您向唤醒控制器发送中断的次数超过on次。您是否尝试对连接到唤醒控制器的GPIO出问题?
谢谢,PM_Dialog