嗨,团队,
我已经在SDK 5.0.2.1中使用ble_app_peripheral示例进行UART数据传输。
我需要在BLE_APP_PERITIVELAL示例中添加睡眠模式功能。
要求是,
现有代码应转到睡眠模式,而我从外部MCU发送GPIO中断(通过任何GPIO引脚)。
(默认睡眠应该关闭,它应该发送/接收数据,外部MCU将在运行时设置/ON睡眠模式)
我还想禁用/唤醒睡眠模式使用相同的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.0v)。
这里是“wkupct_enable_irq(wkupct_pin_select(gpio_port_1,gpio_pin_3),//选择pin(gpio_button_port,gpio_button_pin)的编程
wkupct_pin_极性(GPIO_PORT_1, GPIO_PIN_3, WKUPCT_PIN_POLARITY_HIGH), //极性低
1,// 1事件
“那就是我被利用了。”
我的期望是,GPIO引脚将会低,唤醒回电不应该调用。
只有GPIO管脚处于高stat状态时才应该调用它。
我还想知道这个唤醒功能如何完美的工作按钮按下?
按一次=叫醒一次,回叫。
SDK中没有wkupct_disable_irq()回调。
这也解释。
请尽快证明你的支持。
谢谢,
嗨GAK,
很高兴能够通过按钮按下并按照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)进入Extended sleep模式(通过外部MCU驱动的GPIO中断)
步骤3)设备从睡眠模式唤醒(通过外部MCU的GPIO中断)
步骤4)唤醒后设备应准备好传输数据
GPIO中断由外部MCU驱动?是的,
请注意,由于设备进入扩展休眠模式,所有外围设备块将被关闭,因此您将无法进行UART活动。<<是,在睡眠模式下不需要通过UART发送任何数据。但当从睡眠中醒来时,它应该恢复旧的状态,如广告/数据传输。
请尽快提供您的支持。
谢谢,
嗨GAK,
你能按顺序检查一下下面的帖子吗?
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。
此帖子可能会帮助您捕获外部MCU生成的中断,并且您应该调用app_easy_gap_advertise_stop函数。此外,您还可以检查无附加参考应用程序代码。使用此应用程序,您可以通过UART发送到DA14580的命令,因此您可以通过在命令中发送相应的休眠模式以扩展睡眠模式配置设备
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......“,对我来说并不是一个完整的解决方案。
我想通过使用WKUPCT_IRQ使用GPIO P1_3来唤醒DA14580。
代码更改是,
#定义GPIO_BUTTON_PORT GPIO_PORT_0
#定义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后,即使GPIO P1_3变高,wkupct irq也会每3秒被调用一次。
但它不应该每3秒调用一次,它的工作方式类似SW2/SW3按键。
请尽快提供您的支持
连接:
J5 - DA14580的第5引脚
跳线用于将外部MCU GPIO引脚连接到DA14580 GPIO P1_3。
谢谢,
嗨GAK,
如果我理解正确,您希望从pin_3唤醒设备,并删除SW3和SW2的唤醒功能。那是正确的吗?您是否在user_peripher_setup中配置了Pin1_3 ?抱歉,我对你的描述有点困惑,你能解释一下你想要完成的是什么吗?你想从哪个GPIO中醒来?Pin0.1是做什么的?能否上传一下Pin1_3的配置和叫醒步骤?
谢谢,PM_DIALOG.
嗨,团队,
如果我理解正确,您希望从PIN1_3唤醒设备,并从SW3和SW2中删除唤醒功能。<<<是的它是正确的。
你想从哪个GPIO中醒来?<<<< GPIO P1_3正在使用。
Pin0.1是做什么的?<<抱歉,错误使用。使用了gpio p1_3。
请找到上传的文件供参考。
谢谢,
嗨GAK,
根据你的描述,P1_3是高有源的,外部MCU是由低到高触发的,对吗?如果是,您应该更改极性,因为在您所附加的代码片段中,您使用的是WKUPCT_PIN_POLARITY_LOW极性。按钮被配置为INPUT_PULLUP,所以唤醒控制器被触发时,GPIO达到低,这就是为什么灌木按钮的极性是低的。在你的情况下,你应该做相反的事。此外,您应该将p_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多次触发?>>我通过外部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()只到空白user_app_adv_undirect_complete()函数,所以app_button_press_cb()将被触发只有当设备进入永久的睡眠模式,你会得到一个唤醒中断。在你的情况下,我不完全确定你的固件是什么。在我的情况下,我无法复制这个问题。如果app_button_press_cb()被执行了多次,这意味着你将中断发送给唤醒控制器的次数多于一次。你是否试图使连接到唤醒控制器的GPIO出现问题?
谢谢,PM_DIALOG.