Compare commits

...

2 Commits

Author SHA1 Message Date
dufresne bbbe09ff9f 添加注入组采集代码 2025-09-18 13:33:48 +08:00
dufresne f417c60748 忽略ewarm文件夹 2025-09-17 18:08:58 +08:00
4 changed files with 51 additions and 23 deletions

4
.gitignore vendored
View File

@ -1,3 +1 @@
EWARM/Debug/ EWARM/
EWARM/Release/
EWARM/settings/

View File

@ -46,6 +46,7 @@ float current;
float current_origin; float current_origin;
float adc_value; float adc_value;
char tiedian_id[3]={0}; char tiedian_id[3]={0};
#ifdef MDAX #ifdef MDAX
uint32_t ctl_data = 0; uint32_t ctl_data = 0;
#endif #endif
@ -150,6 +151,7 @@ int main(void)
voltage = ptz_Voltage_collect_adc1_task(); voltage = ptz_Voltage_collect_adc1_task();
rt_thread_mdelay(500); rt_thread_mdelay(500);
current = ptz_Current_collect_adc1_task(); current = ptz_Current_collect_adc1_task();
rt_thread_mdelay(500); rt_thread_mdelay(500);

View File

@ -13,10 +13,12 @@
#include "drv_adc.h" #include "drv_adc.h"
#ifdef DMAX
/*全局声明区*/ /*全局声明区*/
uint16_t USER_ADC_DMA_DATA_BUFF[16] = {0}; uint16_t USER_ADC_DMA_DATA_BUFF[16] = {0};
uint32_t ctl = 0; uint32_t ctl = 0;
#endif
void adc_init(void) void adc_init(void)
{ {
@ -126,7 +128,6 @@ __weak void DMA1_Channel0_IRQHandler(void)
{ {
} }
#endif #endif
@ -143,8 +144,13 @@ void adc_config(void)
/* 设置转换通道序列 */ /* 设置转换通道序列 */
adc_channel_length_config (ADCX, SEQUENCE_CHANNEL, CHANNEL_LENGTH);// 配置规则序列的长度2个通道 adc_channel_length_config (ADCX, SEQUENCE_CHANNEL, CHANNEL_LENGTH);// 配置规则序列的长度2个通道
adc_routine_channel_config (ADCX, 0, VOLTAGE_ADC_CHANNEL, ADC_SAMPLETIME_480); if (SEQUENCE_CHANNEL == ADC_INSERTED_CHANNEL)
adc_routine_channel_config (ADCX, 1, CURRENT_ADC_CHANNEL, ADC_SAMPLETIME_480); {
//通道注入顺序
/* 配置规则序列序号0是电压通道序号1是电流通道 */
adc_inserted_channel_config (ADCX, 0, VOLTAGE_ADC_CHANNEL, ADC_SAMPLETIME_480);//电压
adc_inserted_channel_config (ADCX, 1, CURRENT_ADC_CHANNEL, ADC_SAMPLETIME_480);//电流
}
/* 使能外部触发:这里使用软件触发,所以先禁用硬件触发 */ /* 使能外部触发:这里使用软件触发,所以先禁用硬件触发 */
@ -177,14 +183,24 @@ float ptz_Voltage_collect_adc1_task()
float tem; float tem;
float curadc1; float curadc1;
uint16_t value_V = 0; uint16_t value_V = 0;
if (SEQUENCE_CHANNEL == ADC_ROUTINE_CHANNEL)
/* 配置规则序列序号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);
}
adc_software_trigger_enable(ADCX, SEQUENCE_CHANNEL);// 软件触发使能 后续接读取 adc_software_trigger_enable(ADCX, SEQUENCE_CHANNEL);// 软件触发使能 后续接读取
if (SEQUENCE_CHANNEL == ADC_ROUTINE_CHANNEL)
{
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);
value_V = adc_routine_data_read(ADCX); // 读取规则组数据寄存器 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); // 读取注入组数据寄存器
}
/* 间接测量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;
@ -227,16 +243,28 @@ float ptz_Current_collect_adc1_task()
float tem; float tem;
float curadc1; float curadc1;
uint16_t value_I = 0; uint16_t value_I = 0;
if (SEQUENCE_CHANNEL == ADC_ROUTINE_CHANNEL)
// 配置规则序列序号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);
}
adc_software_trigger_enable(ADCX, SEQUENCE_CHANNEL);// 软件触发使能 后续接读取 adc_software_trigger_enable(ADCX, SEQUENCE_CHANNEL);// 软件触发使能 后续接读取
while(adc_flag_get(ADCX, ADC_FLAG_EOC) == RESET); // 等待转换结束->等到SET
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); // 读取规则组数据寄存器 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); // 读取注入组数据寄存器
}
/* 间接测量11倍分压/放大 */ /* 间接测量11倍分压/放大 */
adc1_i[adc1_i_num] = (((float)value_I / 4096.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;
adc1_i_num++; adc1_i_num++;
if(adc1_i_num >= LB_I_TIMES) if(adc1_i_num >= LB_I_TIMES)

View File

@ -23,15 +23,15 @@
#define LB_I_DEL 2 //电流滤波最高最低各删除个数 #define LB_I_DEL 2 //电流滤波最高最低各删除个数
/* /*
adc模式配置参数 adc模式配置参数
ENABLE ENABLE
DISABLE DISABLE
*/ */
#define CONTINUOUS_STATUS DISABLE // 是否开启连续转换 #define CONTINUOUS_STATUS DISABLE // 是否开启连续转换
#define SEQUENCE_CHANNEL ADC_ROUTINE_CHANNEL // 注入组还是规则组 // #define SEQUENCE_CHANNEL ADC_ROUTINE_CHANNEL // 注入组还是规则组
#define SCAN_STATUS DISABLE // 是否开启扫描模式 #define SEQUENCE_CHANNEL ADC_INSERTED_CHANNEL // 注入组还是规则组
#define CHANNEL_LENGTH 1 // 通道数量:1~16 #define SCAN_STATUS ENABLE // 是否开启扫描模式
#define CHANNEL_LENGTH 2 // 通道数量:1~16