嗨,对话框
背景:
硬件:da14580<==uart==>传感器;只有rx和tx,没有rts和其他连接;
软件:需求方
sdk504;
app_default_sleep_mode = ARCH_SLEEP_OFF;
# undef CFG_UART_HW_FLOW_CTRL
我的传感器将通过uart_sps将数据传输到da14580:
1>如果可以通过DSPS应用连接到手机,似乎所有功能都是可以的;
2>如果没有ble连接,传感器不断发送数据,ble(14580芯片)会down和复位,特别是大量来自感知的数据。
我的要求:
1>传输uart数据从感官到手机时,有连接;
2>本地处理da14580中没有连接时的数据;
我使用app_easy_timer从缓冲区user_ble_pull数据,过程如下所示
1 > timerId = app_easy_timer (INTL timer_cb)
2 > timer_cb
{user_ble_pull(假,真);
timerId = app_easy_timer (INTL timer_cb);
}
3 > user_ble_pull
{…
...
如果(ke_state_get (TASK_APP) > = APP_SECURITY) user_send_ble_data (p_data、长度);
其他my_proc (p_data、长度);
...
...
}
问题:
由于有时检测数据量大,因此easytimer的INTL约为2*10ms、4*10ms或6*10ms等。
有时候,数据少的时候一切都好;
但海量数据带来了问题
1 >丢失一些数据;
2>重复数据被提取;
3 >芯片自动复位
我尝试了一些方法
1 > # undef CFG_UART_SW_FLOW_CTRL
2>change INTL of timer;
3>no use easytimer and put my_proc in user_peripheral _push();
4在my_proc中添加或删除一些func;
但我不能完美地解决问题时,没有ble连接;
你能提供一些建议来解决这些问题吗?
谢谢! !
嗨kurbylee,
既然你不使用h/w流控制,你应该使用s/w流控制和无睡眠,以避免丢失数据。我不能完全理解您所面临的问题,从我的理解是,当没有连接时,设备从传感器读取数据,在某个点上设备会重置(我的理解是正确的吗?)既然是这样我可以假定该设备的原因是得到重置由于内存不足(因为发生这种情况,我能理解,当你有很多的数据),试着把一个断点wrap_platform_reset()和通过这个函数检查如果弗兰克-威廉姆斯。
由于MT_dialog
谢谢你的回复。
我的现象就像:https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。——软件/ rxbufferitemcount-size-increase
我通过2线(uart_sps_rx和tx)直接连接da14580到PC,。当没有ble连接时,我将数据从pc传输到da14580,其他什么也不做。当数据很小的时候,一切都好。
但是当数据很大时,例如50字节/10ms,da14580将自动重置。
嗨kurbylee,
有相当多的事情可以导致设备自动重置,如前所述,从你的报告,我只能假设为什么这是发生的,是由于内存不足,例如,如果您从传感器获得数据,并分配消息以便在有一个连接时发送数据,设备最终将耗尽内存,如果设备耗尽内存,这将导致设备重置。
由于MT_dialog