ADC暂时结束
This commit is contained in:
parent
61e3485689
commit
b458a57577
|
@ -107,27 +107,8 @@ int main(void)
|
|||
// 进入主循环或启动其他任务
|
||||
while (1)
|
||||
{
|
||||
#ifdef ADC_MODE_3
|
||||
|
||||
|
||||
|
||||
for(uint8_t i=0; i<CHANNEL_LENGTH; i++)
|
||||
{
|
||||
tmp_value = BSP_ADCDataAcquire(i);
|
||||
if (i == 0)
|
||||
{
|
||||
voltage = tmp_value/ 4095.0 * 3.3;
|
||||
}
|
||||
else
|
||||
{
|
||||
current = tmp_value/ 4095.0 * 3.3;
|
||||
}
|
||||
}
|
||||
|
||||
rt_thread_mdelay(250);
|
||||
#endif
|
||||
|
||||
#if (defined ADC_MODE_0) || (defined ADC_MODE_1)
|
||||
#if (defined ADC_MODE_0) || (defined ADC_MODE_1) || (defined ADC_MODE_3)
|
||||
voltage = ptz_Voltage_collect_adc1_task();
|
||||
rt_thread_mdelay(500);
|
||||
|
||||
|
@ -138,6 +119,7 @@ int main(void)
|
|||
#ifdef ADC_MODE_2
|
||||
adc_software_trigger_enable(ADCX, SEQUENCE_CHANNEL);// 软件触发使能 后续接读取
|
||||
#endif
|
||||
|
||||
//测试mb铁电读写
|
||||
read_mb_id((uint8_t*)&tiedian_id);//读取铁电ID
|
||||
|
||||
|
@ -151,7 +133,7 @@ int main(void)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef DMAX
|
||||
#ifdef ADC_MODE_3
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
|
@ -189,7 +171,6 @@ void DMA1_Channel0_IRQHandler(void)
|
|||
|
||||
#endif
|
||||
|
||||
//下次移到drv_adc.c文件里
|
||||
#ifdef ADCX_IRQn
|
||||
void ADC_IRQHandler()
|
||||
{
|
||||
|
|
|
@ -21,6 +21,20 @@ uint16_t USER_ADC_DMA_DATA_BUFF[16] = {0};
|
|||
|
||||
#endif
|
||||
|
||||
float adc1_v[LB_V_TIMES];
|
||||
float curadc1_out_v;
|
||||
uint8_t adc1_v_num = 0;
|
||||
|
||||
float adc1_i[LB_I_TIMES];
|
||||
float curadc1_out_i;
|
||||
uint8_t adc1_i_num = 0;
|
||||
|
||||
float tmp75[LB_T_TIMES];
|
||||
float curtmp75_out;
|
||||
uint8_t tmp75_num;
|
||||
|
||||
|
||||
|
||||
bool filter_v_flag = 0;//滤波开启标志位,全局改变一次
|
||||
bool filter_i_flag = 0;//滤波开启标志位,全局改变一次
|
||||
bool filter_t_flag = 0;//滤波开启标志位,全局改变一次
|
||||
|
@ -182,34 +196,41 @@ void adc_interrupt_int(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* ---------------------------------------------------采集---------------------------------------------------- */
|
||||
|
||||
// adc电压采集
|
||||
float ptz_Voltage_collect_adc1_task()
|
||||
{
|
||||
static float adc1_v[LB_V_TIMES];
|
||||
static float curadc1_out_v;
|
||||
static uint8_t adc1_v_num = 0;
|
||||
uint16_t value_V = 0;
|
||||
|
||||
if (SEQUENCE_CHANNEL == ADC_ROUTINE_CHANNEL)
|
||||
{
|
||||
adc_routine_channel_config(ADCX, 0, VOLTAGE_ADC_CHANNEL, ADC_SAMPLETIME_480);
|
||||
}
|
||||
#ifdef ADC_MODE_0
|
||||
/* 模式1需先配置 */
|
||||
adc_routine_channel_config(ADCX, 0, VOLTAGE_ADC_CHANNEL, ADC_SAMPLETIME_480);
|
||||
#endif
|
||||
|
||||
#if (defined ADC_MODE_0) || (defined ADC_MODE_1)
|
||||
/* 模式1 + 2 */
|
||||
adc_software_trigger_enable(ADCX, SEQUENCE_CHANNEL);// 软件触发使能 后续接读取
|
||||
if (SEQUENCE_CHANNEL == ADC_ROUTINE_CHANNEL)
|
||||
{
|
||||
while(adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束
|
||||
adc_flag_clear(ADCX, ADC_FLAG_EOC);
|
||||
value_V = adc_routine_data_read(ADCX); // 读取规则组数据寄存器
|
||||
}
|
||||
else if (SEQUENCE_CHANNEL == ADC_INSERTED_CHANNEL)
|
||||
{
|
||||
while(adc_flag_get(ADCX, ADC_FLAG_EOIC) == RESET); // 等待转换结束
|
||||
adc_flag_clear(ADCX, ADC_FLAG_EOIC);
|
||||
value_V = adc_inserted_data_read(ADCX, ADC_INSERTED_CHANNEL_0); // 读取注入组数据寄存器
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ADC_MODE_0
|
||||
while(adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束
|
||||
adc_flag_clear(ADCX, ADC_FLAG_EOC);
|
||||
value_V = adc_routine_data_read(ADCX); // 读取规则组数据寄存器
|
||||
#endif
|
||||
|
||||
#ifdef ADC_MODE_1
|
||||
while(adc_flag_get(ADCX, ADC_FLAG_EOIC) == RESET); // 等待转换结束
|
||||
adc_flag_clear(ADCX, ADC_FLAG_EOIC);
|
||||
value_V = adc_inserted_data_read(ADCX, ADC_INSERTED_CHANNEL_0); // 读取注入组数据寄存器
|
||||
#endif
|
||||
|
||||
#ifdef ADC_MODE_3
|
||||
value_V = BSP_ADCDataAcquire(0);
|
||||
#endif
|
||||
|
||||
/* 间接测量,11倍分压/放大 */
|
||||
adc1_v[adc1_v_num] = (float)value_V / 4095.0 * 3.3;
|
||||
|
||||
|
@ -220,7 +241,7 @@ float ptz_Voltage_collect_adc1_task()
|
|||
filter_v_flag = 1;
|
||||
}
|
||||
|
||||
if (filter_v_flag)
|
||||
if (filter_v_flag)//等读满一组开始滤波
|
||||
{
|
||||
return Filtering(adc1_v, LB_V_TIMES, LB_V_DEL);
|
||||
}
|
||||
|
@ -232,29 +253,33 @@ float ptz_Voltage_collect_adc1_task()
|
|||
// adc电流采集
|
||||
float ptz_Current_collect_adc1_task()
|
||||
{
|
||||
static float adc1_i[LB_I_TIMES];
|
||||
static float curadc1_out_i;
|
||||
static uint8_t adc1_i_num = 0;
|
||||
uint16_t value_I = 0;
|
||||
if (SEQUENCE_CHANNEL == ADC_ROUTINE_CHANNEL)
|
||||
{
|
||||
adc_routine_channel_config(ADCX, 0, CURRENT_ADC_CHANNEL, ADC_SAMPLETIME_480);
|
||||
}
|
||||
|
||||
#ifdef ADC_MODE_0
|
||||
/* 模式1需先配置 */
|
||||
adc_routine_channel_config(ADCX, 0, CURRENT_ADC_CHANNEL, ADC_SAMPLETIME_480);
|
||||
#endif
|
||||
|
||||
#if (defined ADC_MODE_0) || (defined ADC_MODE_1)
|
||||
/* 模式1 + 2 */
|
||||
adc_software_trigger_enable(ADCX, SEQUENCE_CHANNEL);// 软件触发使能 后续接读取
|
||||
#endif
|
||||
|
||||
if (SEQUENCE_CHANNEL == ADC_ROUTINE_CHANNEL)
|
||||
{
|
||||
while (adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束->等到SET
|
||||
adc_flag_clear(ADCX, ADC_FLAG_EOC);
|
||||
value_I = adc_routine_data_read(ADCX); // 读取规则组数据寄存器
|
||||
}
|
||||
else if (SEQUENCE_CHANNEL == ADC_INSERTED_CHANNEL)
|
||||
{
|
||||
while (adc_flag_get(ADCX, ADC_FLAG_EOIC) == RESET); // 等待转换结束
|
||||
adc_flag_clear(ADCX, ADC_FLAG_EOIC);
|
||||
value_I = adc_inserted_data_read(ADCX, ADC_INSERTED_CHANNEL_1); // 读取注入组数据寄存器
|
||||
}
|
||||
#ifdef ADC_MODE_0
|
||||
while(adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束
|
||||
adc_flag_clear(ADCX, ADC_FLAG_EOC);
|
||||
value_I = adc_routine_data_read(ADCX); // 读取规则组数据寄存器
|
||||
#endif
|
||||
|
||||
#ifdef ADC_MODE_1
|
||||
while(adc_flag_get(ADCX, ADC_FLAG_EOIC) == RESET); // 等待转换结束
|
||||
adc_flag_clear(ADCX, ADC_FLAG_EOIC);
|
||||
value_I = adc_inserted_data_read(ADCX, ADC_INSERTED_CHANNEL_1); // 读取注入组数据寄存器
|
||||
#endif
|
||||
|
||||
#ifdef ADC_MODE_3
|
||||
value_I = BSP_ADCDataAcquire(1);
|
||||
#endif
|
||||
|
||||
/* 间接测量,11倍分压/放大 */
|
||||
adc1_i[adc1_i_num] = (((float)value_I / 4095.0 * 3.3) - 3.3 / 2) / 0.132;
|
||||
|
@ -274,13 +299,9 @@ float ptz_Current_collect_adc1_task()
|
|||
}
|
||||
|
||||
|
||||
//温度采集
|
||||
/* 温度采集 */
|
||||
float ptz_temperature_collect_tmp75_task()
|
||||
{
|
||||
static float tmp75[5];
|
||||
static unsigned char tmp75_num;
|
||||
static float curtmp75_out;
|
||||
|
||||
tmp75[tmp75_num] = tmp75_read_temp();
|
||||
tmp75_num ++;
|
||||
|
||||
|
@ -296,7 +317,7 @@ float ptz_temperature_collect_tmp75_task()
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* 滤波函数 */
|
||||
float Filtering(float *filter, uint8_t filterlens, uint8_t filterdel)
|
||||
{
|
||||
uint8_t j,k;
|
||||
|
@ -315,7 +336,6 @@ float Filtering(float *filter, uint8_t filterlens, uint8_t filterdel)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(uint8_t i = filterdel; i < filterlens - filterdel; i++)
|
||||
{
|
||||
curadc = curadc + filter[i];
|
||||
|
|
|
@ -24,10 +24,10 @@
|
|||
#define LB_I_DEL 2 //电流滤波最高最低各删除个数
|
||||
#define LB_T_DEL 1 //温度滤波最高最低各删除个数
|
||||
|
||||
// #define ADC_MODE_0 //规则组、单次转换、非扫描
|
||||
#define ADC_MODE_0 //规则组、单次转换、非扫描
|
||||
// #define ADC_MODE_1 //注入组、单次转换、扫描、转换结束标志位采集
|
||||
// #define ADC_MODE_2 //注入组、单次转换、扫描、中断转换结束标志位采集
|
||||
#define ADC_MODE_3 //规则组、连续转换、扫描、DMA采集
|
||||
// #define ADC_MODE_3 //规则组、连续转换、扫描、DMA采集
|
||||
|
||||
/*
|
||||
adc模式配置参数
|
||||
|
|
Loading…
Reference in New Issue