大家好,
我已经在使用SDK 5.0.2.1中的ble_app_外围设备示例进行UART数据传输。
我需要在ble_app_peripheral的例子中添加睡眠模式特性。
要求是,
现有的代码应该进入睡眠模式,当我从外部MCU发送GPIO中断(通过任何GPIO引脚)。
(默认情况下,睡眠应关闭,其应为发送/接收数据,外部MCU将在运行时设置/打开睡眠模式)
我还想使用相同的gpio引脚来禁用/唤醒睡眠模式,比如切换。
请分享您对本网站的看法。
谢谢,
设备:
大家好,
请分享您对本网站的看法。
谢谢,
嗨gak,
谢谢你对DA14580感兴趣,
支持DA14580的最新SDK版本是5.0.4版本,您可以参考。
我们已经提供了一个应用程序ble_app_sleepmode.演示如何使用
睡眠模式API和在运行时更改睡眠模式。对于DA14580,有两种睡眠模式可用:
●扩展睡眠模式
● 深度睡眠模式
在本例中,用户可以通过按下按钮唤醒设备。按下按钮后,设备将在预定义的时间内再次开始播发,然后进入睡眠状态。
你可以为外围设备的例子使用/添加这些api。
如果您有更多问题,请告诉我们。
问候
IBA_DIALOG.
大家好,
谢谢你的支持,
按照你的建议,我使用from pressing button来唤醒(如果按下按钮,唤醒回调只调用一次)。
通过使用唤醒中断处理程序(wkupct\u register\u callback(app\u button\u press\u cb))和(wkupct\u enable\u irq())工作正常。
我想使用一些GPIO引脚(port1_pin3)来代替按钮唤醒。
对于这个我是保留的,配置GPIO引脚并注册我的回调(wkupct_register_callback(app_button_press_cb)),并启用GPIO引脚并设置极性(高)到适当的引脚(wkupct_enable_irq())。
GPIO的输入是高的,过了一段时间它就低了。(就像按按钮一样)
在这个时候,唤醒呼叫被调用,唤醒工作正常。
但是,即使GPIO将变低,也始终会调用唤醒回调(GPIO状态由万用表检查-剩余电压仅为0.0伏)。
这里编程像“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针将低,唤醒回叫是不应该调用。
只有GPIO引脚处于High stat状态时,才应调用它。
另外,我想知道这个唤醒功能如何完美地适用于按键?
按一次=呼叫一次唤醒。
SDK中没有使用wkupct_disable_irq()回调函数。
请解释一下。
请尽快证明您对此的支持。
谢谢,
嗨gak,
很高兴您能够通过按下按钮并按照IBA_Dialaog的说明唤醒您的设备。但是,我需要澄清一下你们试图实现的内容。很抱歉,但是我不能完全理解你想要完成的是什么,所以让我问你一些问题,把事情弄清楚。
(默认情况下,睡眠应关闭,其应为发送/接收数据,外部MCU将在运行时设置/打开睡眠模式)
我还想使用相同的gpio引脚来禁用/唤醒睡眠模式,就像切换一样。”
如果我理解正确,那么设备将最初处于活动模式,它应该能够通过UART发送或接收数据。你想用gpio中断实施什么?您希望在扩展睡眠模式下收到中断并设置您的设备吗?如何将睡眠模式配置从活动模式更改为扩展睡眠模式?GPIO中断由外部MCU驱动?请注意,由于设备进入扩展休眠模式,因此所有外设块都会关闭,因此您将无法进行UART活动。
为了获得更多关于SDK的ble_app_睡眠模式示例的信息,我强烈建议您阅读
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发送任何数据。但是,当从睡眠中醒来时,它应该恢复像广告/数据传输的旧状态。
请尽快为您提供支持。
谢谢,
嗨gak,
你能按顺序检查一下下面的帖子吗?
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-semicondiondiondiondum/forums/post/dialog-smartbond-bl.,并不是给我一个精确的答案。
我想使用GPIO P1_3唤醒DA14580使用wkupct_irq。
代码更改,
#define gpio_button_port gpio_port_0.
#define gpio_button_pin gpio_pin_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秒调用一次。
但它不应该像SW2/SW3压力机一样调用每个3sec及其工作。
请尽快提供您的支持
联系:
J5-DA14580中的第5个引脚
跳线用于连接外部MCU GPIO引脚到DA14580 GPIO P1_3。
谢谢,
嗨gak,
如果我理解正确,您希望从pin_3唤醒设备,并删除SW3和SW2的唤醒功能。那是对的吗?您是否在user_periph_setup中配置了PIN1_3?对不起,但我有点混淆你的描述,你能解释一下你想要完成的事情吗?你想从哪个GPIO中醒来?Pin0.1是做什么的?请您可以上传配置和PIN1_3的唤醒过程吗?
谢谢,PM_Dialog
大家好,
如果我理解正确,您希望从pin_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
大家好,
…您发送一个中断来唤醒您的设备,然后它正在播发,并且回调仍在执行?是的,它是正确的,即使是播发中的designe也会执行唤醒回调。
谢谢,
嗨gak,
我想让你知道这有点奇怪的情况。请检查默认BLE_APP_SLEEPMODE示例,您将看到APP_BUTTON_ENABLE()仅调用为void user_app_add_undirect_complete()函数,因此才会在设备进入永久睡眠模式时触发APP_BUTTON_PRESS_CB()打断。在您的情况下,我并不完全确定您的固件是什么。在我的情况下,我无法复制这个问题。如果app_button_press_cb()是多次执行的,这意味着您就会超过唤醒控制器将中断发送到唤醒控制器。您是否尝试过连接到唤醒控制器的GPIO?
谢谢,PM_Dialog