你好,
我目前正在使用BLE外围设备的修改版本,尝试使用ADC对信号进行采样。我基本上用代码替换了adc_adcval1_timer_cb_handler中的代码,以从ADC而不是计数器读取值。我拥有的麻烦是对ADC处理程序函数的调用的时间。我需要在每秒2000Hz或2000个样本上进行样本。当我尝试在10毫秒处或低于10 ms的定时器时,我会断开连接,并且在几个调用ADC处理程序后调用Platform_reset_func函数。我尝试过App易于计时器,示例使用,我也尝试使用Timer0带回调方法。似乎似乎有同样的问题。我想知道关于我不知道的代码或软件的时机是否存在一些限制因素?还有什么样的事情导致呼叫平台_Reset func?
谢谢!
关键词:
设备:
迈克尔,
你能告诉我你的源代码吗?
到目前为止,我可以确认您,App_easy_timer API的时间单位是10ms,它不适用于2kHz采样。
布尔
cyibin.
我理解app_easy_timer不会让我到2khz采样。但是,即使我使用具有最低可能时间单元10ms的应用程序易于计时器不起作用。以下是使用app_easy_timer的编辑部分。当App_peripheral_ctrl_timer_delay设置为2个时间单位时,它适用于Fine,但使用1后不久断开连接。
下面是使用定时器0,而不是app_easy_timer应该可以品尝2kHz的更快编辑的零件。不过,我得到相同的断开和呼叫platform_reset_func当定时器0被设置等于或低于10ms间隔使用app_easy_timer时。在这里,时间间隔设置为20毫秒,它工作正常。但是,如果你的RELOAD更改为1000(5毫秒),例如,它会断开和呼叫platform_reset_func。user_cust1_impl.c的其余部分是在这两个例子中的相同。
谢谢!
只是为了避免误解,的user_custs_impl文件的项目外的其余部分是从SDK外围蓝牙低能量的例子。
嗨michael12344,
将断开连接的原因是发送给SDK配置文件的通知命令太过频繁。
你应该最前一页存储由ADC采样产生的DATAS,然后发送出去在较低的频率。
布尔
cyibin.
你好,
有没有什么办法来解决这个问题?这将是如果数据流能持续进行而不是收集所有的样品,然后发送数据较为理想。是否有发送,这将是更好的,或者可以频繁,因为我想完成的频繁或接近/接收数据的方法?
谢谢
嗨michael12344,
Τheplatform_reset_func(),它是由platform_reset(调用),是由ROM代码实现的功能。最可能的原因,为什么你得到这个说法是由于内存不足,因为你可能尝试分配的消息,你从来没有消耗。例如,如果您分配通知消息,你有时间间隔的消息的小的连接被堆积,直到连接事件到达,但有一个大的连接间隔你耗尽内存连接事件之前到达。这是间隔您正在使用的连接?
谢谢,PM_DIALOG.
你好,
是外周或中央装置上间隔设置的连接?我已经发现在出现到10ms的最小和最大连接时间间隔设置为20ms的user_peripheral.c和user_config.c以下。
嗨michael12344,
能否请您连接间隔(.intv_min和.intv_max)更改为一个更大的吗?
谢谢,PM_DIALOG.
你好,
我尝试将IntV_min和Intv_max更改为更大的值30-45ms和100-160ms。但是,问题似乎仍然存在,因为仍然调用platform_reset_func()。还有什么我可以尝试提高数据吞吐量吗?
嗨michael12344,
可能,在您的应用程序中,每个连接后,可能会有一些内存泄漏丸。当WRAP_PLATFORM_RESET()发生时,请确保错误代码是reset_mem_alloc_fail,您将必须调试这一点以便找到它。此外,检查ADC读取期间是否存在任何挂起的消息,并确保您在处理消息时会收到您获得的消息,或者您正在分配它们应该被释放的数据。例如,如果您正在分配消息,则在分配消息,以便在有一个连接的情况下将数据发送到通知后,设备最终会用完内存,并且如果设备运行内存,则会导致设备重置。尝试定义和增加DA1458x_config_advanced的db_heap_sz,例如,您可以放置2048的值。
谢谢,PM_DIALOG.