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