大家好!
我正在DSPS源代码工作,正在处理如何通过UART从扩展睡眠模式唤醒的问题。我已经通过在da14580_config.h中添加#define CFG_EXT_SLEEP定义了扩展睡眠模式。结果,我看到我只是从UART接收了一些离散的数据(这可能是由睡眠模式引起的)。我的目标是如何在定义了“CFG_EXT_SLEEP”之后仍然可以从UART接收正常数据。任何回复都将不胜感激。
问候,
钟Tran。
有人能帮我解答这个问题吗?的问候!
嗨chungtran
如果我没理解错的话,你是想把你的外设设为延长睡眠。根据我们的理解,这种情况发生在A)设备空闲且未连接或B)它是连接的,在与远程通信事件之间。在这两种情况下,您都应该从外部处理器(连接到580 UART的处理器)唤醒设备。为此你需要实现一个唤醒机制。有两个选项你可以实现这个:
Sol1)您可以使用硬件流控制和RTS/CTS来从睡眠中唤醒。Sol2)你可以使用Rx/Tx。在这种情况下,应该存在软件流控制。在flow off命令之后,将Tx设置为0,表示设备处于睡眠状态。要唤醒设备,切换Rx。等待TX变高并接收在发送实际数据之前的Flow On命令,给你的设备唤醒时间。我们建议使用Sol1。
由于MT_dialog
嗨MT_Dialog,
谢谢你有用的回答!但是你能详细告诉我RTS/CTS信号该怎么处理吗?它是否使用唤醒定时器和正交解码器驱动程序?
钟tran。
你好,
我如何通过RTS/CTS将14580进入扩展睡眠模式?
我已经将设备配置为#define CFG_EXT_SLEEP
然而,目前的绘制大约是600uA。
对不起,我好像误会你的问题了。
你能告诉我你到底想做什么吗?你的第一篇文章“收到一些离散数据”是什么意思?正常数据对你来说意味着什么?您是否对现有的参考设计有问题,或者您正在尝试做其他事情?
这是我的情况:D
我正在做DSPS参考设计。我已经通过在da14580_config.h中定义CFG_EXT_SLEEP测试了扩展睡眠模式。我意识到DSPS在延长睡眠模式下工作得很好,但我无法接收从我的android设备发送到Da14580的数据。(我认为这可能是由睡眠模式引起的)。这样,我可以从android设备发送数据到DA14580,并定义扩展睡眠模式吗?我的意思是芯片将一直处于睡眠状态,当有传入数据(外部唤醒事件)时才从睡眠模式中唤醒。
嗨chungtran,
我以为你们在试图修改参考设计。很抱歉搞混了。
当然,你可以从你的android设备发送数据,这不是延长睡眠的责任,请检查你的dev-kit上的连接,并参阅用户手册UM-B-038。da在每个连接间隔(而不是每次有传入数据时)中休眠和唤醒。
嗨MT_dialog,
非常感谢你的明确回答!我明白了!因此,如果我想使用uart通信来触发(唤醒)DA,这可能吗?我的想法是,我将使用唤醒定时器和正交解码器驱动程序来处理uart pin_port。这是我的代码,我已经添加到app_sps_device_project.c和它似乎为我工作:
空白app_uart_data_trans_incoming(空白){// Init System Power Domain block: GPIO, WD Timer, Sys Timer等如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))//退出睡眠模式后重新启动外围设备periph_init ();
//当出现输入数据时触发wkupct_register_callback (app_uart_data_trans_idle);// uart事件抵抗器Wkupct_enable_irq (0x20, 0x00, 1,0);// P0_5 (UART Rx),极性高(0高1低)1个事件,跳线时间= 0
App_uart_status = 1;
if(ke_state_get(TASK_APP) == APP_CONNECTABLE){//在这里唤醒BLE
app_ble_force_wakeup ();app_ble_ext_wakeup_off ();
//SetBits32(GP_CONTROL_REG, BLE_WAKEUP_REQ, 1);
ke_msg_send_basic(APP_WAKEUP_MSG, TASK_APP, NULL);}}
谢谢
你想做什么?您想要唤醒连接事件之间的da以实现更快的响应?您想断开外围设备与中心的连接,并将da设置为永久睡眠状态,直到新数据到达da的uart,然后再唤醒?
嗨,MT Dialog,
是的,我的目标是我想将DA设置为永久睡眠,直到新的数据到达DA的uart,然后唤醒。问候,
Chungtran。
在你的代码中,你正在使用Rx引脚来唤醒芯片(在我的理解中),你的芯片是否唤醒和传输,但你在输出中经历了损坏的数据?你必须考虑到芯片需要一些时间才能从睡眠中醒来,请建议帖子#3。
是的,我的意思是DA似乎唤醒和传输数据,但有时当我调试我的代码,然后它不工作!你能详细告诉我DA需要从睡眠中醒来的时间吗?是否可以设置为0,因为我希望它在有传入数据后立即被唤醒。
芯片在大约3-4毫秒内完成唤醒过程(但这取决于SDK,如果是581或580芯片,你可以从智能片段中计算唤醒时间),没有办法覆盖....这就是为什么在通过蓝牙传输任何东西之前,你必须切换Rx并等待。
非常感谢你的帮助!但是你能告诉我你给我推荐的两个解决方案我该怎么做吗?如何使用CTS/RTS信号解决我的问题?
Chungtran
在解决方案2中,您说“设置您的Tx为0,在流量关闭命令后,表示设备处于睡眠状态。要唤醒设备,切换Rx。等待TX变高并接收在发送实际数据之前,使用Flow On命令,给你的设备唤醒时间。”我搞糊涂了!你能给我一个示例代码或任何已经定义了这个的参考设计吗?
Ragards,
对不起,上面的场景没有实现代码。
我明白了。谢谢
有人能帮我解答这个问题吗?的问候!
嗨chungtran
如果我没理解错的话,你是想把你的外设设为延长睡眠。根据我们的理解,这种情况发生在
A)设备空闲且未连接或
B)它是连接的,在与远程通信事件之间。
在这两种情况下,您都应该从外部处理器(连接到580 UART的处理器)唤醒设备。为此你需要
实现一个唤醒机制。有两个选项你可以实现这个:
Sol1)您可以使用硬件流控制和RTS/CTS来从睡眠中唤醒。
Sol2)你可以使用Rx/Tx。在这种情况下,应该存在软件流控制。
在flow off命令之后,将Tx设置为0,表示设备处于睡眠状态。要唤醒设备,切换Rx。等待TX变高并接收
在发送实际数据之前的Flow On命令,给你的设备唤醒时间。
我们建议使用Sol1。
由于MT_dialog
嗨MT_Dialog,
谢谢你有用的回答!但是你能详细告诉我RTS/CTS信号该怎么处理吗?它是否使用唤醒定时器和正交解码器驱动程序?
问候,
钟tran。
你好,
我如何通过RTS/CTS将14580进入扩展睡眠模式?
我已经将设备配置为#define CFG_EXT_SLEEP
然而,目前的绘制大约是600uA。
嗨chungtran
对不起,我好像误会你的问题了。
你能告诉我你到底想做什么吗?你的第一篇文章“收到一些离散数据”是什么意思?正常数据对你来说意味着什么?您是否对现有的参考设计有问题,或者您正在尝试做其他事情?
由于MT_dialog
嗨MT_Dialog,
这是我的情况:D
我正在做DSPS参考设计。我已经通过在da14580_config.h中定义CFG_EXT_SLEEP测试了扩展睡眠模式。我意识到DSPS在延长睡眠模式下工作得很好,但我无法接收从我的android设备发送到Da14580的数据。(我认为这可能是由睡眠模式引起的)。这样,我可以从android设备发送数据到DA14580,并定义扩展睡眠模式吗?我的意思是芯片将一直处于睡眠状态,当有传入数据(外部唤醒事件)时才从睡眠模式中唤醒。
问候,
钟Tran。
嗨chungtran,
我以为你们在试图修改参考设计。很抱歉搞混了。
当然,你可以从你的android设备发送数据,这不是延长睡眠的责任,请检查你的dev-kit上的连接,并参阅用户手册UM-B-038。da在每个连接间隔(而不是每次有传入数据时)中休眠和唤醒。
由于MT_dialog
嗨MT_dialog,
非常感谢你的明确回答!我明白了!因此,如果我想使用uart通信来触发(唤醒)DA,这可能吗?我的想法是,我将使用唤醒定时器和正交解码器驱动程序来处理uart pin_port。这是我的代码,我已经添加到app_sps_device_project.c和它似乎为我工作:
空白app_uart_data_trans_incoming(空白)
{
// Init System Power Domain block: GPIO, WD Timer, Sys Timer等
如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))
//退出睡眠模式后重新启动外围设备
periph_init ();
//当出现输入数据时触发
wkupct_register_callback (app_uart_data_trans_idle);// uart事件抵抗器
Wkupct_enable_irq (0x20, 0x00, 1,0);// P0_5 (UART Rx),极性高(0高1低)1个事件,跳线时间= 0
App_uart_status = 1;
if(ke_state_get(TASK_APP) == APP_CONNECTABLE)
{
//在这里唤醒BLE
app_ble_force_wakeup ();
app_ble_ext_wakeup_off ();
//SetBits32(GP_CONTROL_REG, BLE_WAKEUP_REQ, 1);
ke_msg_send_basic(APP_WAKEUP_MSG, TASK_APP, NULL);
}
}
谢谢
钟Tran。
嗨chungtran
你想做什么?您想要唤醒连接事件之间的da以实现更快的响应?您想断开外围设备与中心的连接,并将da设置为永久睡眠状态,直到新数据到达da的uart,然后再唤醒?
由于MT_dialog
嗨,MT Dialog,
是的,我的目标是我想将DA设置为永久睡眠,直到新的数据到达DA的uart,然后唤醒。问候,
Chungtran。
嗨chungtran
在你的代码中,你正在使用Rx引脚来唤醒芯片(在我的理解中),你的芯片是否唤醒和传输,但你在输出中经历了损坏的数据?你必须考虑到芯片需要一些时间才能从睡眠中醒来,请建议帖子#3。
由于MT_dialog
嗨MT_dialog,
是的,我的意思是DA似乎唤醒和传输数据,但有时当我调试我的代码,然后它不工作!你能详细告诉我DA需要从睡眠中醒来的时间吗?是否可以设置为0,因为我希望它在有传入数据后立即被唤醒。
问候,
Chungtran。
嗨chungtran
芯片在大约3-4毫秒内完成唤醒过程(但这取决于SDK,如果是581或580芯片,你可以从智能片段中计算唤醒时间),没有办法覆盖....这就是为什么在通过蓝牙传输任何东西之前,你必须切换Rx并等待。
由于MT_dialog
嗨MT_dialog,
非常感谢你的帮助!但是你能告诉我你给我推荐的两个解决方案我该怎么做吗?如何使用CTS/RTS信号解决我的问题?
问候,
Chungtran
嗨MT_dialog,
在解决方案2中,您说“设置您的Tx为0,在流量关闭命令后,表示设备处于睡眠状态。要唤醒设备,切换Rx。等待TX变高并接收
在发送实际数据之前,使用Flow On命令,给你的设备唤醒时间。”我搞糊涂了!你能给我一个示例代码或任何已经定义了这个的参考设计吗?
Ragards,
钟Tran。
嗨chungtran,
对不起,上面的场景没有实现代码。
由于MT_dialog
嗨MT_dialog,
我明白了。谢谢
钟Tran。