跳转到主要内容

dsp使用扩展GPIO控制进入睡眠和醒来。

5年前

dsp使用扩展GPIO控制进入睡眠和醒来。

发布的车道0点 12个回复
0的问题

嗨对话框

有一些问题,我使用需求方3.150.2设备项目数据传输。da4580_config。h是设置为:
#定义CFG_EXT_SLEEP
# undef CFG_DEEP_SLEEP
但是,当我与我的同伴divce,它也进入睡眠模式和数据传输将会丢失,所以我想知道如何设置一个GPIO唤醒,以确保达没有进入睡眠,我是通过根据《- b - 026 DA14580外部唤醒机制》配置:

#定义EXTERNAL_WAKEUP 1
……
ext_wakeup_enable (UART1_CTSN_GPIO_PORT UART1_CTSN_GPIO_PIN 1);
……
是任何其他设置我已经修改后的GPIO哒。

谢谢大家

5年前

MT_dialog -30点

你好,

你为了检查如何启用外部唤醒机制以及如何注册一个回调函数,请看看智能标记的参考设计app_button_press_cb()函数。也请看看文档嗯- b - 051在10.7节唤醒定时器。

由于MT_dialog

5年前

车道 0点

嗨,对话框中,
读过文档的10.7节- b - 051,和设置程序。但DA14580仍然在睡觉
这是我的代码DA睡觉前:
app_set_extended_sleep ();
app_ble_ext_wakeup_on ();
ext_wakeup_enable (UART1_CTS_PORT UART1_CTS_PIN 1);
渣打银行- >可控硅| = 1 < < 2;/ /启用sleepdeep模式在系统控制寄存器(SCR [2] = sleepdeep)
SetBits16 (SYS_CTRL_REG PAD_LATCH_EN 1);/ /激活垫门闩
SetBits16 (PMU_CTRL_REG RADIO_SLEEP 1);/ /关闭收音机
SetBits16 (PMU_CTRL_REG PERIPH_SLEEP 0);/ /关闭周边电力领域
SetBits16 (SYS_CTRL_REG RET_SYSRAM 1);/ /关闭系统内存= >所有数据将丢失
函数“ext_wakeup_enable ()”:
空白ext_wakeup_enable (uint32_t端口、uint32_t销uint8_t极性)
{
rwip_env。ext_wakeup_enable = 2;
#如果DEVELOPMENT_DEBUG
RESERVE_GPIO (EXT_WAKEUP_GPIO (GPIO_PORT)端口,(GPIO_PIN)销,PID_GPIO);
# endif
RESERVE_GPIO (EXT_WAKEUP_GPIO (GPIO_PORT)端口,(GPIO_PIN)销,PID_GPIO);
如果(极性= = 0)/ /活性低
GPIO_ConfigurePin ((GPIO_PORT)端口(GPIO_PIN)销,INPUT_PULLUP, PID_GPIO,假);/ /活性低。设置默认输入高。
/ /其他活性高
GPIO_ConfigurePin ((GPIO_PORT)端口(GPIO_PIN)销,INPUT_PULLDOWN, PID_GPIO,假);/ /活性高。设置默认输入低。

wkupct_register_callback (ext_wakeup_cb);

wkupct_enable_irq (1 <

5年前

车道 0点

5年前

MT_dialog -30点

你好,

请跟智能标记的例子参考设计为了醒来,检查app_button_press_cb()函数(醒来的da按钮)。你可以检查配置是否可以通过使用一个按钮来唤醒它,然后实现CTS醒来。

由于MT_dialog

5年前

车道 0点

非常感谢,我已经发现了问题,它已经解决。as遵循:
在“wkupct_enable_irq()函数”是说:@param[在]sel_pins选择启用输入。位鹿港- > 0 (P00 . . P07),位8日至13日- >端口1 (P10 . . P15),位14日至15日- >端口2 (P28,第29页),位- > 16-23端口2 (P00 . . P07),位24-31 - >港口3 (e . . P37)。0-disabled 1-enabled。
我使用P2_3端口醒来,但在函数”ext_wakeup_enable(),线是wkupct_enable_irq (1 <

5年前

CD 0点

由于车道和MT_dialog,

我只是遇到了同样的问题。道应该是正确的。在SDK 5.0.3函数(也SDK 3. x.x)似乎有一个问题…


空白ext_wakeup_enable (uint32_t端口、uint32_t销uint8_t极性)
{
rwip_env。ext_wakeup_enable = 2;
#如果DEVELOPMENT_DEBUG
RESERVE_GPIO (EXT_WAKEUP_GPIO (GPIO_PORT)端口,(GPIO_PIN)销,PID_GPIO);
# endif
如果(极性= = 0)/ /活性低
GPIO_ConfigurePin ((GPIO_PORT)端口(GPIO_PIN)销,INPUT_PULLUP, PID_GPIO,假);/ /活性低。设置默认输入高。
/ /其他活性高
GPIO_ConfigurePin ((GPIO_PORT)端口(GPIO_PIN)销,INPUT_PULLDOWN, PID_GPIO,假);/ /活性高。设置默认输入低。

wkupct_register_callback (ext_wakeup_cb);

wkupct_enable_irq(1 < <销(uint32_t)(极性= = 0)?(1 < <销):(0),1,0);/ /销活动低/高1事件,消除抖动时间= 0 ms
}

如果我们调用这个函数:
ext_wakeup_enable (GPIO_PORT_2 GPIO_PIN_3 0)
这个方法调用wkupct_enable_irq ()函数与错误的参数最后。
wkupct_enable_irq()函数所需要的以下参数:

/ * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @brief启用唤醒IRQ。
*
* @param[在]sel_pins选择启用输入。位鹿港- > 0(港口00 . . P07),位8日至13日- >端口1 (P10 . . P15),位14日至15日- >端口2 (P28,第29页),位- > 16-23端口2(港口00 . . P07),位24-31 - >港口3 (e . . P37)。0-disabled 1-enabled。
* @param[在]pol_pins输入的极性。位鹿港- > 0(港口00 . . P07),位8日至13日- >端口1 (P10 . . P15),位14日至15日- >端口2 (P28,第29页),位- > 16-23端口2(港口00 . . P07),位24-31 - >港口3 (e . . P37)。0-high 1-low。
* @param[在]events_num唤醒中断之前的事件数量。Max 255。
* @param[在]deb_time消除抖动时间。马克斯0 x3f。
*
* @return无效
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* /
空白wkupct_enable_irq (uint32_t sel_pins, uint32_t pol_pins, uint16_t events_num, uint16_t deb_time)

如果有好的解决方案来解决这个,请让我知道。

提前谢谢你的支持。

最好的问候,
CD

5年前

MT_dialog -30点

嗨,CD,

ext_wakeup_enable是应该使用一个函数,只有完整的嵌入式设计,这个实现不适合的原因你想使用它。使用醒来控制器请使用的API实现唤醒司机。你可以找到例子参考设计中类似于ext_wakeup_enable的实现。

由于MT_dialog

5年前

CD 0点

嗨MT_dialog,

谢谢你的快速回复。

对不起,我感到困惑……请让我确认东西....

1。我的环境,我想使用DA14583作为完整的嵌入式设计。
2。你的评论是:

ext_wakeup_enable是应该使用一个函数,只有完整的嵌入式设计,这个实现不适合的原因你想使用它。

我可以用ext_wakeup_enable完整的嵌入式设计系统()函数吗?或者你想意味着ext_wakeup_enable()函数应该使用“外部处理器运行主机应用程序”?
在源代码中,有一些评论这些事情,但我很困惑…

——da1458x_config_advanced。h -

64 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
65 / *唤醒外部处理器运行主机应用程序。* /
66 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
67 # undef CFG_EXTERNAL_WAKEUP

——拱。h -

210 #如果定义(CFG_EXTERNAL_WAKEUP)
211 # define EXTERNAL_WAKEUP 1
其他212 #
213 # define EXTERNAL_WAKEUP 0
214 # endif
.....
388 # ((EXTERNAL_WAKEUP) & & (! BLE_APP_PRESENT)) / /外部醒来,只在完整的嵌入式设计
389无效ext_wakeup_enable (uint32_t端口,uint32_t销uint8_t极性);
390年空白ext_wakeup_disable(无效);
391年空白ext_wakeup_cb(无效);
392 # endif

——arch_main。c -
静态内联空白arch_goto_sleep (sleep_mode_t current_sleep_mode)
{
sleep_mode_t sleep_mode = current_sleep_mode;
ble_turn_radio_off ();
/ /关闭收音机和检查如果我们能进入深度睡眠
sleep_mode = ble_validate_sleep_mode (sleep_mode);
/ /授权访问应用程序,以检查是否我们可以去睡觉
app_sleep_prepare_proc (&sleep_mode);/ / SDK改善均匀性应该改变?
/ /关闭外设根据当前的睡眠模式
arch_turn_peripherals_off (sleep_mode);
#如果(USE_POWER_OPTIMIZATIONS)
fine_hit = false;
# endif
/ /应用程序特定的任务就在睡觉
app_sleep_entry_proc (sleep_mode);
#如果((EXTERNAL_WAKEUP) & & (! BLE_APP_PRESENT)) / /外部醒来,只在外部处理器设计
ext_wakeup_enable (GPIO_PORT_2 GPIO_PIN_2 0);
# endif
/ /做的最后的房子保持时钟和睡觉
arch_switch_clock_goto_sleep (sleep_mode);
}

——arch_system。c -
#如果((EXTERNAL_WAKEUP) & & (! BLE_APP_PRESENT)) / /只完整的嵌入式设计
/ * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @brief启用外部醒来GPIO中断。
* @param[在]GPIO_PORT。的港口外部醒来的信号
* @param[在]GPIO_PIN。的销的外部信号醒来
* @param[在]极性。外部中断醒来的极性。0 =活性低。1 =活性高
* @return空白。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* /
空白ext_wakeup_enable (uint32_t端口、uint32_t销uint8_t极性)
{
rwip_env。ext_wakeup_enable = 2;
如果(DEVELOPMENT_DEBUG)
RESERVE_GPIO (EXT_WAKEUP_GPIO (GPIO_PORT)端口,(GPIO_PIN)销,PID_GPIO);
如果(极性= = 0)/ /活性低
GPIO_ConfigurePin ((GPIO_PORT)端口(GPIO_PIN)销,INPUT_PULLUP, PID_GPIO,假);/ /活性低。设置默认输入高。
/ /其他活性高
GPIO_ConfigurePin ((GPIO_PORT)端口(GPIO_PIN)销,INPUT_PULLDOWN, PID_GPIO,假);/ /活性高。设置默认输入低。
wkupct_register_callback (ext_wakeup_cb);
wkupct_enable_irq(1 < <销(uint32_t)(极性= = 0)?(1 < <销):(0),1,0);/ /销活动低/高1事件,消除抖动时间= 0 ms
}

正如我上面列出的,有相同# if语句“#如果((EXTERNAL_WAKEUP) & & (! BLE_APP_PRESENT))”的评论,但这些都是混合着完整的嵌入式和外部处理器每一个文件或一个函数。
如果我使用DA1458x作为一个完整的嵌入式设计,我应该的代码,有下列情形之一的,是正确的吗? ? ?:

# undefCFG_EXTERNAL_WAKEUP

在arch_goto_sleep和ext_wakeup_enable()()函数并不是完整的嵌入式设计系统时调用,不是吗? !我的理解是正确的吗? ! ?
所以,正如你提到的,我们必须使用控制器醒来醒来在完整的嵌入式设计系统。我相信醒来将类似的代码:
1:注册回调函数,当系统醒来:使用wkupct_register_callback ()
第二:启用IRQ唤醒:wkupct_enable_irq (0 x40000, 0 x40000, 1,0);/ /例如P2_2, P2_2活性低,1事件,消除抖动时间= 0 ms
我的系统似乎醒来当我上面的编码。(让我看看一些示例项目对话框对GPIO唤醒)。

3所示。尽管ext_wakeup_enable()同志只完整的嵌入式(或外部处理器主机?)设计,ext_wakeup_enable arch_system()函数。c似乎错了,正如巷也提到的,我认为。
ext_wakeup_enable()函数需要三个参数,唤醒GPIO港口,销和极性。因此,如果用户希望醒来P2_2活性较低的事件,用户称之为:ext_wakeup_enable (GPIO_PORT_2 GPIO_PIN_2 0)。
另一方面,在ext_wakeup_enable()函数,(即港口信息。GPIO_PORT_2)是完全迷失了方向。wkupct_enable_irq()函数需要一些表达式选择端口和销包括端口信息。当前代码ext_wakeup_enable()只能PORT_0处理信号变化。(换句话说,ext_wakeup_enable (GPIO_PORT_2 GPIO_PIN_2 0)将修改为GPIO_PORT_0, GPIO_PIN_2 ext_wakeup_enable活性较低的事件()函数。

抱歉为我的回复,但如果你能提供任何评论,感谢。

谢谢你的大力支持。

最好的问候,
CD

5年前

MT_dialog -30点

嗨,CD,

只是一些澄清完全mbeded - >应用程序运行在外部单片机,全面主持DA - >应用程序运行

我没有意识到你正在使用一个完全嵌入式设计(从外部主机运行),因为你是,那么是的,你可以使用该功能。问题是,代码假设你要只使用别针从端口0。这部分必须纠正,并将在未来SDK版本。如果你要使用一个完整的嵌入式设计和运行您的应用程序从外部主机和你想让你的设备从外部单片机醒来然后你必须配置外部醒来。ext_wakeup_enable()用于完整的嵌入式设计(因为外部proccessor)的应用程序应该醒来。如果你的设计是完全承载那么你应该使用你提到的代码。

由于MT_dialog

5年前

CD 0点

嗨太,

非常感谢您的评论。
是的,你是对的。我混合了“嵌入式”与“完全托管”。我很抱歉关于这个…

正如你提到的,我们想使用DA1458x作为“完全托管”设计(使用DA作为集成处理器)。

所以我必须代码追随者,对吧?

# undefCFG_EXTERNAL_WAKEUP
注册回调函数,当系统唤醒:使用wkupct_register_callback ()
启用IRQ唤醒x40000 x40000: wkupct_enable_irq (0, 0, 1, 0);/ /例如P2_2, P2_2活性低,1事件,消除抖动时间= 0 ms

再次感谢,
CD

5年前

MT_dialog -30点

嗨,CD,

是的,这是正确的,注册您的回调(wkupct_register_callback(函数),使针和极性到适当的销(wkupct_enable_irq ())。

由于MT_dialog

5年前

CD 0点

嗨太,

非常感谢你的确认。
现在,很明显! !

非常感谢,
CD