嗨,你们所有人,
我正在工作的dsp源代码,并正在处理如何从UART延长睡眠模式唤醒的问题。我已经通过在da14580_config.h中添加#define CFG_EXT_SLEEP定义了扩展睡眠模式。结果,我看到我只是从UART接收一些离散的数据(它可能由睡眠模式引起)。我的目标是,即使定义了“CFG_EXT_SLEEP”,我仍然可以从UART接收正常数据。如有任何回复,将不胜感激。
问候,
钟Tran。
有人能帮我解答这个问题吗?的问候!
嗨chungtran
如果我没理解错的话,你是想让你的外围设备处于长时间睡眠状态。根据我们的理解,这发生在A)设备空闲且未连接或B)它是连接的,与远程之间的通信事件。在这两种情况下,都应该从外部处理器(连接到580 UART的处理器)唤醒设备。为此,你需要实现唤醒机制。有两种方法可以实现:
Sol1)你可以使用硬件流量控制和RTS/CTS来从睡眠中醒来。你可以使用Rx/Tx。在这种情况下,软件流程控制应该存在。在一个流关闭命令后,将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测试了扩展睡眠模式。我意识到dsp在延长睡眠模式下工作得很好,但是我不能接收从我的android设备发送到Da14580的数据。(我想这可能是由睡眠模式引起的)。那么,我是否可以将Data从android设备发送到DA14580,并定义延长睡眠模式?我的意思是,芯片将一直休眠,当有传入数据(外部唤醒事件)时才从休眠模式中醒来。
嗨chungtran,
我以为你是想修改参考设计。抱歉搞混了。
当然,你可以从你的android设备发送数据,这不是extended sleep负责的事情,请检查你的开发套件上的连接,并查看用户手册UM-B-038。da在每个连接间隔中休眠和唤醒,而不是在每次有传入数据时。
嗨MT_dialog,
非常感谢您的明确回答!我得到它!所以如果我想用uart通讯来唤醒DA,有可能吗?我的想法是,我将使用唤醒定时器和Quadrature解码器驱动程序来处理uart pin_port。这里是我的代码,我已经添加到app_sps_device_project.c,它似乎为我工作:
空白app_uart_data_trans_incoming(空白){// Init System Power Domain blocks: 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){/ /唤醒祝福
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以实现更快的响应吗?您想要断开外设与中央的连接,并将数据保存在永久休眠状态,直到新数据到达数据的uart并被唤醒?
嗨太对话框中,
是的,我的目标是我想将DA设置为永久睡眠,直到新数据到达DA的uart,然后唤醒。问候,
Chungtran。
在你的代码中,你正在使用Rx pin来唤醒芯片(在我的理解中),你的芯片唤醒和传输,但你在输出中经历损坏的数据?你必须考虑到芯片需要一些时间才能从睡眠中醒来,请参阅建议帖#3。
是的,我的意思是DA似乎唤醒和传输数据,但有时当我再次调试我的代码,然后它不工作!你能详细告诉我地检需要什么时间起床吗?是否有可能设置为零,因为我希望它在有传入数据后立即唤醒。
芯片完成唤醒过程在大约3-4ms(但它取决于SDK,如果它的581或580芯片,你可以从智能片段计数唤醒时间),没有办法覆盖....这就是为什么你在通过蓝牙传输任何东西之前必须切换Rx和等待的原因。
非常感谢你的帮助!但是你能确切地告诉我,你给我推荐的这两种解决方案与我有什么关系吗?我如何使用CTS/RTS信号解决我的问题?
Chungtran
在解决方案2中,你说“将你的Tx设置为0,在一个流关闭命令后,信号设备正在休眠。要唤醒设备,请切换Rx。等待TX变高并接收在发送实际数据之前输入一个Flow On命令,让你的设备有时间苏醒。”我搞混了!你能给我一个例子代码或任何定义这个的参考设计吗?
Ragards,
抱歉,上面的场景没有实现代码。
我得到了它。谢谢
有人能帮我解答这个问题吗?的问候!
嗨chungtran
如果我没理解错的话,你是想让你的外围设备处于长时间睡眠状态。根据我们的理解,这发生在
A)设备空闲且未连接或
B)它是连接的,与远程之间的通信事件。
在这两种情况下,都应该从外部处理器(连接到580 UART的处理器)唤醒设备。为此,你需要
实现唤醒机制。有两种方法可以实现:
Sol1)你可以使用硬件流量控制和RTS/CTS来从睡眠中醒来。
你可以使用Rx/Tx。在这种情况下,软件流程控制应该存在。
在一个流关闭命令后,将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测试了扩展睡眠模式。我意识到dsp在延长睡眠模式下工作得很好,但是我不能接收从我的android设备发送到Da14580的数据。(我想这可能是由睡眠模式引起的)。那么,我是否可以将Data从android设备发送到DA14580,并定义延长睡眠模式?我的意思是,芯片将一直休眠,当有传入数据(外部唤醒事件)时才从休眠模式中醒来。
问候,
钟Tran。
嗨chungtran,
我以为你是想修改参考设计。抱歉搞混了。
当然,你可以从你的android设备发送数据,这不是extended sleep负责的事情,请检查你的开发套件上的连接,并查看用户手册UM-B-038。da在每个连接间隔中休眠和唤醒,而不是在每次有传入数据时。
由于MT_dialog
嗨MT_dialog,
非常感谢您的明确回答!我得到它!所以如果我想用uart通讯来唤醒DA,有可能吗?我的想法是,我将使用唤醒定时器和Quadrature解码器驱动程序来处理uart pin_port。这里是我的代码,我已经添加到app_sps_device_project.c,它似乎为我工作:
空白app_uart_data_trans_incoming(空白)
{
// Init System Power Domain blocks: 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)
{
/ /唤醒祝福
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以实现更快的响应吗?您想要断开外设与中央的连接,并将数据保存在永久休眠状态,直到新数据到达数据的uart并被唤醒?
由于MT_dialog
嗨太对话框中,
是的,我的目标是我想将DA设置为永久睡眠,直到新数据到达DA的uart,然后唤醒。问候,
Chungtran。
嗨chungtran
在你的代码中,你正在使用Rx pin来唤醒芯片(在我的理解中),你的芯片唤醒和传输,但你在输出中经历损坏的数据?你必须考虑到芯片需要一些时间才能从睡眠中醒来,请参阅建议帖#3。
由于MT_dialog
嗨MT_dialog,
是的,我的意思是DA似乎唤醒和传输数据,但有时当我再次调试我的代码,然后它不工作!你能详细告诉我地检需要什么时间起床吗?是否有可能设置为零,因为我希望它在有传入数据后立即唤醒。
问候,
Chungtran。
嗨chungtran
芯片完成唤醒过程在大约3-4ms(但它取决于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。