嗨,团队,
我已经在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_polar (GPIO_PORT_1, GPIO_PIN_3, wkupct_pin_polity_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-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之后,每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_外围设置中配置了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极性。push button被配置为INPUT_PULLUP,所以当GPIO变低时唤醒控制器被触发,这就是bush button的极性变低的原因。在这种情况下,你应该做相反的事。此外,您应该将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,
你说唤醒控制器被触发不止一次是什么意思?如果它被触发不止一次,这意味着您得到一个中断不止一次。请检查外部MCU是否多次触发P1_3 ?
谢谢,PM_DIALOG.
嗨,团队,
是的,中断被触发不止一次。
请找到下面的内联,
请检查外部MCU是否多次触发P1_3 ?>> I通过External 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.