Compare commits
4 Commits
Author | SHA1 | Date |
---|---|---|
起床就犯困 | ea6d12ca11 | |
起床就犯困 | c5ed140daf | |
起床就犯困 | c14165f58d | |
起床就犯困 | a418010b91 |
|
@ -69,8 +69,8 @@
|
|||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Peripheral/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/mppt_Nos_V0.4/App/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/mppt_Nos_V0.4/Hardware/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/mppt_Nos_V0.4/Drivers/RingQueue}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/mppt_Nos_V0.4/Drivers/TimeSliceOffset}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/mppt_Nos_V0.4/Drivers/RingQueue}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/mppt_Nos_V0.4/Drivers/RingQueue2}""/>
|
||||
</option>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std.2020844713" name="Language standard" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
||||
|
@ -124,9 +124,10 @@
|
|||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="Startup|Peripheral|Ld|Debug|Core" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
<entry excluding="Drivers|Startup|Peripheral|Ld|Debug|Core" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Debug"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="Drivers"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Ld"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Peripheral"/>
|
||||
<entry excluding="startup_ch32v20x_D8.S|startup_ch32v20x_D8W.S" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Startup"/>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1028566790370062624" id="ilg.gnumcueclipse.managedbuild.cross.riscv.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT RISC-V Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1033085767641952736" id="ilg.gnumcueclipse.managedbuild.cross.riscv.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT RISC-V Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
</provider>
|
||||
|
|
|
@ -10,24 +10,13 @@
|
|||
|
||||
#include "debug.h"
|
||||
#include "adc.h"
|
||||
#include "ring_queue2.h"
|
||||
|
||||
#define adcBuffSize 100
|
||||
typedef struct _ADC_DATA{
|
||||
RingQueue2 RQCHG_CURR;
|
||||
RingQueue2 RQDSG_CURR;
|
||||
int32_t total_CHG_CURR; /* 充电电流adc之和 */
|
||||
int32_t total_DSG_CURR; /* 放电电流adc之和 */
|
||||
}ADC_DATA;
|
||||
extern ADC_DATA g_adcData;
|
||||
|
||||
float get_CHG_CURR(void);
|
||||
float get_PV_VOLT_OUT(void);
|
||||
float get_DSG_CURR(void);
|
||||
float get_PV1_VOLT_IN(void);
|
||||
float get_PV_VOLT_IN1(void);
|
||||
float get_PV_VOLT_IN(void);
|
||||
float get_SYS_VOLT_IN(void);
|
||||
float get_MOSFET_Temper(void);
|
||||
float get_PV2_VOLT_IN(void);
|
||||
void currBuffInit(void);
|
||||
//float get_PV2_VOLT_IN(void);
|
||||
|
||||
#endif /* APP_INC_COLLECT_CONVERSION_H_ */
|
||||
|
|
|
@ -233,8 +233,6 @@ typedef struct _SL_Mppt_para{
|
|||
float_t HighSideMos_Temperature; /* 高端mos的温度 */
|
||||
uint16_t DischargMos_State; /* 放电mos的状态 */
|
||||
uint16_t MPPT_Mode; /* 工作模式 */
|
||||
float_t inPower; /* ×ܳäµçµçÁ¿ */
|
||||
float_t outPower; /* ×ÜÏûºÄµçÁ¿ */
|
||||
}SL_Mppt_para;
|
||||
extern SL_Mppt_para g_Mppt_Para;
|
||||
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
#include "uart_dev.h"
|
||||
#include "math.h"
|
||||
|
||||
|
||||
|
||||
//extern uint8_t g_interruptNum;
|
||||
void stop_mpptWork(void);
|
||||
void start_mpptWork(void);
|
||||
|
|
|
@ -15,13 +15,20 @@
|
|||
#include "uart_dev.h"
|
||||
#include <string.h>
|
||||
|
||||
#define ONLYPOWER 1
|
||||
//#define ONLYPOWER 1
|
||||
//#define CHG_CURR ADC_Channel_1
|
||||
//#define PV_VOLT_OUT ADC_Channel_2
|
||||
//#define DSG_CURR ADC_Channel_3
|
||||
//#define PV1_VOLT_IN ADC_Channel_4
|
||||
//#define PV_VOLT_IN1 ADC_Channel_5
|
||||
//#define MOSFET_Temper ADC_Channel_6
|
||||
//#define PV2_VOLT_IN ADC_Channel_7
|
||||
|
||||
#define CHG_CURR ADC_Channel_1
|
||||
#define PV_VOLT_OUT ADC_Channel_2
|
||||
#define DSG_CURR ADC_Channel_3
|
||||
#define PV1_VOLT_IN ADC_Channel_4
|
||||
#define PV_VOLT_IN1 ADC_Channel_5
|
||||
#define PV_VOLT_IN ADC_Channel_4
|
||||
#define SYS_VOLT_IN ADC_Channel_5
|
||||
#define MOSFET_Temper ADC_Channel_6
|
||||
#define PV2_VOLT_IN ADC_Channel_7
|
||||
|
||||
|
@ -29,24 +36,24 @@
|
|||
|
||||
#ifdef ONLYPOWER
|
||||
/* 光伏充电输出电流比例,放大倍数*电阻 */
|
||||
const float P_CHG_CURR = (1.0 / (50 * 0.005 / 2));
|
||||
const float P_CHG_CURR = ((1.0 / (50 * 0.005 / 2)) / 4095 * 2.5);
|
||||
/* 光伏充电输出电压比例,分压系数(放电时采集不准) */
|
||||
//const float P_PV_VOLT_OUT = (47.0 + 10.0) / 10.0;
|
||||
//const float P_PV_VOLT_OUT = (47.0 + 4.7) / 4.7;
|
||||
const float P_PV_VOLT_OUT = (56.0 + 10.0) / 10.0;
|
||||
//const float P_PV_VOLT_OUT = ((47.0 + 4.7) / 4.7 / 4095 * 2.5);
|
||||
const float P_PV_VOLT_OUT = ((56.0 + 10.0) / 10.0 / 4095 * 2.5);
|
||||
/* 放电电流采集电流倍数 */
|
||||
const float P_DSG_CURR = (1.0 / (50 * 0.005 / 2));
|
||||
const float P_DSG_CURR = ((1.0 / (50 * 0.005 / 2)) / 4095 * 2.5);
|
||||
///* 光伏1开路输出电压比例 */
|
||||
const float P_PV1_VOLT_IN = (100 + 4.7) / 4.7;
|
||||
const float P_PV1_VOLT_IN = ((100 + 4.7) / 4.7 / 4095 * 2.5);
|
||||
//const float P_PV1_VOLT_IN = (47.0 + 4.7) / 4.7;
|
||||
/* 光伏1开路输出电压比例 */
|
||||
//const float P_PV1_VOLT_IN = (47 + 4.7) / 4.7;
|
||||
/* 系统电源电压比例 */
|
||||
const float P_PV_VOLT_IN1 = (47 + 4.7) / 4.7;
|
||||
const float P_PV_VOLT_IN1 = ((47 + 4.7) / 4.7 / 4095 * 2.5);
|
||||
/* 温度采集比例 */
|
||||
//const float P_MOSFET_TEMPER = 0;
|
||||
/* 光伏2开路输出电压比例 */
|
||||
const float P_PV2_VOLT_IN = (100.0 + 4.7) / 4.7;
|
||||
const float P_PV2_VOLT_IN = ((100.0 + 4.7) / 4.7 / 4095 * 2.5);
|
||||
#endif
|
||||
|
||||
#ifndef ONLYPOWER
|
||||
|
@ -129,14 +136,12 @@ const uint16_t mosTemperADC[mosTemperADCLen] = {
|
|||
336 /* 100 ℃ */
|
||||
};
|
||||
|
||||
ADC_DATA g_adcData;
|
||||
static uint16_t CHG_buff[adcBuffSize];
|
||||
static uint16_t DSG_buff[adcBuffSize];
|
||||
|
||||
|
||||
static uint16_t get_adc(uint8_t ADC_Channel);
|
||||
static uint16_t get_aftercalculationAdc(uint8_t ADC_Channel);
|
||||
static uint16_t middleAverageFilter(uint8_t ADC_Channel);
|
||||
static uint16_t get_adcDmaTim_middleAverageFilter(uint8_t ADC_Channel);
|
||||
static uint16_t Get_ConversionVal(int16_t val);
|
||||
|
||||
/**
|
||||
* @brief 获取计算后的adc的值
|
||||
|
@ -144,11 +149,93 @@ static uint16_t middleAverageFilter(uint8_t ADC_Channel);
|
|||
* @retval None
|
||||
*/
|
||||
uint16_t get_aftercalculationAdc(uint8_t ADC_Channel)
|
||||
{
|
||||
return get_adcDmaTim_middleAverageFilter(ADC_Channel);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取计算后的adc的值
|
||||
* @param ADC_Channel ADC通道
|
||||
* @retval None
|
||||
*/
|
||||
uint16_t get_aftercalculationAdc1(uint8_t ADC_Channel)
|
||||
{
|
||||
return middleAverageFilter(ADC_Channel);
|
||||
}
|
||||
|
||||
#define N 4
|
||||
/**
|
||||
* @brief 中位值平均滤波
|
||||
* @param ADC_Channel ADC通道
|
||||
* @retval None
|
||||
*/
|
||||
uint16_t get_adcDmaTim_middleAverageFilter(uint8_t ADC_Channel)
|
||||
{
|
||||
if (ADC_Channel == CHG_CURR) {
|
||||
return Get_ConversionVal(g_adcData.total_CHG_CURR / adcBuffSize);
|
||||
}
|
||||
|
||||
if (ADC_Channel == DSG_CURR) {
|
||||
return Get_ConversionVal(g_adcData.total_DSG_CURR / adcBuffSize);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
// uint16_t i,j,k;
|
||||
// uint16_t temp,sum = 0;
|
||||
// uint16_t value_buf[g_adcData.num];
|
||||
//
|
||||
// if (ADC_Channel == CHG_CURR) {
|
||||
// for(i = 0; i < g_adcData.num; ++i) {
|
||||
// value_buf[i] = g_adcData.CHG_CURR_array[i];
|
||||
// }
|
||||
//// } else if (ADC_Channel == PV_VOLT_OUT) {
|
||||
//// for(i = 0; i < g_adcData.num; ++i) {
|
||||
//// value_buf[i] = g_adcData.PV_VOLT_OUT_array[i];
|
||||
//// }
|
||||
// } else if (ADC_Channel == DSG_CURR) {
|
||||
// for(i = 0; i < g_adcData.num; ++i) {
|
||||
// value_buf[i] = g_adcData.DSG_CURR_array[i];
|
||||
// }
|
||||
//// } else if (ADC_Channel == PV_VOLT_IN) {
|
||||
//// for(i = 0; i < g_adcData.num; ++i) {
|
||||
//// value_buf[i] = g_adcData.PV_VOLT_IN_array[i];
|
||||
//// }
|
||||
//// } else if (ADC_Channel == SYS_VOLT_IN) {
|
||||
//// for(i = 0; i < g_adcData.num; ++i) {
|
||||
//// value_buf[i] = g_adcData.SYS_VOLT_IN_array[i];
|
||||
//// }
|
||||
//// } else if (ADC_Channel == MOSFET_Temper) {
|
||||
//// for(i = 0; i < g_adcData.num; ++i) {
|
||||
//// value_buf[i] = g_adcData.MOSFET_Temper_array[i];
|
||||
//// }
|
||||
// } else {
|
||||
// return 0;
|
||||
// }
|
||||
//
|
||||
// /*从小到大冒泡排序*/
|
||||
// for(j = 0; j < g_adcData.num-1; ++j)
|
||||
// {
|
||||
// for(k = 0; k < g_adcData.num-j-1; ++k)
|
||||
// {
|
||||
// if(value_buf[k] > value_buf[k+1])
|
||||
// {
|
||||
// temp = value_buf[k];
|
||||
// value_buf[k] = value_buf[k+1];
|
||||
// value_buf[k+1] = temp;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// for(i = 2; i < g_adcData.num - 2; ++i)
|
||||
// {
|
||||
// sum += value_buf[i];
|
||||
// }
|
||||
//
|
||||
// return sum / (g_adcData.num - 4);
|
||||
}
|
||||
|
||||
|
||||
#define N 6
|
||||
/**
|
||||
* @brief 中位值平均滤波
|
||||
* @param ADC_Channel ADC通道
|
||||
|
@ -176,11 +263,11 @@ uint16_t middleAverageFilter(uint8_t ADC_Channel)
|
|||
}
|
||||
}
|
||||
}
|
||||
for(i = 1; i < N-1; ++i)
|
||||
for(i = 2; i < N-2; ++i)
|
||||
{
|
||||
sum += value_buf[i];
|
||||
}
|
||||
return sum/(N-2);
|
||||
return sum/(N-4);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -225,20 +312,13 @@ float get_CHG_CURR(void)
|
|||
uint16_t I_ADC;
|
||||
|
||||
// I_ADC = Get_ConversionVal(get_adc(CHG_CURR));
|
||||
OutRingQueue2(&g_adcData.RQCHG_CURR, &I_ADC);
|
||||
g_adcData.total_CHG_CURR -= I_ADC;
|
||||
|
||||
I_ADC = get_aftercalculationAdc(CHG_CURR);
|
||||
InRingQueue2(&g_adcData.RQCHG_CURR, I_ADC);
|
||||
g_adcData.total_CHG_CURR += I_ADC;
|
||||
|
||||
I_ADC = g_adcData.total_CHG_CURR / (adcBuffSize - 1);
|
||||
|
||||
|
||||
// I_ADC = g_adcData.total_CHG_CURR / g_adcData.num;
|
||||
// I_ADC = get_adc(CHG_CURR);
|
||||
|
||||
// I = (float)(I_ADC) / 4095 * 3.3 * P_CHG_CURR * 2;
|
||||
I = (float)(I_ADC) / 4095 * 2.5 * P_CHG_CURR;
|
||||
I = (float)(I_ADC) * P_CHG_CURR;
|
||||
|
||||
// printf(" CHG_CURR I : %d /10000 \n", (int)(I * 10000));
|
||||
#ifdef enable_Printf_VI
|
||||
|
@ -260,10 +340,12 @@ float get_PV_VOLT_OUT(void)
|
|||
uint16_t V_ADC;
|
||||
|
||||
// V_ADC = Get_ConversionVal(get_adc(PV_VOLT_OUT));
|
||||
V_ADC = get_aftercalculationAdc(PV_VOLT_OUT);
|
||||
V_ADC = get_aftercalculationAdc1(PV_VOLT_OUT);
|
||||
// V_ADC = get_aftercalculationAdc(PV_VOLT_OUT);
|
||||
// V_ADC = g_adcData.total_PV_VOLT_OUT / g_adcData.num;
|
||||
// V_ADC = get_adc(PV_VOLT_OUT);
|
||||
|
||||
V = (float)(V_ADC) / 4095 * 2.5 * P_PV_VOLT_OUT;
|
||||
V = (float)(V_ADC) * P_PV_VOLT_OUT;
|
||||
//
|
||||
// char buffer[30];
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
|
@ -289,23 +371,13 @@ float get_DSG_CURR(void)
|
|||
uint16_t I_ADC;
|
||||
|
||||
// I_ADC = Get_ConversionVal(get_adc(DSG_CURR));
|
||||
// I_ADC = get_aftercalculationAdc(DSG_CURR);
|
||||
I_ADC = get_aftercalculationAdc(DSG_CURR);
|
||||
// I_ADC = g_adcData.total_DSG_CURR / g_adcData.num;
|
||||
// I_ADC = get_adc(DSG_CURR);
|
||||
|
||||
|
||||
OutRingQueue2(&g_adcData.RQDSG_CURR, &I_ADC);
|
||||
g_adcData.total_DSG_CURR -= I_ADC;
|
||||
|
||||
I_ADC = get_aftercalculationAdc(DSG_CURR);
|
||||
InRingQueue2(&g_adcData.RQDSG_CURR, I_ADC);
|
||||
g_adcData.total_DSG_CURR += I_ADC;
|
||||
|
||||
I_ADC = g_adcData.total_DSG_CURR / (adcBuffSize - 1);
|
||||
|
||||
|
||||
|
||||
// I = (float)(I_ADC) / 4095 * 3.3 * P_DSG_CURR * 2;
|
||||
I = (float)(I_ADC) / 4095 * 2.5 * P_DSG_CURR;
|
||||
I = (float)(I_ADC) * P_DSG_CURR;
|
||||
|
||||
#ifdef enable_Printf_VI
|
||||
printf("\n DSG_CURR ADC : %d \n", I_ADC);
|
||||
|
@ -320,19 +392,20 @@ float get_DSG_CURR(void)
|
|||
* @param
|
||||
* @retval V 电压值
|
||||
*/
|
||||
float get_PV1_VOLT_IN(void)
|
||||
float get_PV_VOLT_IN(void)
|
||||
{
|
||||
float V;
|
||||
uint16_t V_ADC;
|
||||
|
||||
// GPIO_WriteBit(G_FFMOS_CON1_GPIO, G_FFMOS_CON1_PIN, SET);
|
||||
// V_ADC = Get_ConversionVal(get_adc(PV1_VOLT_IN));
|
||||
V_ADC = get_aftercalculationAdc(PV1_VOLT_IN);
|
||||
V_ADC = get_aftercalculationAdc1(PV_VOLT_IN);
|
||||
// V_ADC = g_adcData.total_PV1_VOLT_IN / g_adcData.num;
|
||||
|
||||
// V_ADC = get_adc(PV1_VOLT_IN);
|
||||
// GPIO_WriteBit(G_FFMOS_CON1_GPIO, G_FFMOS_CON1_PIN, RESET);
|
||||
|
||||
V = (float)(V_ADC) / 4095 * 2.5 * P_PV1_VOLT_IN;
|
||||
V = (float)(V_ADC) * P_PV1_VOLT_IN;
|
||||
|
||||
#ifdef enable_Printf_VI
|
||||
printf("\n PV1_VOLT_IN ADC : %d \n", V_ADC);
|
||||
|
@ -347,16 +420,17 @@ float get_PV1_VOLT_IN(void)
|
|||
* @param
|
||||
* @retval V 电压值
|
||||
*/
|
||||
float get_PV_VOLT_IN1(void)
|
||||
float get_SYS_VOLT_IN(void)
|
||||
{
|
||||
float V;
|
||||
uint16_t V_ADC;
|
||||
|
||||
// V_ADC = Get_ConversionVal(get_adc(PV_VOLT_IN1));
|
||||
V_ADC = get_aftercalculationAdc(PV_VOLT_IN1);
|
||||
V_ADC = get_aftercalculationAdc1(SYS_VOLT_IN);
|
||||
// V_ADC = g_adcData.total_PV_VOLT_IN1 / g_adcData.num;
|
||||
// V_ADC = get_adc(PV_VOLT_IN1);
|
||||
|
||||
V = (float)(V_ADC) / 4095 * 2.5 * P_PV_VOLT_IN1;
|
||||
V = (float)(V_ADC) * P_PV_VOLT_IN1;
|
||||
|
||||
#ifdef enable_Printf_VI
|
||||
printf("\n PV_VOLT_IN1 ADC : %d \n", V_ADC);
|
||||
|
@ -383,7 +457,8 @@ float get_MOSFET_Temper(void)
|
|||
uint16_t T_ADC;
|
||||
|
||||
// T_ADC = Get_ConversionVal(get_adc(MOSFET_Temper));
|
||||
T_ADC = get_aftercalculationAdc(MOSFET_Temper);
|
||||
T_ADC = get_aftercalculationAdc1(MOSFET_Temper);
|
||||
// T_ADC = g_adcData.total_MOSFET_Temper / g_adcData.num;
|
||||
|
||||
// char buffer[30];
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
|
@ -414,45 +489,32 @@ float get_MOSFET_Temper(void)
|
|||
return T;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 得到光伏2开路电压
|
||||
* @param
|
||||
* @retval V 电压值
|
||||
*/
|
||||
float get_PV2_VOLT_IN(void)
|
||||
{
|
||||
float V;
|
||||
uint16_t V_ADC;
|
||||
|
||||
// GPIO_WriteBit(G_FFMOS_CON2_GPIO, G_FFMOS_CON2_PIN, SET);
|
||||
// V_ADC = Get_ConversionVal(get_adc(PV2_VOLT_IN));
|
||||
V_ADC = get_aftercalculationAdc(PV2_VOLT_IN);
|
||||
// V_ADC = get_adc(PV2_VOLT_IN);
|
||||
// GPIO_WriteBit(G_FFMOS_CON2_GPIO, G_FFMOS_CON2_PIN, RESET);
|
||||
|
||||
V = (float)(V_ADC) / 4095 * 2.5 * P_PV2_VOLT_IN;
|
||||
|
||||
#ifdef enable_Printf_VI
|
||||
printf("\n PV2_VOLT_IN ADC : %d \n", V_ADC);
|
||||
printf(" PV2_VOLT_IN V : %d /100 \n", (int)(V * 100));
|
||||
#endif
|
||||
|
||||
return V;
|
||||
}
|
||||
|
||||
void currBuffInit(void)
|
||||
{
|
||||
InitRingQueue2(&g_adcData.RQCHG_CURR, CHG_buff, adcBuffSize);
|
||||
InitRingQueue2(&g_adcData.RQDSG_CURR, DSG_buff, adcBuffSize);
|
||||
|
||||
while (InRingQueue2(&g_adcData.RQCHG_CURR, 0) != -2);
|
||||
while (InRingQueue2(&g_adcData.RQDSG_CURR, 0) != -2);
|
||||
|
||||
g_adcData.total_CHG_CURR = 0;
|
||||
g_adcData.total_DSG_CURR = 0;
|
||||
|
||||
printf("%d \n", RingQueueLength2(&g_adcData.RQCHG_CURR));
|
||||
printf("%d \n", RingQueueLength2(&g_adcData.RQDSG_CURR));
|
||||
}
|
||||
///**
|
||||
// * @brief 得到光伏2开路电压
|
||||
// * @param
|
||||
// * @retval V 电压值
|
||||
// */
|
||||
//float get_PV2_VOLT_IN(void)
|
||||
//{
|
||||
// float V;
|
||||
// uint16_t V_ADC;
|
||||
//
|
||||
//// GPIO_WriteBit(G_FFMOS_CON2_GPIO, G_FFMOS_CON2_PIN, SET);
|
||||
//// V_ADC = Get_ConversionVal(get_adc(PV2_VOLT_IN));
|
||||
//// V_ADC = get_aftercalculationAdc(PV2_VOLT_IN);
|
||||
//// V_ADC = get_adc(PV2_VOLT_IN);
|
||||
//// GPIO_WriteBit(G_FFMOS_CON2_GPIO, G_FFMOS_CON2_PIN, RESET);
|
||||
//
|
||||
// V = (float)(V_ADC) * P_PV2_VOLT_IN;
|
||||
//
|
||||
//#ifdef enable_Printf_VI
|
||||
// printf("\n PV2_VOLT_IN ADC : %d \n", V_ADC);
|
||||
// printf(" PV2_VOLT_IN V : %d /100 \n", (int)(V * 100));
|
||||
//#endif
|
||||
//
|
||||
// return V;
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "gpio.h"
|
||||
#include "sl_protocol.h"
|
||||
#include "task.h"
|
||||
#include "adc.h"
|
||||
|
||||
#include "uart_dev.h"
|
||||
|
||||
|
@ -705,13 +706,11 @@ void MpptMode(void)
|
|||
|
||||
|
||||
|
||||
// if (g_Mppt_Para.Input_Voltage < StopSolarOpenCircuitV
|
||||
// && (g_Mppt_Para.Discharg_Current >= g_Mppt_Para.Charg_Current
|
||||
// || g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current < 0.05)) {
|
||||
if ((g_Mppt_Para.Input_Voltage < StopSolarOpenCircuitV && g_Mppt_Para.Charg_Current < 0.05)
|
||||
&& g_Mppt_Para.MPPT_Mode != NoWork) {
|
||||
if (g_Mppt_Para.Input_Voltage < StopSolarOpenCircuitV
|
||||
&& (g_Mppt_Para.Discharg_Current >= g_Mppt_Para.Charg_Current
|
||||
|| g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current < 0.05)) {
|
||||
g_Mppt_Para.MPPT_Mode = NoWork;
|
||||
// printf("nowork \n");
|
||||
printf("nowork \n");
|
||||
stop_mpptWork();
|
||||
TimeSliceOffset_Register(&m_startMpptControl, Task_startMpptControl
|
||||
, startMpptControl_reloadVal, startMpptControl_offset);
|
||||
|
@ -809,118 +808,144 @@ void findMiNDutyRatio(void)
|
|||
|
||||
void test(void)
|
||||
{
|
||||
// mppt_readjust();
|
||||
// Get_OutputPower();
|
||||
|
||||
// mppt_constantVoltage(18);
|
||||
|
||||
// findMiNDutyRatio();
|
||||
// MpptContorl();
|
||||
|
||||
// printf_data();
|
||||
// void MpptContorl();
|
||||
|
||||
// mppt_constantVoltageO(12);
|
||||
|
||||
// FloatingCharge();
|
||||
// mppt_readJust();
|
||||
|
||||
// mppt_constantCurrentO(1);
|
||||
|
||||
|
||||
// if (g_interruptNum < 5) {
|
||||
// g_interruptNum++;
|
||||
// return;
|
||||
// }
|
||||
// g_Mppt_Para.Charg_Current = get_capturedata(get_CHG_CURR);
|
||||
// g_Mppt_Para.Discharg_Current = get_capturedata(get_DSG_CURR);
|
||||
// g_Mppt_Para.Output_Voltage = get_capturedata(get_PV_VOLT_OUT);
|
||||
// g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage;
|
||||
|
||||
g_Mppt_Para.Charg_Current = get_CHG_CURR();
|
||||
g_Mppt_Para.Discharg_Current = get_DSG_CURR();
|
||||
g_Mppt_Para.Output_Voltage = get_PV_VOLT_OUT();
|
||||
g_Mppt_Para.Input_Voltage = get_PV1_VOLT_IN();
|
||||
// g_Mppt_Para.Input_Voltage = get_SYS_VOLT_IN();
|
||||
// g_Mppt_Para.HighSideMos_Temperature = get_MOSFET_Temper();
|
||||
// g_Mppt_Para.Solar_Open_Circuit_Voltage = get_PV_VOLT_IN();
|
||||
|
||||
// mppt_constantVoltage(18);
|
||||
// return;
|
||||
// printf("\n\n\n");
|
||||
// printf("num = %d \n", g_adcData.num);
|
||||
// printf("Charg_Current = %d/1000 \n", (int)(g_Mppt_Para.Charg_Current * 1000));
|
||||
// printf("Output_Voltage = %d/1000 \n", (int)(g_Mppt_Para.Output_Voltage * 1000));
|
||||
// printf("Discharg_Current = %d/1000 \n", (int)(g_Mppt_Para.Discharg_Current * 1000));
|
||||
// printf("\n\n\n");
|
||||
|
||||
// printf("%d\n", g_adcData.num);
|
||||
printf("%d\n", (int)(g_Mppt_Para.Charg_Current * 1000));
|
||||
printf("%d\n", (int)(g_Mppt_Para.Output_Voltage * 1000));
|
||||
printf("%d\r\n", (int)(g_Mppt_Para.Discharg_Current * 1000));
|
||||
|
||||
if (g_Mppt_Para.Discharg_Current == 0 && g_Mppt_Para.Charg_Current == 0) {
|
||||
return;
|
||||
}
|
||||
// g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage;
|
||||
// printf("Input_Voltage = %d/1000 \n", (int)(g_Mppt_Para.Input_Voltage * 1000));
|
||||
// printf("get_PV_VOLT_IN1 = %d/1000 \n", (int)(get_PV_VOLT_IN1() * 1000));
|
||||
// printf("HighSideMos_Temperature = %d/1000 \n", (int)(g_Mppt_Para.HighSideMos_Temperature * 1000));
|
||||
|
||||
// static float_t Volt = 0.7;
|
||||
// static float_t Curr = 5.5;
|
||||
// static float_t loopImpedance;
|
||||
// static uint8_t onlyone = 1;
|
||||
// if (onlyone) {
|
||||
// loopImpedance = (float_t)g_slConfigInfo.loopImpedance / 100;
|
||||
// }
|
||||
// g_adcData.num = 0;
|
||||
|
||||
|
||||
static float_t inBatteryCurr;
|
||||
static float_t outBatteryCurr;
|
||||
inBatteryCurr = g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current;
|
||||
outBatteryCurr = g_Mppt_Para.Discharg_Current - g_Mppt_Para.Charg_Current;
|
||||
if (inBatteryCurr > 0.1) {
|
||||
g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage - inBatteryCurr * g_impedance;
|
||||
} else {
|
||||
g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage;
|
||||
}
|
||||
|
||||
if (g_batteryState == 0 && (inBatteryCurr > 0.1 || outBatteryCurr > 0.1) && g_Mppt_Para.Output_Voltage < 14.2) {
|
||||
// printf("int g_batteryState : %d\n", g_batteryState);
|
||||
g_batteryState = 1;
|
||||
// TimeSliceOffset_Register(&m_impedanceCalculation, Task_impedanceCalculation
|
||||
// , impedanceCalculation_reloadVal, impedanceCalculation_reloadVal);
|
||||
}
|
||||
|
||||
// mppt_constantVoltage(18);
|
||||
|
||||
// if (g_Mppt_Para.MPPT_Mode == CONSTANTCURRENT
|
||||
// || g_Mppt_Para.MPPT_Mode == CONSTANTVOLTAGE) {
|
||||
//// mppt_readjust();
|
||||
//// Get_OutputPower();
|
||||
//
|
||||
// g_Mppt_Para.Battery_Voltage = get_capturedata(get_PV_VOLT_OUT)
|
||||
// - g_impedance * (g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current);
|
||||
// } else {
|
||||
// g_Mppt_Para.Battery_Voltage = get_capturedata(get_PV_VOLT_OUT);
|
||||
// }
|
||||
|
||||
// voltOut = get_capturedata(get_PV_VOLT_OUT);
|
||||
// g_Mppt_Para.Battery_Voltage = voltOut - g_impedance * (g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current);
|
||||
|
||||
|
||||
// ConstantVoltageCharge();
|
||||
// return;
|
||||
|
||||
if (!overTemperature) {
|
||||
MpptMode();
|
||||
MpptContorl();
|
||||
}
|
||||
|
||||
|
||||
// mppt_constantVoltageO(12);
|
||||
|
||||
// static uint32_t run_num = 0;
|
||||
// if (1000 < run_num++) {
|
||||
// FloatingCharge();
|
||||
// run_num = 1200;
|
||||
// printf("in floatcharge \n");
|
||||
//// mppt_constantVoltage(18);
|
||||
//
|
||||
//// findMiNDutyRatio();
|
||||
//// MpptContorl();
|
||||
//
|
||||
//// printf_data();
|
||||
//// void MpptContorl();
|
||||
//
|
||||
//// mppt_constantVoltageO(12);
|
||||
//
|
||||
//// FloatingCharge();
|
||||
//// mppt_readJust();
|
||||
//
|
||||
//// mppt_constantCurrentO(1);
|
||||
//
|
||||
//
|
||||
//// if (g_interruptNum < 5) {
|
||||
//// g_interruptNum++;
|
||||
//// return;
|
||||
//// }
|
||||
//// g_Mppt_Para.Charg_Current = get_capturedata(get_CHG_CURR);
|
||||
//// g_Mppt_Para.Discharg_Current = get_capturedata(get_DSG_CURR);
|
||||
//// g_Mppt_Para.Output_Voltage = get_capturedata(get_PV_VOLT_OUT);
|
||||
//// g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage;
|
||||
// g_Mppt_Para.Charg_Current = get_CHG_CURR();
|
||||
// g_Mppt_Para.Discharg_Current = get_DSG_CURR();
|
||||
// g_Mppt_Para.Output_Voltage = get_PV_VOLT_OUT();
|
||||
// g_Mppt_Para.Input_Voltage = get_PV1_VOLT_IN();
|
||||
//
|
||||
//// mppt_constantVoltage(18);
|
||||
//// return;
|
||||
//
|
||||
//
|
||||
// if (g_Mppt_Para.Discharg_Current == 0 && g_Mppt_Para.Charg_Current == 0) {
|
||||
// return;
|
||||
// }
|
||||
// mppt_readJust();
|
||||
// mppt_constantCurrentO(1.2);
|
||||
|
||||
|
||||
// int16_t var = 0;
|
||||
// char buff[4];
|
||||
// for (var = 0; var < 100; ++var) {
|
||||
// sprintf(buff, "%3d:", var);
|
||||
// uart_dev_write(g_gw485_uart4_handle, buff, sizeof(buff));
|
||||
// uart_dev_write(g_gw485_uart4_handle, "1234567890\n", sizeof("1234567890\n"));
|
||||
// Delay_Ms(1);
|
||||
//// g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage;
|
||||
//
|
||||
//// static float_t Volt = 0.7;
|
||||
//// static float_t Curr = 5.5;
|
||||
//// static float_t loopImpedance;
|
||||
//// static uint8_t onlyone = 1;
|
||||
//// if (onlyone) {
|
||||
//// loopImpedance = (float_t)g_slConfigInfo.loopImpedance / 100;
|
||||
//// }
|
||||
//
|
||||
//
|
||||
// static float_t inBatteryCurr;
|
||||
// static float_t outBatteryCurr;
|
||||
// inBatteryCurr = g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current;
|
||||
// outBatteryCurr = g_Mppt_Para.Discharg_Current - g_Mppt_Para.Charg_Current;
|
||||
// if (inBatteryCurr > 0.1) {
|
||||
// g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage - inBatteryCurr * g_impedance;
|
||||
// } else {
|
||||
// g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage;
|
||||
// }
|
||||
// uart_dev_write(g_gw485_uart4_handle, "\n\n\n\n\n\n", sizeof("\n\n\n\n\n\n"));
|
||||
//
|
||||
// if (g_batteryState == 0 && (inBatteryCurr > 0.1 || outBatteryCurr > 0.1) && g_Mppt_Para.Output_Voltage < 14.2) {
|
||||
//// printf("int g_batteryState : %d\n", g_batteryState);
|
||||
// g_batteryState = 1;
|
||||
//// TimeSliceOffset_Register(&m_impedanceCalculation, Task_impedanceCalculation
|
||||
//// , impedanceCalculation_reloadVal, impedanceCalculation_reloadVal);
|
||||
// }
|
||||
//
|
||||
//// mppt_constantVoltage(18);
|
||||
//
|
||||
//// if (g_Mppt_Para.MPPT_Mode == CONSTANTCURRENT
|
||||
//// || g_Mppt_Para.MPPT_Mode == CONSTANTVOLTAGE) {
|
||||
////
|
||||
//// g_Mppt_Para.Battery_Voltage = get_capturedata(get_PV_VOLT_OUT)
|
||||
//// - g_impedance * (g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current);
|
||||
//// } else {
|
||||
//// g_Mppt_Para.Battery_Voltage = get_capturedata(get_PV_VOLT_OUT);
|
||||
//// }
|
||||
//
|
||||
//// voltOut = get_capturedata(get_PV_VOLT_OUT);
|
||||
//// g_Mppt_Para.Battery_Voltage = voltOut - g_impedance * (g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current);
|
||||
//
|
||||
//
|
||||
//// ConstantVoltageCharge();
|
||||
//// return;
|
||||
//
|
||||
// if (!overTemperature) {
|
||||
// MpptMode();
|
||||
// MpptContorl();
|
||||
// }
|
||||
//
|
||||
//
|
||||
// mppt_constantVoltageO(12);
|
||||
//
|
||||
//// static uint32_t run_num = 0;
|
||||
//// if (1000 < run_num++) {
|
||||
//// FloatingCharge();
|
||||
//// run_num = 1200;
|
||||
//// printf("in floatcharge \n");
|
||||
//// return;
|
||||
//// }
|
||||
//// mppt_readJust();
|
||||
//// mppt_constantCurrentO(1.2);
|
||||
//
|
||||
//
|
||||
//// int16_t var = 0;
|
||||
//// char buff[4];
|
||||
//// for (var = 0; var < 100; ++var) {
|
||||
//// sprintf(buff, "%3d:", var);
|
||||
//// uart_dev_write(g_gw485_uart4_handle, buff, sizeof(buff));
|
||||
//// uart_dev_write(g_gw485_uart4_handle, "1234567890\n", sizeof("1234567890\n"));
|
||||
//// Delay_Ms(1);
|
||||
//// }
|
||||
//// uart_dev_write(g_gw485_uart4_handle, "\n\n\n\n\n\n", sizeof("\n\n\n\n\n\n"));
|
||||
}
|
||||
|
||||
|
||||
|
|
183
App/src/task.c
183
App/src/task.c
|
@ -78,80 +78,91 @@ void Task_RunLED(void)
|
|||
// printf(" \n");
|
||||
// uart_sendstr(g_bat485_uart3_handle, " \n");
|
||||
|
||||
uart_dev_write(g_bat485_uart3_handle, " \n", sizeof(" \n"));
|
||||
// uart_dev_write(g_bat485_uart3_handle, " \n", sizeof(" \n"));
|
||||
//
|
||||
// char buffer[80];
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " duty_ratio : %d/1000 \n", (int)(g_duty_ratio * 1000));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " Input_Voltage : %d/100 \n", (int)(g_Mppt_Para.Input_Voltage * 100));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " vout : %d/100 \n", (int)(g_Mppt_Para.Output_Voltage * 100));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " vBattery : %d/100 \n", (int)(g_Mppt_Para.Battery_Voltage * 100));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " Iout : %d/100 \n", (int)(g_Mppt_Para.Charg_Current * 100));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " Idisout : %d/100 \n", (int)(g_Mppt_Para.Discharg_Current * 100));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " mosT : %d/10 \n", (int)(g_Mppt_Para.HighSideMos_Temperature * 10));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " impedance : %d/1000 \n", (int)(g_impedance * 1000));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " g_impedanceStart : %d \n", g_impedanceStart);
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " mosState : %d \n", (int)(g_Mppt_Para.DischargMos_State));
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " batteryState : %d \n", g_batteryState);
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " outputAgainFlag : %d \n", outputAgainFlag);
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " excessiveLoadFlag : %d \n", excessiveLoadFlag);
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// memset(buffer, 0, sizeof(buffer));
|
||||
// sprintf(buffer, " 0.没有工作; 1.涓流模式; 2.恒流模式; 3.恒压模式; 4.浮充模式; 5.没有电池 : %d \n", g_Mppt_Para.MPPT_Mode);
|
||||
// uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
//
|
||||
// uart_dev_write(g_bat485_uart3_handle, " \n", sizeof(" \n"));
|
||||
|
||||
char buffer[80];
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " duty_ratio : %d/1000 \n", (int)(g_duty_ratio * 1000));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " Input_Voltage : %d/100 \n", (int)(g_Mppt_Para.Input_Voltage * 100));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " vout : %d/100 \n", (int)(g_Mppt_Para.Output_Voltage * 100));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " vBattery : %d/100 \n", (int)(g_Mppt_Para.Battery_Voltage * 100));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " Iout : %d/100 \n", (int)(g_Mppt_Para.Charg_Current * 100));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " Idisout : %d/100 \n", (int)(g_Mppt_Para.Discharg_Current * 100));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " mosT : %d/10 \n", (int)(g_Mppt_Para.HighSideMos_Temperature * 10));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " impedance : %d/1000 \n", (int)(g_impedance * 1000));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " g_impedanceStart : %d \n", g_impedanceStart);
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " mosState : %d \n", (int)(g_Mppt_Para.DischargMos_State));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " batteryState : %d \n", g_batteryState);
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " outputAgainFlag : %d \n", outputAgainFlag);
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " excessiveLoadFlag : %d \n", excessiveLoadFlag);
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " inPower : %d \n", (int)(g_Mppt_Para.inPower));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " outPower : %d \n", (int)(g_Mppt_Para.outPower));
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
sprintf(buffer, " 0.没有工作; 1.涓流模式; 2.恒流模式; 3.恒压模式; 4.浮充模式; 5.没有电池 : %d \n", g_Mppt_Para.MPPT_Mode);
|
||||
uart_dev_write(g_bat485_uart3_handle, buffer, sizeof(buffer));
|
||||
|
||||
uart_dev_write(g_bat485_uart3_handle, " \n", sizeof(" \n"));
|
||||
|
||||
|
||||
// printf("vout : %d/100 \n", (int)(get_capturedata(get_PV_VOLT_OUT) * 100));
|
||||
|
||||
// get_CHG_CURR();
|
||||
|
||||
// printf("\n\n\n");
|
||||
// printf("num = %d \n", g_adcData.num);
|
||||
// printf("Charg_Current = %d/1000 \n", (int)(g_Mppt_Para.Charg_Current * 1000));
|
||||
// printf("Output_Voltage = %d/1000 \n", (int)(g_Mppt_Para.Output_Voltage * 1000));
|
||||
// printf("Discharg_Current = %d/1000 \n", (int)(g_Mppt_Para.Discharg_Current * 1000));
|
||||
// printf("Input_Voltage = %d/1000 \n", (int)(g_Mppt_Para.Input_Voltage * 1000));
|
||||
// printf("get_PV_VOLT_IN1 = %d/1000 \n", (int)(get_PV_VOLT_IN1() * 1000));
|
||||
// printf("HighSideMos_Temperature = %d/1000 \n", (int)(g_Mppt_Para.HighSideMos_Temperature * 1000));
|
||||
// printf("\n\n\n");
|
||||
|
||||
// printf("%d\n", g_adcData.num);
|
||||
// printf("%d\n", (int)(g_Mppt_Para.Charg_Current * 1000));
|
||||
// printf("%d\n", (int)(g_Mppt_Para.Output_Voltage * 1000));
|
||||
// printf("%d\n", (int)(g_Mppt_Para.Discharg_Current * 1000));
|
||||
// printf("%d\n", (int)(g_Mppt_Para.Input_Voltage * 1000));
|
||||
// printf("%d\n", (int)(g_Mppt_Para.Solar_Open_Circuit_Voltage * 1000));
|
||||
// printf("%d\r\n", (int)(g_Mppt_Para.HighSideMos_Temperature * 1000));
|
||||
|
||||
static uint8_t flag = RESET;
|
||||
flag = !flag;
|
||||
GPIO_WriteBit(RUN_LED_GPIO, RUN_LED_PIN, flag);
|
||||
|
@ -183,7 +194,7 @@ void Task_startMpptControl(void)
|
|||
|
||||
if (g_slConfigInfo.checkSolarOpenCircuitVTime == ++checkSolarOpenCircuitVTimeFlag) {
|
||||
checkSolarOpenCircuitVTimeFlag = 0;
|
||||
g_Mppt_Para.Solar_Open_Circuit_Voltage = get_PV1_VOLT_IN();
|
||||
g_Mppt_Para.Solar_Open_Circuit_Voltage = get_PV_VOLT_IN();
|
||||
// printf("volt in : %d/100 \n", (int)(g_Mppt_Para.Solar_Open_Circuit_Voltage * 100));
|
||||
// char buff[50];
|
||||
// memset(buff, 0, sizeof(buff));
|
||||
|
@ -325,10 +336,10 @@ void Task_refreshRegister(void)
|
|||
// g_Mppt_Para.Discharg_Current = get_capturedata(get_DSG_CURR);
|
||||
// g_Mppt_Para.HighSideMos_Temperature = get_capturedata(get_MOSFET_Temper);
|
||||
// g_Mppt_Para.Battery_Voltage = get_PV_VOLT_OUT();
|
||||
g_Mppt_Para.Output_Voltage = get_PV_VOLT_OUT();
|
||||
g_Mppt_Para.Charg_Current = get_CHG_CURR();
|
||||
g_Mppt_Para.Discharg_Current = get_DSG_CURR();
|
||||
g_Mppt_Para.HighSideMos_Temperature = get_MOSFET_Temper();
|
||||
// g_Mppt_Para.Output_Voltage = get_PV_VOLT_OUT();
|
||||
// g_Mppt_Para.Charg_Current = get_CHG_CURR();
|
||||
// g_Mppt_Para.Discharg_Current = get_DSG_CURR();
|
||||
// g_Mppt_Para.HighSideMos_Temperature = get_MOSFET_Temper();
|
||||
g_Mppt_Para.DischargMos_State = GPIO_ReadOutputDataBit(POW_OUT_CON_GPIO, POW_OUT_CON_PIN)
|
||||
&& GPIO_ReadInputDataBit(DSG_PROT_GPIO, DSG_PROT_PIN);
|
||||
|
||||
|
@ -351,7 +362,7 @@ void Task_refreshRegister(void)
|
|||
|
||||
// g_Mppt_Para.DischargMos_State = GPIO_ReadOutputDataBit(POW_OUT_CON_GPIO, POW_OUT_CON_PIN);
|
||||
// g_Mppt_Para.Solar_Open_Circuit_Voltage = get_capturedata(get_PV1_VOLT_IN);
|
||||
g_Mppt_Para.Input_Voltage = get_PV1_VOLT_IN();
|
||||
g_Mppt_Para.Input_Voltage = get_PV_VOLT_IN();
|
||||
|
||||
if (g_Mppt_Para.HighSideMos_Temperature < g_slConfigInfo.HighSideMosTemperature_start + 3) {
|
||||
if (overTemperature == 2) {
|
||||
|
@ -759,7 +770,7 @@ void g_Mppt_Para_Init(void)
|
|||
g_Mppt_Para.Discharg_Current = get_DSG_CURR();
|
||||
g_Mppt_Para.Battery_Voltage = g_Mppt_Para.Output_Voltage
|
||||
- (g_Mppt_Para.Charg_Current - g_Mppt_Para.Discharg_Current) * g_impedance;
|
||||
g_Mppt_Para.Solar_Open_Circuit_Voltage = get_PV1_VOLT_IN();
|
||||
g_Mppt_Para.Solar_Open_Circuit_Voltage = get_PV_VOLT_IN();
|
||||
g_Mppt_Para.HighSideMos_Temperature = get_MOSFET_Temper();
|
||||
|
||||
if (g_Mppt_Para.Battery_Voltage < 15 || g_Mppt_Para.Battery_Voltage > 11) {
|
||||
|
@ -792,18 +803,18 @@ void task_Init(void)
|
|||
|
||||
TimeSliceOffset_Register(&m_runled, Task_RunLED, runled_reloadVal, runled_offset);
|
||||
|
||||
TimeSliceOffset_Register(&m_usart, Task_usart, usart_reloadVal, usart_offset);
|
||||
// TimeSliceOffset_Register(&m_usart, Task_usart, usart_reloadVal, usart_offset);
|
||||
|
||||
TimeSliceOffset_Register(&m_wdi, Task_wdi, wdi_reloadVal, wdi_offset);
|
||||
|
||||
// TimeSliceOffset_Register(&m_impedanceCalculation, Task_impedanceCalculation
|
||||
// , impedanceCalculation_reloadVal, impedanceCalculation_reloadVal);
|
||||
|
||||
TimeSliceOffset_Register(&m_refreshRegister, Task_refreshRegister
|
||||
, refreshRegister_reloadVal, refreshRegister_reloadVal);
|
||||
|
||||
TimeSliceOffset_Register(&m_startMpptControl, Task_startMpptControl
|
||||
, startMpptControl_reloadVal, startMpptControl_offset);
|
||||
//
|
||||
// TimeSliceOffset_Register(&m_refreshRegister, Task_refreshRegister
|
||||
// , refreshRegister_reloadVal, refreshRegister_reloadVal);
|
||||
//
|
||||
// TimeSliceOffset_Register(&m_startMpptControl, Task_startMpptControl
|
||||
// , startMpptControl_reloadVal, startMpptControl_offset);
|
||||
|
||||
TimeSliceOffset_Start(); /* Æô¶¯Ê±¼äƬÂÖѯ */
|
||||
}
|
||||
|
@ -816,6 +827,7 @@ void task_Init(void)
|
|||
*/
|
||||
void hardware_Init(void)
|
||||
{
|
||||
TIM2_Init(1);
|
||||
uart_dev_init();
|
||||
PWM_TIM_Configuration();
|
||||
// TIM_SetCompare4(TIM4, 0);
|
||||
|
@ -826,16 +838,17 @@ void hardware_Init(void)
|
|||
POW_OUT_CON_Init();
|
||||
DSG_PROT_Init();
|
||||
WORK_VOLT_INT_Init();
|
||||
ADC_TIM_DMA_Init();
|
||||
// EnPowerSupply_Init();
|
||||
|
||||
// Set_duty_ratio(&g_duty_ratio);
|
||||
|
||||
// uart_dev_write(g_bat485_uart3_handle, " hello world \n", sizeof(" hello world \n"));
|
||||
|
||||
TIM3_Init(1);
|
||||
// TIM_Cmd(TIM3, ENABLE); //TIM3使能
|
||||
TIM3_Init(300);
|
||||
TIM_Cmd(TIM3, ENABLE); //TIM3使能
|
||||
|
||||
currBuffInit();
|
||||
TIM2_Init(1);
|
||||
g_duty_ratio = 0.8;
|
||||
Set_duty_ratio(&g_duty_ratio);
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,10 @@
|
|||
//void rq_debug(const char *fmt, ...){};
|
||||
//#endif
|
||||
|
||||
#define RQ_OK 1
|
||||
#define RQ_ERROR 0
|
||||
#define RQ_OVERFLOW -2
|
||||
|
||||
//³õʼ»¯¶ÓÁÐ
|
||||
int InitRingQueue(RingQueue *q, RQ_ElementType *buff, int size)
|
||||
{
|
||||
|
|
|
@ -11,9 +11,6 @@
|
|||
|
||||
//#define RING_QUEUE_DEBUG //定义本宏会打印RingQueue的调试信息
|
||||
|
||||
#define RQ_OK 1
|
||||
#define RQ_ERROR 0
|
||||
#define RQ_OVERFLOW -2
|
||||
typedef unsigned char RQ_ElementType;//元素类型
|
||||
|
||||
typedef struct _ring_queue
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
#include <stdlib.h>
|
||||
#include "ring_queue2.h"
|
||||
|
||||
|
||||
#define RQ_OK 1
|
||||
#define RQ_ERROR 0
|
||||
#define RQ_OVERFLOW -2
|
||||
//#define RING_QUEUE_DEBUG
|
||||
|
||||
//#ifdef RING_QUEUE_DEBUG
|
||||
|
@ -19,10 +23,6 @@
|
|||
//void rq_debug(const char *fmt, ...){};
|
||||
//#endif
|
||||
|
||||
#define RQ_OK 1
|
||||
#define RQ_ERROR 0
|
||||
#define RQ_OVERFLOW -2
|
||||
|
||||
//³õʼ»¯¶ÓÁÐ
|
||||
int InitRingQueue2(RingQueue2 *q, RQ_ElementType2 *buff, int size)
|
||||
{
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
|
||||
//#define RING_QUEUE_DEBUG //定义本宏会打印RingQueue的调试信息
|
||||
|
||||
//typedef unsigned char RQ_ElementType2;//ÔªËØÀàÐÍ
|
||||
typedef uint16_t RQ_ElementType2;//元素类型
|
||||
|
||||
typedef struct _ring_queue2
|
||||
|
|
|
@ -2,9 +2,47 @@
|
|||
#define __ADC_H
|
||||
|
||||
#include "ch32l103.h"
|
||||
#include "ring_queue2.h"
|
||||
|
||||
//typedef struct _ADC_DATA {
|
||||
// uint16_t total_CHG_CURR; /* 一个控制周期中,adc采集的值之和 充电电流 */
|
||||
// uint16_t num_CHG_CURR; /* 一个控制周期中,adc采集次数之和 */
|
||||
// uint16_t total_PV_VOLT_OUT; /* 输出电压 */
|
||||
// uint16_t num_PV_VOLT_OUT;
|
||||
// uint16_t total_DSG_CURR; /* 放电电流 */
|
||||
// uint16_t num_DSG_CURR;
|
||||
// uint16_t total_PV1_VOLT_IN; /* 系统输入电压 */
|
||||
// uint16_t num_PV1_VOLT_IN;
|
||||
// uint16_t total_PV_VOLT_IN1; /* 太阳能板输出电压 */
|
||||
// uint16_t num_PV_VOLT_IN1;
|
||||
// uint16_t total_MOSFET_Temper; /* mos管温度 */
|
||||
// uint16_t num_MOSFET_Temper;
|
||||
//}ADC_DATA;
|
||||
|
||||
//#define data_len 50
|
||||
//typedef struct _ADC_DATA {
|
||||
// uint16_t num; /* 一个控制周期中,adc采集次数 */
|
||||
// uint16_t CHG_CURR_array[data_len]; /* 充电电流 */
|
||||
// uint16_t PV_VOLT_OUT_array[data_len]; /* 输出电压 */
|
||||
// uint16_t DSG_CURR_array[data_len]; /* 放电电流 */
|
||||
// uint16_t PV_VOLT_IN_array[data_len]; /* 太阳能板输出电压 */
|
||||
// uint16_t SYS_VOLT_IN_array[data_len]; /* 系统输入电压 */
|
||||
// uint16_t MOSFET_Temper_array[data_len]; /* mos管温度 */
|
||||
//}ADC_DATA;
|
||||
|
||||
#define adcBuffSize 100
|
||||
|
||||
typedef struct _ADC_DATA {
|
||||
RingQueue2 RQCHG_CURR;
|
||||
uint32_t total_CHG_CURR; /* 充电电流一段时间中adc值的和 */
|
||||
RingQueue2 RQDSG_CURR;
|
||||
uint32_t total_DSG_CURR; /* 放电电流一段时间中adc值的和 */
|
||||
}ADC_DATA;
|
||||
|
||||
extern ADC_DATA g_adcData;
|
||||
extern int16_t Calibrattion_Val;
|
||||
|
||||
void ADC_all_Init(void);
|
||||
void ADC_TIM_DMA_Init(void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
void G_FFMOS_CON_Init(void);
|
||||
|
||||
/* 运行指示灯 */
|
||||
/* RUN_LED --> PA8 */
|
||||
///* RUN_LED --> PA8 */
|
||||
/* RUN_LED --> PB7 */
|
||||
#define RUN_LED_GPIO GPIOA
|
||||
#define RUN_LED_PIN GPIO_Pin_8
|
||||
void RUN_LED_Init(void);
|
||||
|
|
|
@ -15,7 +15,10 @@
|
|||
#define Prescaler 0
|
||||
/* 输出频率为240k */
|
||||
//#define Period 200 - 1
|
||||
/* 输出频率为100k */
|
||||
#define Period 480 - 1
|
||||
/* 输出频率为10k */
|
||||
//#define Period 4800 - 1
|
||||
|
||||
void PWM_TIM_Configuration(void);
|
||||
void Set_duty_ratio(float *duty_ratio);
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#include <adc.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
int16_t Calibrattion_Val = 0;
|
||||
ADC_DATA g_adcData;
|
||||
|
||||
//ADC对应GPIO初始化配置以及ADC初始化配置
|
||||
void ADC_all_Init(void)
|
||||
|
@ -13,7 +14,8 @@ void ADC_all_Init(void)
|
|||
RCC_PB2PeriphClockCmd(RCC_PB2Periph_ADC1, ENABLE);
|
||||
RCC_ADCCLKConfig(RCC_PCLK2_Div2);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //PA1~7对应ADC通道1~7
|
||||
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //PA1~7对应ADC通道1~7
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //PA1~7对应ADC通道1~7
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
|
@ -43,3 +45,291 @@ void ADC_all_Init(void)
|
|||
ADC_Sample_ModeConfig(ADC1,ADC_Sample_Over_1M_Mode);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void DMA1_Channel1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
|
||||
/*
|
||||
* 初始化ADC的DMA
|
||||
*
|
||||
*
|
||||
*/
|
||||
void DMA_Tx_Init(u32 memadr, u16 bufsize)
|
||||
{
|
||||
DMA_InitTypeDef DMA_InitStructure = {0};
|
||||
NVIC_InitTypeDef NVIC_InitStructure = {0};
|
||||
|
||||
RCC_HBPeriphClockCmd(RCC_HBPeriph_DMA1, ENABLE);
|
||||
|
||||
DMA_DeInit(DMA1_Channel1);
|
||||
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->RDATAR; //ADC1地址
|
||||
DMA_InitStructure.DMA_MemoryBaseAddr = memadr; //内存地址
|
||||
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //方向(从外设到内存)
|
||||
DMA_InitStructure.DMA_BufferSize = bufsize; //传输内容的大小
|
||||
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址固定
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址递增
|
||||
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //外设数据单位
|
||||
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //内存数据单位
|
||||
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //DMA模式:循环传输
|
||||
DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh; //优先级:高
|
||||
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //禁止内存到内存的传输
|
||||
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
|
||||
|
||||
DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE); //使能传输完成中断
|
||||
|
||||
//初始化TIM NVIC,设置中断优先级分组
|
||||
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn; //
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //设置抢占优先级0
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //设置响应优先级3
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道中断
|
||||
NVIC_Init(&NVIC_InitStructure); //初始化NVIC
|
||||
|
||||
DMA_Cmd(DMA1_Channel1,ENABLE);
|
||||
|
||||
}
|
||||
|
||||
void TIM1_Init1(u16 arr,u16 psc)
|
||||
{
|
||||
// /* 初始化PA8为模拟通道输入引脚 */
|
||||
// GPIO_InitTypeDef GPIO_InitStructure={0};
|
||||
// RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIOA, ENABLE);
|
||||
//// RCC_APB2PeriphClockCmd(RCC_PB2Periph_AFIO, ENABLE); //打开管脚复用AFIO时钟
|
||||
//// GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE);
|
||||
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
|
||||
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
|
||||
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
// GPIO_Init( GPIOA, &GPIO_InitStructure );
|
||||
|
||||
TIM_OCInitTypeDef TIM_OCInitStructure={0};
|
||||
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure={0};
|
||||
|
||||
RCC_PB2PeriphClockCmd(RCC_PB2Periph_TIM1, ENABLE);
|
||||
|
||||
// TIM_TimeBaseInitStructure.TIM_Period = 30000 - 1;
|
||||
// TIM_TimeBaseInitStructure.TIM_Prescaler = 48000 - 1;
|
||||
TIM_TimeBaseInitStructure.TIM_Period = arr - 1;
|
||||
TIM_TimeBaseInitStructure.TIM_Prescaler = psc - 1;
|
||||
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
||||
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
||||
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure);
|
||||
|
||||
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
|
||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||
TIM_OCInitStructure.TIM_Pulse = 10;
|
||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
|
||||
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
|
||||
|
||||
TIM_CtrlPWMOutputs(TIM1, ENABLE);
|
||||
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Disable);
|
||||
TIM_ARRPreloadConfig(TIM1, ENABLE);
|
||||
TIM_Cmd(TIM1, ENABLE);
|
||||
}
|
||||
|
||||
#define CHG_CURR ADC_Channel_1
|
||||
#define PV_VOLT_OUT ADC_Channel_2
|
||||
#define DSG_CURR ADC_Channel_3
|
||||
#define PV_VOLT_IN ADC_Channel_4
|
||||
#define SYS_VOLT_IN ADC_Channel_5
|
||||
#define MOSFET_Temper ADC_Channel_6
|
||||
#define PV2_VOLT_IN ADC_Channel_7
|
||||
|
||||
static uint16_t CHG_CURR_buff[adcBuffSize];
|
||||
static uint16_t DSG_CURR_buff[adcBuffSize];
|
||||
|
||||
/*
|
||||
* 通过定时器和DMA完成adc的采集
|
||||
* 定时器采用定时器1的cc1完成ADC的外部触发 PA8 --> TIM1_CH1
|
||||
* ADC通过DMA的通道1完成数据的传输
|
||||
*
|
||||
* */
|
||||
volatile uint16_t ADC_ConvertedValue[2]; //ADC采样的数据
|
||||
void ADC_TIM_DMA_Init(void)
|
||||
{
|
||||
InitRingQueue2(&g_adcData.RQCHG_CURR, CHG_CURR_buff, adcBuffSize);
|
||||
InitRingQueue2(&g_adcData.RQDSG_CURR, DSG_CURR_buff, adcBuffSize);
|
||||
for (int var = 0; var < adcBuffSize; ++var) {
|
||||
InRingQueue2(&g_adcData.RQCHG_CURR, 0);
|
||||
InRingQueue2(&g_adcData.RQDSG_CURR, 0);
|
||||
}
|
||||
// while (RingQueueLength2(&g_adcData.RQCHG_CURR) != adcBuffSize) {
|
||||
// InRingQueue2(&g_adcData.RQCHG_CURR, 0);
|
||||
// };
|
||||
g_adcData.total_CHG_CURR = 0;
|
||||
|
||||
// while (RingQueueLength2(&g_adcData.RQDSG_CURR) != adcBuffSize) {
|
||||
// InRingQueue2(&g_adcData.RQDSG_CURR, 0);
|
||||
// };
|
||||
g_adcData.total_DSG_CURR = 0;
|
||||
|
||||
|
||||
ADC_InitTypeDef ADC_InitStructure = {0};
|
||||
GPIO_InitTypeDef GPIO_InitStructure = {0};
|
||||
|
||||
RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIOA, ENABLE);
|
||||
RCC_PB2PeriphClockCmd(RCC_PB2Periph_ADC1, ENABLE);
|
||||
RCC_ADCCLKConfig(RCC_PCLK2_Div2);
|
||||
|
||||
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //PA1~7对应ADC通道1~7
|
||||
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
|
||||
// GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_3; //PA1~7对应ADC通道1~7
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
ADC_DeInit(ADC1);
|
||||
Calibrattion_Val=Get_CalibrationValue(ADC1);
|
||||
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
|
||||
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
|
||||
// ADC_InitStructure.ADC_ScanConvMode = DISABLE;
|
||||
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
|
||||
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
|
||||
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
|
||||
// ADC_InitStructure.ADC_NbrOfChannel = 1;
|
||||
ADC_InitStructure.ADC_NbrOfChannel = 2;
|
||||
ADC_Init(ADC1, &ADC_InitStructure);
|
||||
|
||||
//使能ADC、DMA
|
||||
ADC_DMACmd(ADC1,ENABLE);
|
||||
ADC_Cmd(ADC1, ENABLE);
|
||||
|
||||
// ADC_InjectedSequencerLengthConfig(ADC1, 1);
|
||||
// ADC_InjectedChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_CyclesMode5);
|
||||
// ADC_ExternalTrigInjectedConvCmd(ADC1, ENABLE);
|
||||
|
||||
ADC_FIFO_Cmd(ADC1, ENABLE);
|
||||
ADC_BufferCmd(ADC1, DISABLE); //disable buffer
|
||||
ADC_ResetCalibration(ADC1);
|
||||
while(ADC_GetResetCalibrationStatus(ADC1));
|
||||
ADC_StartCalibration(ADC1);
|
||||
while(ADC_GetCalibrationStatus(ADC1));
|
||||
|
||||
// ADC_RegularChannelConfig(ADC1, CHG_CURR, 1, ADC_SampleTime_CyclesMode5);
|
||||
// ADC_RegularChannelConfig(ADC1, PV_VOLT_OUT, 2, ADC_SampleTime_CyclesMode5);
|
||||
// ADC_RegularChannelConfig(ADC1, DSG_CURR, 3, ADC_SampleTime_CyclesMode5);
|
||||
// ADC_RegularChannelConfig(ADC1, PV_VOLT_IN, 4, ADC_SampleTime_CyclesMode5);
|
||||
// ADC_RegularChannelConfig(ADC1, SYS_VOLT_IN, 5, ADC_SampleTime_CyclesMode5);
|
||||
// ADC_RegularChannelConfig(ADC1, MOSFET_Temper, 6, ADC_SampleTime_CyclesMode5);
|
||||
|
||||
ADC_RegularChannelConfig(ADC1, CHG_CURR, 1, ADC_SampleTime_CyclesMode5);
|
||||
ADC_RegularChannelConfig(ADC1, DSG_CURR, 2, ADC_SampleTime_CyclesMode5);
|
||||
|
||||
// /* 设置定时器输出的周期为1S */
|
||||
// TIM1_Init1(1000, 48000);
|
||||
/* 设置定时器输出的周期为30mS */
|
||||
// TIM1_Init1(30, 48000);
|
||||
/* 设置定时器输出的周期为100uS */
|
||||
TIM1_Init1(10, 48000);
|
||||
DMA_Tx_Init((u32)&ADC_ConvertedValue, 2);
|
||||
|
||||
|
||||
|
||||
// ADC_DeInit(ADC1);
|
||||
// Calibrattion_Val = Get_CalibrationValue(ADC1);
|
||||
// printf("Calibrattion_Val : %d\n", Calibrattion_Val);
|
||||
// ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
|
||||
// ADC_InitStructure.ADC_ScanConvMode = DISABLE;
|
||||
// ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
|
||||
// ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
|
||||
// ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
|
||||
// ADC_InitStructure.ADC_NbrOfChannel = 1;
|
||||
// ADC_Init(ADC1, &ADC_InitStructure);
|
||||
//
|
||||
// ADC_Cmd(ADC1, ENABLE);
|
||||
//
|
||||
// ADC_FIFO_Cmd(ADC1, ENABLE);
|
||||
// ADC_BufferCmd(ADC1, DISABLE); //disable buffer
|
||||
//
|
||||
// ADC_ResetCalibration(ADC1);
|
||||
// while(ADC_GetResetCalibrationStatus(ADC1));
|
||||
// ADC_StartCalibration(ADC1);
|
||||
// while(ADC_GetCalibrationStatus(ADC1));
|
||||
//
|
||||
// RCC_ADCCLKConfig(RCC_HCLK_ADC);
|
||||
// ADC_DutyDelayCmd(ADC1,ENABLE);
|
||||
// ADC_Sample_ModeConfig(ADC1,ADC_Sample_Over_1M_Mode);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 将采集的adc进行校准
|
||||
* @param val 采集的adc数据
|
||||
* @retval 校准后的adc数据
|
||||
*/
|
||||
uint16_t Get_ConversionVal1(int16_t val)
|
||||
{
|
||||
if((val + Calibrattion_Val) < 0 || val == 0)
|
||||
return 0;
|
||||
if((Calibrattion_Val + val) > 4095 || val == 4095)
|
||||
return 4095;
|
||||
return (val + Calibrattion_Val);
|
||||
}
|
||||
|
||||
void DMA1_Channel1_IRQHandler(void)
|
||||
{
|
||||
// printf("\r\nEnter DMA interrupt\r\n");
|
||||
if(DMA_GetITStatus(DMA1_IT_TC1)!=RESET)
|
||||
{
|
||||
//中断处理代码
|
||||
static uint16_t temp;
|
||||
|
||||
OutRingQueue2(&g_adcData.RQCHG_CURR, &temp);
|
||||
g_adcData.total_CHG_CURR -= temp;
|
||||
OutRingQueue2(&g_adcData.RQDSG_CURR, &temp);
|
||||
g_adcData.total_DSG_CURR -= temp;
|
||||
|
||||
g_adcData.total_CHG_CURR += ADC_ConvertedValue[0];
|
||||
g_adcData.total_DSG_CURR += ADC_ConvertedValue[1];
|
||||
InRingQueue2(&g_adcData.RQCHG_CURR, ADC_ConvertedValue[0]);
|
||||
InRingQueue2(&g_adcData.RQDSG_CURR, ADC_ConvertedValue[1]);
|
||||
|
||||
DMA_ClearITPendingBit(DMA1_IT_TC1);
|
||||
// g_adcData.CHG_CURR_array[g_adcData.num] = Get_ConversionVal1(ADC_ConvertedValue[0]);
|
||||
// g_adcData.PV_VOLT_OUT_array[g_adcData.num] = Get_ConversionVal1(ADC_ConvertedValue[1]);
|
||||
// g_adcData.DSG_CURR_array[g_adcData.num] = Get_ConversionVal1(ADC_ConvertedValue[2]);
|
||||
// g_adcData.PV_VOLT_IN_array[g_adcData.num] = Get_ConversionVal1(ADC_ConvertedValue[3]);
|
||||
// g_adcData.SYS_VOLT_IN_array[g_adcData.num] = Get_ConversionVal1(ADC_ConvertedValue[4]);
|
||||
// g_adcData.MOSFET_Temper_array[g_adcData.num] = Get_ConversionVal1(ADC_ConvertedValue[5]);
|
||||
// g_adcData.num++;
|
||||
|
||||
|
||||
// g_adcData.CHG_CURR_array[g_adcData.num] = ADC_ConvertedValue[0];
|
||||
// g_adcData.DSG_CURR_array[g_adcData.num] = ADC_ConvertedValue[1];
|
||||
// g_adcData.PV_VOLT_OUT_array[g_adcData.num] = ADC_ConvertedValue[2];
|
||||
// g_adcData.num++;
|
||||
|
||||
// g_adcData.num++;
|
||||
|
||||
// g_adcData.total_CHG_CURR += Get_ConversionVal1(ADC_ConvertedValue[0]);
|
||||
|
||||
// printf("%d\n", ADC_ConvertedValue[0]);
|
||||
// printf("%d\n", ADC_ConvertedValue[1]);
|
||||
|
||||
// printf("%d\n", ADC_ConvertedValue[3]);
|
||||
// printf("%d\n", ADC_ConvertedValue[4]);
|
||||
// printf("%d\r\n", ADC_ConvertedValue[5]);
|
||||
|
||||
// g_adcData.total_PV_VOLT_OUT += Get_ConversionVal1(ADC_ConvertedValue[1]);
|
||||
// g_adcData.total_DSG_CURR += Get_ConversionVal1(ADC_ConvertedValue[2]);
|
||||
// g_adcData.total_PV1_VOLT_IN += Get_ConversionVal1(ADC_ConvertedValue[3]);
|
||||
// g_adcData.total_PV_VOLT_IN1 += Get_ConversionVal1(ADC_ConvertedValue[4]);
|
||||
// g_adcData.total_MOSFET_Temper += Get_ConversionVal1(ADC_ConvertedValue[5]);
|
||||
|
||||
// printf("\r\n The current ADCH1 value = %d \r\n", ADC_ConvertedValue[0]);
|
||||
// printf("\r\n The current ADCH2 value = %d \r\n", ADC_ConvertedValue[1]);
|
||||
// printf("\r\n The current ADCH3 value = %d \r\n", ADC_ConvertedValue[2]);
|
||||
// printf("\r\n The current ADCH4 value = %d \r\n", ADC_ConvertedValue[3]);
|
||||
// printf("\r\n The current ADCH5 value = %d \r\n", ADC_ConvertedValue[4]);
|
||||
// printf("\r\n The current ADCH5 value = %d \r\n", ADC_ConvertedValue[5]);
|
||||
// ADC_ConvertedValue[0] = 0;
|
||||
// ADC_ConvertedValue[1] = 0;
|
||||
// ADC_ConvertedValue[2] = 0;
|
||||
// ADC_ConvertedValue[3] = 0;
|
||||
// ADC_ConvertedValue[4] = 0;
|
||||
// ADC_ConvertedValue[5] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ void G_FFMOS_CON_Init(void)
|
|||
void RUN_LED_Init(void)
|
||||
{
|
||||
RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIOA, ENABLE);
|
||||
RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIOB, ENABLE);
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Pin = RUN_LED_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
#include "pwm.h"
|
||||
#include "mppt_control.h"
|
||||
#include "task.h"
|
||||
#include "collect_Conversion.h"
|
||||
#include "sl_protocol.h"
|
||||
|
||||
void TIM3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
void TIM2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
|
@ -49,7 +47,7 @@ void TIM3_Int_Init(uint16_t arr, uint16_t psc)
|
|||
//初始化TIM NVIC,设置中断优先级分组
|
||||
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //设置抢占优先级0
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //ÉèÖÃÏìÓ¦ÓÅÏȼ¶3
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //ノ靹テマ<EFBE83>ヲモナマネシカ3
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道1中断
|
||||
NVIC_Init(&NVIC_InitStructure); //初始化NVIC
|
||||
|
||||
|
@ -93,7 +91,7 @@ void TIM2_Int_Init(uint16_t arr, uint16_t psc)
|
|||
//初始化TIM NVIC,设置中断优先级分组
|
||||
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM2中断
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //设置抢占优先级0
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //ÉèÖÃÏìÓ¦ÓÅÏȼ¶3
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //ノ靹テマ<EFBE83>ヲモナマネシカ3
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道1中断
|
||||
NVIC_Init(&NVIC_InitStructure); //初始化NVIC
|
||||
|
||||
|
@ -105,12 +103,9 @@ void TIM2_IRQHandler(void)
|
|||
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { //检查TIM2中断是否发生。
|
||||
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除TIM1的中断挂起位。
|
||||
TimeSliceOffset_Produce();
|
||||
|
||||
g_Mppt_Para.Charg_Current = get_CHG_CURR();
|
||||
g_Mppt_Para.Discharg_Current = get_DSG_CURR();
|
||||
|
||||
g_Mppt_Para.inPower += g_Mppt_Para.Charg_Current * g_Mppt_Para.Output_Voltage;
|
||||
g_Mppt_Para.outPower += g_Mppt_Para.Discharg_Current * g_Mppt_Para.Output_Voltage;
|
||||
// if (outputAgainFlag == 1) {
|
||||
// outputAgainFlag = 0;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -140,7 +135,7 @@ void SysTick_Handler(void)
|
|||
void TIM1_Init(uint16_t delay_ms)
|
||||
{
|
||||
/* 分频系数 */
|
||||
uint16_t psc = (SystemCoreClock / 10000) - 1;
|
||||
uint16_t psc = (SystemCoreClock / 10) - 1;
|
||||
/* */
|
||||
uint16_t arr = delay_ms * 10 - 1;
|
||||
// uint16_t arr = 10 - 1;
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -31,6 +31,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
App/src/%.o: ../App/src/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
|
@ -30,12 +30,12 @@ App/src/task.o: ../App/src/task.c D:\psx\MPPT\git\App\inc/task.h \
|
|||
D:\psx\MPPT\git\Drivers\RingQueue/ring_queue.h \
|
||||
D:\psx\MPPT\git\Hardware\inc/rs485.h D:\psx\MPPT\git\App\inc/uart_dev.h \
|
||||
D:\psx\MPPT\git\Hardware\inc/tim.h D:\psx\MPPT\git\Hardware\inc/pwm.h \
|
||||
D:\psx\MPPT\git\Hardware\inc/adc.h D:\psx\MPPT\git\Hardware\inc/gpio.h \
|
||||
D:\psx\MPPT\git\Hardware\inc/flash.h \
|
||||
D:\psx\MPPT\git\Hardware\inc/adc.h \
|
||||
D:\psx\MPPT\git\Drivers\RingQueue2/ring_queue2.h \
|
||||
D:\psx\MPPT\git\Hardware\inc/gpio.h D:\psx\MPPT\git\Hardware\inc/flash.h \
|
||||
D:\psx\MPPT\git\App\inc/sl_protocol.h \
|
||||
D:\psx\MPPT\git\App\inc/mppt_control.h D:\psx\MPPT\git\App\inc/inflash.h \
|
||||
D:\psx\MPPT\git\App\inc/collect_Conversion.h \
|
||||
D:\psx\MPPT\git\Drivers\RingQueue2/ring_queue2.h
|
||||
D:\psx\MPPT\git\App\inc/collect_Conversion.h
|
||||
|
||||
D:\psx\MPPT\git\App\inc/task.h:
|
||||
|
||||
|
@ -111,6 +111,8 @@ D:\psx\MPPT\git\Hardware\inc/pwm.h:
|
|||
|
||||
D:\psx\MPPT\git\Hardware\inc/adc.h:
|
||||
|
||||
D:\psx\MPPT\git\Drivers\RingQueue2/ring_queue2.h:
|
||||
|
||||
D:\psx\MPPT\git\Hardware\inc/gpio.h:
|
||||
|
||||
D:\psx\MPPT\git\Hardware\inc/flash.h:
|
||||
|
@ -122,5 +124,3 @@ D:\psx\MPPT\git\App\inc/mppt_control.h:
|
|||
D:\psx\MPPT\git\App\inc/inflash.h:
|
||||
|
||||
D:\psx\MPPT\git\App\inc/collect_Conversion.h:
|
||||
|
||||
D:\psx\MPPT\git\Drivers\RingQueue2/ring_queue2.h:
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -16,6 +16,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
Core/%.o: ../Core/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
|
@ -16,6 +16,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
Debug/%.o: ../Debug/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
Binary file not shown.
|
@ -16,6 +16,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
Drivers/RingQueue/%.o: ../Drivers/RingQueue/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
Binary file not shown.
|
@ -16,6 +16,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
Drivers/RingQueue2/%.o: ../Drivers/RingQueue2/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
|
@ -16,6 +16,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
Drivers/TimeSliceOffset/%.o: ../Drivers/TimeSliceOffset/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
|
@ -25,7 +25,8 @@ Hardware/src/adc.o: ../Hardware/src/adc.c \
|
|||
D:\psx\MPPT\git\User/ch32l103_it.h D:\psx\MPPT\git\Debug/debug.h \
|
||||
D:\psx\MPPT\git\Peripheral\inc/ch32l103_misc.h \
|
||||
D:\psx\MPPT\git\Peripheral\inc/ch32l103_lptim.h \
|
||||
D:\psx\MPPT\git\Peripheral\inc/ch32l103_opa.h
|
||||
D:\psx\MPPT\git\Peripheral\inc/ch32l103_opa.h \
|
||||
D:\psx\MPPT\git\Drivers\RingQueue2/ring_queue2.h
|
||||
|
||||
D:\psx\MPPT\git\Hardware\inc/adc.h:
|
||||
|
||||
|
@ -84,3 +85,5 @@ D:\psx\MPPT\git\Peripheral\inc/ch32l103_misc.h:
|
|||
D:\psx\MPPT\git\Peripheral\inc/ch32l103_lptim.h:
|
||||
|
||||
D:\psx\MPPT\git\Peripheral\inc/ch32l103_opa.h:
|
||||
|
||||
D:\psx\MPPT\git\Drivers\RingQueue2/ring_queue2.h:
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -31,6 +31,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
Hardware/src/%.o: ../Hardware/src/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
|
@ -31,11 +31,7 @@ Hardware/src/tim.o: ../Hardware/src/tim.c \
|
|||
D:\psx\MPPT\git\Drivers\RingQueue/ring_queue.h \
|
||||
D:\psx\MPPT\git\Hardware\inc/rs485.h D:\psx\MPPT\git\Hardware\inc/pwm.h \
|
||||
D:\psx\MPPT\git\App\inc/mppt_control.h D:\psx\MPPT\git\App\inc/task.h \
|
||||
D:\psx\MPPT\git\App\inc/uart_dev.h \
|
||||
D:\psx\MPPT\git\App\inc/collect_Conversion.h \
|
||||
D:\psx\MPPT\git\Hardware\inc/adc.h \
|
||||
D:\psx\MPPT\git\Drivers\RingQueue2/ring_queue2.h \
|
||||
D:\psx\MPPT\git\App\inc/sl_protocol.h
|
||||
D:\psx\MPPT\git\App\inc/uart_dev.h
|
||||
|
||||
D:\psx\MPPT\git\Hardware\inc/tim.h:
|
||||
|
||||
|
@ -110,11 +106,3 @@ D:\psx\MPPT\git\App\inc/mppt_control.h:
|
|||
D:\psx\MPPT\git\App\inc/task.h:
|
||||
|
||||
D:\psx\MPPT\git\App\inc/uart_dev.h:
|
||||
|
||||
D:\psx\MPPT\git\App\inc/collect_Conversion.h:
|
||||
|
||||
D:\psx\MPPT\git\Hardware\inc/adc.h:
|
||||
|
||||
D:\psx\MPPT\git\Drivers\RingQueue2/ring_queue2.h:
|
||||
|
||||
D:\psx\MPPT\git\App\inc/sl_protocol.h:
|
||||
|
|
Binary file not shown.
|
@ -76,6 +76,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
Peripheral/src/%.o: ../Peripheral/src/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
BIN
obj/User/main.o
BIN
obj/User/main.o
Binary file not shown.
|
@ -22,6 +22,6 @@ C_DEPS += \
|
|||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
User/%.o: ../User/%.c
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @ riscv-none-embed-gcc -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -Wunused -Wuninitialized -g -I"D:\psx\MPPT\git\Debug" -I"D:\psx\MPPT\git\Core" -I"D:\psx\MPPT\git\User" -I"D:\psx\MPPT\git\Peripheral\inc" -I"D:\psx\MPPT\git\App\inc" -I"D:\psx\MPPT\git\Hardware\inc" -I"D:\psx\MPPT\git\Drivers\TimeSliceOffset" -I"D:\psx\MPPT\git\Drivers\RingQueue" -I"D:\psx\MPPT\git\Drivers\RingQueue2" -std=gnu99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
|
||||
@ @
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
20778
obj/mppt_Nos_V0.4.lst
20778
obj/mppt_Nos_V0.4.lst
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue