ADC打断祝福活动

ID: lpcbaresdk - 683

状态:开放

第一个报道:6.0.14.1114

固定:TBD

描述

如果一个应用程序可以与ADC DMA功能可以观察到的一个问题。

现状:执行期间schedule_while_ble_onAPI,应用程序首先尝试执行序列化在内核消息队列等待事件。然后应用程序读取低功率时钟LPC的频率,如果仍有足够的时间应用程序将执行无线校准基于时间和温度读出。默认情况下,如果时间> = 2秒从去年无线电校准的时间,那么它将ADC寄存器的值存储在一组临时变量。初始化温度读数的ADC,如果温度> = 8摄氏度在默认情况下,然后广播校准将通过调用执行rf_recalibrationAPI。经过这些集合的操作,ADC值会被安排从旧的设置的临时值。

此时,ADC不允许外围触发下一个DMA事件。这可能是观察在使用应用程序时BAS服务ADC采样时电池。

解决方案

  • 地点:sdk /平台/ arch /主要

  • 文件名:arch_main.c

  • API名称:schedule_while_ble_on

当前代码

#如果! (__FPGA__定义)如果(arch_rwble_last_event= =BLE_EVT_END){#如果定义(__DA14531__)rcx20_read_freq(真正的);其他#rcx20_read_freq();# endifuint32_tsleep_duration=0;/ /如果你有足够的时间运行温度校准的收音机如果(ea_sleep_check(&sleep_duration,4))/ / 6槽- > 3.750 ms{/ /检查时间和温度运行无线校准。conditionally_run_radio_cals();}}# endif

修改后的代码

下面的代码片段将解决这个问题:

#如果! (__FPGA__定义)如果(arch_rwble_last_event= =BLE_EVT_END){#如果定义(__DA14531__)rcx20_read_freq(真正的);其他#rcx20_read_freq();# endifuint32_tsleep_duration=0;/ /如果你有足够的时间运行温度校准的收音机如果(ea_sleep_check(&sleep_duration,4))/ / 6槽- > 3.750 ms{如果(GetBits16(GP_ADC_CTRL_REG,GP_ADC_EN)= =0)/ / POST SDK6增强改性{/ /检查时间和温度运行无线校准。conditionally_run_radio_cals();}}}# endif