嗨,你们所有人,
我正在研究DSPS源代码,并正在处理一个问题,如何唤醒扩展睡眠模式由UART。我已经通过在da14580_config.h中添加#define CFG_EXT_SLEEP定义了扩展睡眠模式。结果,我看到我只是从UART接收了一些离散的数据(这可能由睡眠模式引起)。我的目标是,即使在定义了“CFG_EXT_SLEEP”之后,仍然能够从UART接收正常数据。任何回复都将不胜感激。
问候,
Chung Tran。
有人可以帮助我这个问题吗?问候!
嗨Chungtran.
如果我理解正确的话,你是想让你的外围设备进入长时间睡眠。根据我们的理解,这发生在A)设备是空闲的,没有连接或b)与遥控器的通信事件之间连接。在这两种情况下,您应该将设备从外部处理器唤醒(连接到580 UART的设备)。为此,您需要实施唤醒机制。您可以实现两个选项:
sol1)您可以使用硬件流量控制和RTS / CTS以从睡眠中唤醒。sol2)您可以使用rx / tx。在这种情况下,应存在软件流控制。在流关闭命令后将其设置为0,以发出设备正在睡眠状态。唤醒设备缩短rx。等待TX变高,接收发送实际数据之前的命令流程,为您的设备提供时间唤醒。我们推荐使用Sol1。
谢谢mt_dialog.
嗨mt_dialog,
谢谢你的答案!但是,你能告诉我关于我与RTS / CTS信号有关的详细信息吗?它是否使用了唤醒定时器和正交解码器驱动程序?
你好,
如何通过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在每个连接间隔内睡眠并唤醒,而不是每次有传入数据的间隔。
非常感谢你明确答案!我知道了!所以,如果我想使用UART通信来触发(唤醒)DA,它是否有可能?我的想法是我将使用唤醒定时器和正交解码器驱动程序来处理UART PIN_PORT。这是我已添加到app_sps_device_project.c的代码,似乎为我工作:
void app_uart_data_trans_incoming(void){// init系统电源域块:GPIO,WD计时器,SYS计时器等。如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))//从睡眠模式退出后重新启动外围设备periph_init();
//出现传入数据时触发wkupct_register_callback(app_uart_data_trans_idle);// UART事件RERISTwkupct_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对话框,
是的,我的目标是我想在永久睡眠中设置DA,直到新数据到达DA的UART然后唤醒。问候,
Chungtran。
在您的代码中,您正在使用RX引脚才能唤醒芯片(在我的未加工中),您的芯片是否唤醒并传输,但您在输出中遇到损坏的数据?您必须考虑芯片需要一段时间才能从睡眠中醒来,请咨询#3帖子。
是的,我的意思是Da似乎唤醒并传输数据,而是在我再次调试代码时的某个时候,它不起作用!你能告诉我一个Da需要醒来的时间吗?是否可以设置为零,因为我希望它在传入数据后醒来。
芯片完成唤醒过程大约在3-4毫秒(但它取决于SDK,如果它的581或580芯片,你可以从智能片段计算唤醒时间),没有办法覆盖....这就是为什么你必须切换Rx和等待之前,你通过蓝牙传输任何东西。
非常感谢你的帮助!但是你能告诉我我对我推荐的2个解决方案有关的事情。我如何使用CTS / RTS信号来解决我的问题?
Chungtran.
在Solution 2中,您所说的“将TX设置为0,流关闭命令以发出设备睡眠后的命令。要唤醒设备,请向上切换RX。等待TX变高并接收在发送实际数据之前,会有一个Flow On命令,让你的设备有时间醒来。”我被这个搞糊涂了!你能给我一个示例代码或任何定义这个的参考设计吗?
ragards,
抱歉,上面的场景没有实现代码。
我得到了它。谢谢
有人可以帮助我这个问题吗?问候!
嗨Chungtran.
如果我理解正确的话,你是想让你的外围设备进入长时间睡眠。根据我们的理解,这发生在
A)设备是空闲的,没有连接或
b)与遥控器的通信事件之间连接。
在这两种情况下,您应该将设备从外部处理器唤醒(连接到580 UART的设备)。为此,您需要
实施唤醒机制。您可以实现两个选项:
sol1)您可以使用硬件流量控制和RTS / CTS以从睡眠中唤醒。
sol2)您可以使用rx / tx。在这种情况下,应存在软件流控制。
在流关闭命令后将其设置为0,以发出设备正在睡眠状态。唤醒设备缩短rx。等待TX变高,接收
发送实际数据之前的命令流程,为您的设备提供时间唤醒。
我们推荐使用Sol1。
谢谢mt_dialog.
嗨mt_dialog,
谢谢你的答案!但是,你能告诉我关于我与RTS / CTS信号有关的详细信息吗?它是否使用了唤醒定时器和正交解码器驱动程序?
问候,
Chung 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与定义扩展睡眠模式?我的意思是,芯片将一直处于睡眠状态,当有传入数据时(外部唤醒事件)从睡眠模式中醒来。
问候,
Chung Tran。
嗨Chungtran,
我虽然你正在尝试修改参考设计。抱歉混淆了。
当然,您可以从Android设备发送数据,这不是一个延长睡眠的东西负责,请检查Dev-kit上的连接,请参阅用户手册UM-B-038。DA在每个连接间隔内睡眠并唤醒,而不是每次有传入数据的间隔。
谢谢mt_dialog.
嗨mt_dialog,
非常感谢你明确答案!我知道了!所以,如果我想使用UART通信来触发(唤醒)DA,它是否有可能?我的想法是我将使用唤醒定时器和正交解码器驱动程序来处理UART PIN_PORT。这是我已添加到app_sps_device_project.c的代码,似乎为我工作:
void app_uart_data_trans_incoming(void)
{
// init系统电源域块:GPIO,WD计时器,SYS计时器等。
如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))
//从睡眠模式退出后重新启动外围设备
periph_init();
//出现传入数据时触发
wkupct_register_callback(app_uart_data_trans_idle);// UART事件RERIST
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);
}
}
谢谢
Chung Tran。
嗨Chungtran.
你想干什么?你想唤醒连接事件之间的da,以实现更快的响应?您想要断开外围设备和中央设备的连接,并将da设置为永久休眠,直到新的数据到达da的uart,然后唤醒?
谢谢mt_dialog.
嗨mt对话框,
是的,我的目标是我想在永久睡眠中设置DA,直到新数据到达DA的UART然后唤醒。问候,
Chungtran。
嗨Chungtran.
在您的代码中,您正在使用RX引脚才能唤醒芯片(在我的未加工中),您的芯片是否唤醒并传输,但您在输出中遇到损坏的数据?您必须考虑芯片需要一段时间才能从睡眠中醒来,请咨询#3帖子。
谢谢mt_dialog.
嗨mt_dialog,
是的,我的意思是Da似乎唤醒并传输数据,而是在我再次调试代码时的某个时候,它不起作用!你能告诉我一个Da需要醒来的时间吗?是否可以设置为零,因为我希望它在传入数据后醒来。
问候,
Chungtran。
嗨Chungtran.
芯片完成唤醒过程大约在3-4毫秒(但它取决于SDK,如果它的581或580芯片,你可以从智能片段计算唤醒时间),没有办法覆盖....这就是为什么你必须切换Rx和等待之前,你通过蓝牙传输任何东西。
谢谢mt_dialog.
嗨mt_dialog,
非常感谢你的帮助!但是你能告诉我我对我推荐的2个解决方案有关的事情。我如何使用CTS / RTS信号来解决我的问题?
问候,
Chungtran.
嗨mt_dialog,
在Solution 2中,您所说的“将TX设置为0,流关闭命令以发出设备睡眠后的命令。要唤醒设备,请向上切换RX。等待TX变高并接收
在发送实际数据之前,会有一个Flow On命令,让你的设备有时间醒来。”我被这个搞糊涂了!你能给我一个示例代码或任何定义这个的参考设计吗?
ragards,
Chung Tran。
嗨Chungtran,
抱歉,上面的场景没有实现代码。
谢谢mt_dialog.
嗨mt_dialog,
我得到了它。谢谢
Chung Tran。