嗨对话框PM,
虽然I`m使用DA14531使用DA14531 ADC以持续的方式启用BLE,但我创建它将在2秒后自动关闭,当我打开它时。
我成立了在“Arch_System.c”中称为称为条件_run_radio_cals()的函数;始终使ADC能够检查模芯温度并重新连接RF如果温度差大于(或等于)8摄氏度。
此操作将调用“adc_init()”并关闭ADC中断。
我想知道我可以手动禁用RF自动校准吗?如果我禁用它,BLE连接会发生严重错误吗?
或者,我该如何使用连续模式?
我的SDK Verison是最新版本:“v_6.0.14.1114-with hotfix_00”
前任。:
函数条件_run_radio_cals();代码屏幕在这里:
void条件_run_radio_cals(void)
{
#if定义(__da14531__)
// 531例
uint32_t current_time = lld_evt_time_get();
if(current_time
last_temp_time = 0;
}
if((current_time - last_temp_time)> = 3200)// 2秒
{
last_temp_time = current_time;
//存储以下寄存器的当前内容:
// - gp_adc_ctrl_reg,
// - gp_adc_ctrl2_reg,
// - gp_adc_ctrl3_reg,
// - gp_adc_sel_reg。
uint16_t tmp_adc_ctrl_reg = getword16(gp_adc_ctrl_reg);
uint16_t tmp_adc_ctrl2_reg = getword16(gp_adc_ctrl2_reg);
uint16_t tmp_adc_ctrl3_reg = getword16(gp_adc_ctrl3_reg);
uint16_t tmp_adc_sel_reg = getword16(gp_adc_sel_reg);
ADC_CONFIG_T CFG =.
{
.input_mode = adc_input_mode_single_ended,
.input = adc_input_se_temp_sens,
.Contion = False.
};
//初始化和启用ADC
adc_init(&cfg);
Int8_t clust_temp = adc_get_temp();
if(last_temp == 127)
{
last_temp = current_temp;
}
别的
{
Int8_t temp_diff = clust_temp - last_temp;
if(temp_diff <0)
{
temp_diff = -temp_diff;
}
if(temp_diff> = 8)
{
//如果温度差异大于,则校准RF
//(或等于)8摄氏度
rfcal_count ++;
rf_recalibration();
last_temp = current_temp;
}
}
//恢复ADC CTRL和SEL寄存器的内容
setword16(gp_adc_ctrl2_reg,tmp_adc_ctrl2_reg);
setword16(gp_adc_ctrl3_reg,tmp_adc_ctrl3_reg);
setword16(gp_adc_sel_reg,tmp_adc_sel_reg);
setword16(gp_adc_ctrl_reg,tmp_adc_ctrl_reg);
}
#别的
你好呀,
谢谢你指向这个。围绕计划的可能解决方案_while_ble_on()中可能是以下内容:
谢谢,PM_DIALOG.
谢谢对话PM。
但是我需要长时间运行ADC连续模式,以解决大量数据。
我可以在一小时内保持ADC吗?它会导致一些严重的射频问题吗?喜欢:半小时后断开连接?