嗨,团队,
我已经在SDK 5.0.2.1中使用ble_app_peripheral示例进行UART数据传输。我需要在ble_app_外围设备示例中添加睡眠模式功能。要求是,,当我从外部MCU(通过任何GPIO引脚)发送GPIO中断时,现有代码应该进入睡眠模式。(默认睡眠应该关闭,它应该发送/接收数据,外部MCU将在运行时设置/ON睡眠模式)我还想禁用/唤醒睡眠模式使用相同的gpio引脚像切换。
请分享你对这个ASPS的看法。
谢谢
嗨,嘎,
感谢您对DA14580的关注,
支持DA14580的最新SDK版本是5.0.4版本,您可以参考它。
我们已经提供了一个应用程序ble_应用程序_睡眠模式演示如何使用睡眠模式API,并在运行时更改睡眠模式。DA14580有两种睡眠模式:● 延长睡眠模式●深度睡眠模式
在示例中,用户可以通过按下一个按钮来唤醒设备。按下按钮后,设备将开始再次广告预定的时间,然后去睡觉。
例如,您可以使用/添加这些API。
如果您还有什么问题,请告诉我们。
当做
IBA_对话框
谢谢你的支持,
根据您的建议,我使用from pressing按钮进行了唤醒。(如果按下按钮,则只调用一次唤醒回调)它通过使用唤醒中断处理程序(wkupct_register_callback(app_button_press_cb))和(wkupct_enable_irq())工作得很好。
我想用一些GPIO引脚(端口1\U引脚3)来代替按钮进行唤醒。为此,我被保留,配置GPIO引脚并注册我的回调(wkupct_register_callback(app_button_press_cb))并启用GPIO引脚,并将极性(高)设置为适当的引脚(wkupct_enable_irq()。
GPIO的输入是高的,一段时间后它会变低。(就像按按钮一样)此时将调用唤醒回拨,唤醒工作正常。
但是,即使GPIO处于低电平,唤醒呼叫也总是被调用(GPIO状态是用万用表检查的-电压仅为0.0v)。这里的编程类似于“wkupct\U启用\U irq(wkupct\U引脚\U选择(GPIO\U端口\U 1,GPIO\U引脚\U 3)”//选择引脚(GPIO\U按钮\U端口,GPIO\U按钮\U引脚)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并在运行时更改休眠模式。
谢谢,下午好
是的,你是对的,请查找以下信息以供澄清,
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_advertive_stop函数。此外,您还可以检查无代码参考应用程序代码。使用此应用程序,您可以通过UART将AT命令发送到DA14580,以便您可以通过发送适当的AT命令
https://support.dialog-semiconductor.com/connectivity/product/da14580?qt..。
我已经在使用“唤醒计时器”块来唤醒DA14580,并且唤醒计时器在SW3(P1_1)和SW2 (P0_6)交换机上工作得很好。如上所述"https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl“…”并不是给我一个确切的解决方案。
我想使用GPIO P1_3通过wkupct_irq唤醒DA14580。代码更改是,#定义GPIO\U按钮\U端口GPIO\U端口\U 0#定义GPIO\U按钮\U引脚GPIO\U引脚\U 1(我从外部MCU(从低到高)向DA14580的(GPIO)P1_3发送信号)实际问题是,,一旦P0_1pin状态从低变为高,wkupct_回调每3秒调用一次。仅当我使用sw3/sw2时才调用一次(即,单次按下sw3/sw2时调用wkupct_irq一次)我的观察是,在将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的配置和唤醒程序好吗?
如果我理解正确,您希望从Pin1_3唤醒设备,并从SW3和SW2中删除唤醒功能。<<是,这是正确的。
您想从哪个GPIO唤醒?< Pin0.1的作用是什么抱歉,使用错误。使用了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唤醒程序示例。
谢谢大家的支持,
我在我的项目中使用了上述配置。请查看下面的行内说明,P1_3是高有源,外部MCU是由低到高触发,对吗?< < <是的。
实际情况是,当外部MCU从低到高触发时,“app_button_press_cb()”回调仅调用一次。
但在我的例子中,唤醒控制器“app_button_press_cb()”回调被触发多次(外部MCU将GPIO P1_3从高变低)。
请在这方面提供您的支持。
唤醒控制器被触发不止一次是什么意思?如果它被触发不止一次,这意味着您会被中断不止一次。请检查P1_3是否从外部MCU被触发多次?
是的,中断会被触发多次。
请在线查找下面的命令,您能检查P1_3是否从外部MCU触发多次吗?>>我通过外部MCU侧的CRO检查了P1_3的状态,但未触发多次。此外,我正在通过CRO检查DA145080 Pro套件中的同一pin,该pin的状态也会根据外部MCU而改变。
当唤醒控制器中有一个激活的低电平中断时,应用程序按钮按下应用程序cb()。这意味着应用程序按钮按下应用程序cb()将仅在设备处于永久睡眠状态且您收到唤醒中断时执行。如果设备仍在播发,则不会触发此回调。因此,您的设备进入永久睡眠模式,您发送一个中断以唤醒设备,然后它正在播发且回调仍在执行?我正在尝试理解你的问题是什么。
...你发送一个中断唤醒你的设备,然后它是广告和回调仍然执行?是的,它是正确的,唤醒回调甚至在广告设计执行。
我想让你知道,这是一个有点奇怪的情况。请检查默认的ble_app_sleepmode示例,您将看到app_button_enable()仅被调用到void user_app_adv_unddirective_complete()函数中,因此只有当设备进入永久睡眠模式并且您得到唤醒中断时,才会触发app_button_press_cb()。在你的情况下,我不完全确定什么是你的固件。就我而言,我无法复制这个问题。如果app_按钮_press_cb()被执行多次,这意味着您向唤醒控制器发送中断的次数超过on次。您是否尝试对连接到唤醒控制器的GPIO出问题?
嗨,团队,
请分享你对这个ASPS的看法。
谢谢
嗨,嘎,
感谢您对DA14580的关注,
支持DA14580的最新SDK版本是5.0.4版本,您可以参考它。
我们已经提供了一个应用程序ble_应用程序_睡眠模式演示如何使用
睡眠模式API,并在运行时更改睡眠模式。DA14580有两种睡眠模式:
● 延长睡眠模式
●深度睡眠模式
在示例中,用户可以通过按下一个按钮来唤醒设备。按下按钮后,设备将开始再次广告预定的时间,然后去睡觉。
例如,您可以使用/添加这些API。
如果您还有什么问题,请告诉我们。
当做
IBA_对话框
嗨,团队,
谢谢你的支持,
根据您的建议,我使用from pressing按钮进行了唤醒。(如果按下按钮,则只调用一次唤醒回调)
它通过使用唤醒中断处理程序(wkupct_register_callback(app_button_press_cb))和(wkupct_enable_irq())工作得很好。
我想用一些GPIO引脚(端口1\U引脚3)来代替按钮进行唤醒。
为此,我被保留,配置GPIO引脚并注册我的回调(wkupct_register_callback(app_button_press_cb))并启用GPIO引脚,并将极性(高)设置为适当的引脚(wkupct_enable_irq()。
GPIO的输入是高的,一段时间后它会变低。(就像按按钮一样)
此时将调用唤醒回拨,唤醒工作正常。
但是,即使GPIO处于低电平,唤醒呼叫也总是被调用(GPIO状态是用万用表检查的-电压仅为0.0v)。
这里的编程类似于“wkupct\U启用\U irq(wkupct\U引脚\U选择(GPIO\U端口\U 1,GPIO\U引脚\U 3)”//选择引脚(GPIO\U按钮\U端口,GPIO\U按钮\U引脚)
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并在运行时更改休眠模式。
谢谢,下午好
嗨,团队,
是的,你是对的,
请查找以下信息以供澄清,
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_advertive_stop函数。此外,您还可以检查无代码参考应用程序代码。使用此应用程序,您可以通过UART将AT命令发送到DA14580,以便您可以通过发送适当的AT命令
https://support.dialog-semiconductor.com/connectivity/product/da14580?qt..。
谢谢,下午好
嗨,团队,
我已经在使用“唤醒计时器”块来唤醒DA14580,并且唤醒计时器在SW3(P1_1)和SW2 (P0_6)交换机上工作得很好。
如上所述"https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl“…”并不是给我一个确切的解决方案。
我想使用GPIO P1_3通过wkupct_irq唤醒DA14580。
代码更改是,
#定义GPIO\U按钮\U端口GPIO\U端口\U 0
#定义GPIO\U按钮\U引脚GPIO\U引脚\U 1
(我从外部MCU(从低到高)向DA14580的(GPIO)P1_3发送信号)
实际问题是,,
一旦P0_1pin状态从低变为高,wkupct_回调每3秒调用一次。
仅当我使用sw3/sw2时才调用一次(即,单次按下sw3/sw2时调用wkupct_irq一次)
我的观察是,在将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的配置和唤醒程序好吗?
谢谢,下午好
嗨,团队,
如果我理解正确,您希望从Pin1_3唤醒设备,并从SW3和SW2中删除唤醒功能。<<是,这是正确的。
您想从哪个GPIO唤醒?<
Pin0.1的作用是什么抱歉,使用错误。使用了GPIO P1_3。
请查找上传的文件供参考。
谢谢
嗨,嘎,
根据您的描述,P1_3处于高激活状态,外部MCU从低到高触发,对吗?如果是,则应更改极性,因为在附加的代码段中,您使用的是WKUPCT_PIN_polarity_LOW polarity。该按钮配置为INPUT_PULLUP,因此当GPIO变为low(低)时会触发唤醒控制器,这就是布什按钮极性低的原因。在你的情况下,你应该做相反的事情。此外,您应该将P1_3配置为输入_下拉菜单,并使用WKUPCT_引脚_极性_高。请参阅随附的P1_3唤醒程序示例。
谢谢,下午好
嗨,团队,
谢谢大家的支持,
我在我的项目中使用了上述配置。
请查看下面的行内说明,
P1_3是高有源,外部MCU是由低到高触发,对吗?< < <是的。
实际情况是,当外部MCU从低到高触发时,“app_button_press_cb()”回调仅调用一次。
但在我的例子中,唤醒控制器“app_button_press_cb()”回调被触发多次(外部MCU将GPIO P1_3从高变低)。
请在这方面提供您的支持。
谢谢
嗨,嘎,
唤醒控制器被触发不止一次是什么意思?如果它被触发不止一次,这意味着您会被中断不止一次。请检查P1_3是否从外部MCU被触发多次?
谢谢,下午好
嗨,团队,
是的,中断会被触发多次。
请在线查找下面的命令,
您能检查P1_3是否从外部MCU触发多次吗?>>我通过外部MCU侧的CRO检查了P1_3的状态,但未触发多次。
此外,我正在通过CRO检查DA145080 Pro套件中的同一pin,该pin的状态也会根据外部MCU而改变。
谢谢
嗨,嘎,
当唤醒控制器中有一个激活的低电平中断时,应用程序按钮按下应用程序cb()。这意味着应用程序按钮按下应用程序cb()将仅在设备处于永久睡眠状态且您收到唤醒中断时执行。如果设备仍在播发,则不会触发此回调。因此,您的设备进入永久睡眠模式,您发送一个中断以唤醒设备,然后它正在播发且回调仍在执行?我正在尝试理解你的问题是什么。
谢谢,下午好
嗨,团队,
...你发送一个中断唤醒你的设备,然后它是广告和回调仍然执行?是的,它是正确的,唤醒回调甚至在广告设计执行。
谢谢
嗨,嘎,
我想让你知道,这是一个有点奇怪的情况。请检查默认的ble_app_sleepmode示例,您将看到app_button_enable()仅被调用到void user_app_adv_unddirective_complete()函数中,因此只有当设备进入永久睡眠模式并且您得到唤醒中断时,才会触发app_button_press_cb()。在你的情况下,我不完全确定什么是你的固件。就我而言,我无法复制这个问题。如果app_按钮_press_cb()被执行多次,这意味着您向唤醒控制器发送中断的次数超过on次。您是否尝试对连接到唤醒控制器的GPIO出问题?
谢谢,下午好