Explorar o código

3相、双火线、去掉升级,处理modbus与串口中断可能导致的程序死机问题,处理读取电量信息为0 的情况,关闭modbus ACII。

liyi hai 1 ano
pai
achega
27f41879dd

+ 162 - 86
truing_control/PDU-Triphasic_IO/HARDWARE/Hlw8110/Hlw8110.c

@@ -475,15 +475,18 @@ unsigned char Judge_CheckSum_HLW8110_Calfactor(void)
 ==========================================================================================================*/
 void Init_HLW8110(void)
 {
-	Uart_HLW8110_WriteREG_EN();
-	DelayNms(10);
+
 	
 //电流通道A设置命令,指定当前用于计算视在功率、功率因数、相角、瞬时有功功率、瞬时视在功率和有功功率过载的信号指示 的通道为通道A	
-	Uart_HLW8110_Set_Channel_A();			
-	DelayNms(10);
-	Uart_Write_HLW8110_Reg(REG_SYSCON_ADDR,2,0x0a04);	//开启A通道,关闭B通道,电压通道PGA = 1,电流通道PGA = 16
-	DelayNms(10);
-	
+	for(int i = 0 ; i < 3 ;i++)
+	{
+		Uart_HLW8110_WriteREG_EN();
+		DelayNms(10);
+		Uart_HLW8110_Set_Channel_A();			
+		DelayNms(10);
+		Uart_Write_HLW8110_Reg(REG_SYSCON_ADDR,2,0x0a04);	//开启A通道,关闭B通道,电压通道PGA = 1,电流通道PGA = 16
+		DelayNms(10);
+		
 
 	Uart_Write_HLW8110_Reg(REG_EMUCON_ADDR,2,0x0001);	//1,使能PFA 脉冲输出和有功电能寄存器累加;
 //	Uart_Write_HLW8110_Reg(REG_EMUCON_ADDR,2,0x0018);	//正向和负向过零点均发生变化,ZXD0 = 1,ZXD1 = 1
@@ -491,21 +494,43 @@ void Init_HLW8110(void)
 	DelayNms(10);
 
 	
-	Uart_HLW8110_WriteREG_DIS();
+		Uart_HLW8110_WriteREG_DIS();
+		B_Read_Error = 0;
+		Check_WriteReg_Success();
+		if (B_Read_Error == 1)
+		{
+			DelayNms(50);
+		}else
+		{
+			break;
+		}
+	}
 //	DelayNms(3);	
   //读取地址是0x6F至0x77的寄存器,验证系数是否正确
-  Judge_CheckSum_HLW8110_Calfactor();	
+ // Judge_CheckSum_HLW8110_Calfactor();	
+	uint8_t d  = 0;
+	for(int i = 0;i < 3;i++)
+	{
+		d = Judge_CheckSum_HLW8110_Calfactor();
+		if(d)
+		{
+			break;
+		}
+	}
+	if(d == 0)
+	{
+		U16_RMSIAC_RegData		=	0xcad1;
+		U16_RMSIBC_RegData		=	0xcacf;
+		U16_RMSUC_RegData			=	0xa4c3;
+		U16_PowerPAC_RegData	=	0xab47;
+		U16_PowerPBC_RegData	=	0xab49;
+		U16_PowerSC_RegData		=	0xab41;
+		U16_EnergyAC_RegData	=	0xe9cc;
+		U16_EnergyBC_RegData	=	0xe9ce;		
+	}
 }
 
 
-/*=========================================================================================================
- * Function : void Check_WriteReg_Success(void)
- * Describe : 检验写入的REG是否正确写入
- * Input    : none
- * Output   : none
- * Return   : none
- * Record   : 2020/04/02
-==========================================================================================================*/
 void Check_WriteReg_Success(void)
 {
 	Uart_Read_HLW8110_Reg(REG_SYSCON_ADDR,2);
@@ -606,7 +631,16 @@ void Read_HLW8110_U(void)
 	float a;
 	
 	Uart_Read_HLW8110_Reg(REG_RMSU_ADDR,3);
-	DelayNms(10);
+	for(uint8_t i = 0;i < 5;i++)
+	{
+		if(B_Rx_Finish == TRUE)
+		{
+			break;
+		}
+		DelayNms(2);
+	}
+	
+	//DelayNms(10);
 	if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
 	{
 		U32_RMSU_RegData = (unsigned long)(u8_RxBuf[0]<<16) + (unsigned long)(u8_RxBuf[1]<<8) + (unsigned long)(u8_RxBuf[2]);
@@ -651,7 +685,15 @@ void Read_HLW8110_PA(void)
 	float b;
 	
 	Uart_Read_HLW8110_Reg(REG_POWER_PA_ADDR,4);
-	DelayNms(10);
+	for(uint8_t i = 0;i < 5;i++)
+	{
+		if(B_Rx_Finish == TRUE)
+		{
+			break;
+		}
+		DelayNms(2);
+	}
+	//DelayNms(10);
 	if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
 	{
 		U32_POWERPA_RegData = (unsigned long)(u8_RxBuf[0]<<24) + (unsigned long)(u8_RxBuf[1]<<16) + (unsigned long)(u8_RxBuf[2]<<8) + (unsigned long)(u8_RxBuf[3]);
@@ -702,7 +744,15 @@ void Read_HLW8110_PSA(void)
 	float b;
 	
 	Uart_Read_HLW8110_Reg(REG_POWER_PAS_ADDR,4);
-	DelayNms(10);
+	for(uint8_t i = 0;i < 5;i++)
+	{
+		if(B_Rx_Finish == TRUE)
+		{
+			break;
+		}
+		DelayNms(2);
+	}
+	//DelayNms(10);
 	if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
 	{
 		U32_POWERPA_RegData = (unsigned long)(u8_RxBuf[0]<<24) + (unsigned long)(u8_RxBuf[1]<<16) + (unsigned long)(u8_RxBuf[2]<<8) + (unsigned long)(u8_RxBuf[3]);
@@ -749,7 +799,15 @@ void Read_HLW8110_EA(void)
 {
 	float a;
 	Uart_Read_HLW8110_Reg(REG_ENERGY_PA_ADDR,3); 
-	DelayNms(10);
+	for(uint8_t i = 0;i < 5;i++)
+	{
+		if(B_Rx_Finish == TRUE)
+		{
+			break;
+		}
+		DelayNms(2);
+	}
+	//DelayNms(10);
 	
 	if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
 	{
@@ -801,7 +859,15 @@ void Read_HLW8110_LineFreq(void)
 	float a;
 	unsigned long b;
 	Uart_Read_HLW8110_Reg(REG_UFREQ_ADDR,2);
-	DelayNms(10);
+	for(uint8_t i = 0;i < 5;i++)
+	{
+		if(B_Rx_Finish == TRUE)
+		{
+			break;
+		}
+		DelayNms(2);
+	}
+	//DelayNms(10);
 	if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
 	{
 		b = (unsigned long)(u8_RxBuf[0]<<8) + (unsigned long)(u8_RxBuf[1]);
@@ -812,23 +878,15 @@ void Read_HLW8110_LineFreq(void)
 //		printf("A通道线性频率寄存器读取出错\r\n");
 		B_Read_Error = 1;
 	}
-	a = (float)b;
-
-	a = 3579545/(8*a);    
-	
-	if(a > 100)
-		a =0.0;
-	F_AC_LINE_Freq = a;
+	if(b!=0)
+	{
+		a = (float)b;
+		a = 3579545/(8*a);    
+		F_AC_LINE_Freq = a;
+	}
 }
 
-/*=========================================================================================================
- * Function : void Read_HLW8110_PF(void)
- * Describe : 读取功率因素
- * Input    : none
- * Output   : none
- * Return   : none
- * Record   : 2019/03/18
-==========================================================================================================*/
+
 void Read_HLW8110_PF(void)
 {
   float a;
@@ -838,7 +896,15 @@ void Read_HLW8110_PF(void)
 //测量B通道的功率因素,需要发送EA+A5命令	
 	
 	Uart_Read_HLW8110_Reg(REG_PF_ADDR,3);
-	DelayNms(10);
+	for(uint8_t i = 0;i < 5;i++)
+	{
+		if(B_Rx_Finish == TRUE)
+		{
+			break;
+		}
+		DelayNms(2);
+	}
+	//DelayNms(10);
 	if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
 	{
 		b = (unsigned long)(u8_RxBuf[0]<<16) + (unsigned long)(u8_RxBuf[1]<<8) + (unsigned long)(u8_RxBuf[2]);
@@ -881,7 +947,15 @@ void Read_HLW8110_Angle(void)
 	float a;	
 	unsigned long b;
 	Uart_Read_HLW8110_Reg(REG_ANGLE_ADDR,2);
-	DelayNms(10);
+	for(uint8_t i = 0;i < 5;i++)
+	{
+		if(B_Rx_Finish == TRUE)
+		{
+			break;
+		}
+		DelayNms(2);
+	}
+	//DelayNms(10);
 	if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
 	{
 		b =(unsigned long)(u8_RxBuf[0]<<8) + (unsigned long)(u8_RxBuf[1]);
@@ -945,52 +1019,54 @@ void Read_HLW8110_Angle(void)
 ==========================================================================================================*/
 void Calculate_HLW8110_MeterData(void)
 {	
-	Check_WriteReg_Success();
-	
-	Read_HLW8110_IA();
-	Read_HLW8110_U();
-	Read_HLW8110_PA();
-	Read_HLW8110_PSA();
-	//Read_HLW8110_EA();
+	//Check_WriteReg_Success();
+	uint8_t count = 4;
+	B_Read_Error = 0;
+	do{
+		B_Read_Error = 0;
+		Read_HLW8110_IA();
+	}while((B_Read_Error) && (count--));
+	count = 4;
+	do{
+		B_Read_Error = 0;
+		Read_HLW8110_U();
+	}while((B_Read_Error) && (count--));
+
+	count = 4;
+	do{
+		B_Read_Error = 0;
+		Read_HLW8110_PA();
+	}while((B_Read_Error) && (count--));
+	
+	count = 4;
+	do{
+		B_Read_Error = 0;
+		Read_HLW8110_EA();
+	}while((B_Read_Error) && (count--));
+
+	count = 4;
+	do{	
+		B_Read_Error = 0;
+		Read_HLW8110_LineFreq();
+	}while((B_Read_Error) && (count--));
+	
+	count = 4;
+	do{
+		B_Read_Error = 0;
+		Read_HLW8110_Angle();
+	}while((B_Read_Error) && (count--));
+	count = 4;
+	do{
+		B_Read_Error = 0;
+		Read_HLW8110_PF();
+	}while((B_Read_Error) && (count--));		
+	
+	count = 4;
+	do{
+		B_Read_Error = 0;
+		Read_HLW8110_PSA();
+	}while((B_Read_Error) && (count--));
 	
-	Read_HLW8110_LineFreq();
-	Read_HLW8110_Angle();
-	Read_HLW8110_PF();
-	
-	
-//	printf("\r\n");	
-//	printf("\r\n");	
-//	printf("交流测量,uart通讯方式\r\n");
-//	printf("A通道电流转换系数:%x\n " ,U16_RMSIAC_RegData);
-//	printf("B通道电流转换系数:%x\n " ,U16_RMSIBC_RegData);
-//	printf("电压通道转换系数:%x\n " ,U16_RMSUC_RegData);
-//	printf("A通道功率转换系数:%x\n " ,U16_PowerPAC_RegData);
-//	printf("B通道功率转换系数:%x\n " ,U16_PowerPBC_RegData);
-//	printf("视在功率转换系数:%x\n " ,U16_PowerSC_RegData);
-//	printf("A通道电量转换系数:%x\n " ,U16_EnergyAC_RegData);
-//	printf("B通道电量转换系数:%x\n " ,U16_EnergyBC_RegData);
-//	printf("转换系数校验和:%x\n " ,U16_CheckSUM_RegData);
-//	printf("转换系数计算出的校验和:%x\n " ,U16_CheckSUM_Data);
-//	
-//	printf("\r\n");//插入换行
-//	printf("A通道电流寄存器:%x\n " ,U32_RMSIA_RegData);
-//	printf("电压寄存器:%x\n " ,U32_RMSU_RegData);
-//	printf("A通道功率寄存器:%x\n " ,U32_POWERPA_RegData);
-//	printf("A通道电量寄存器:%x\n " ,U32_ENERGY_PA_RegData);
-
-//	printf("\r\n");//插入换行
-//	printf("F_AC_I = %f A \n " ,F_AC_I);						//电流
-//	printf("F_AC_V = %f V	\n " ,F_AC_V);							//电压
-//	printf("F_AC_P = %f W	\n " ,F_AC_P);						//功率
-//	printf("F_AC_BACKUP_E = %f KWH \n " ,F_AC_BACKUP_E);			//电量
-//	printf("F_AC_LINE_Freq = %f Hz \n " ,F_AC_LINE_Freq);		//市电线性频率	
-//	printf("F_Angle = %f\n " ,F_Angle);					//L和N的相角
-//	printf("F_AC_PF = %f\n " ,F_AC_PF);		//功率因素
-//	
-//	printf("\r\n");//插入换行
-//	printf("\r\n");//插入换行
-//	printf("----------------------------------------------\r\n");	
-//	printf("----------------------------------------------\r\n");			
 }
 
 void read_Hlw8110(uint8_t cs_x,uint8_t read_kWh_flag)
@@ -1070,7 +1146,7 @@ void read_Hlw8110(uint8_t cs_x,uint8_t read_kWh_flag)
 	Calculate_HLW8110_MeterData();
 	
 	AC3PPDU_Output[temp0].AC_V = ((F_AC_V * ACDC_V_k) + (ACDC_V_b /1000));
-	if(AC3PPDU_Output[temp0].AC_V <= 800)
+	if(AC3PPDU_Output[temp0].AC_V <= 1000)
 	{
 		AC3PPDU_Output[temp0].AC_V = 0;
 	}
@@ -1092,7 +1168,7 @@ void read_Hlw8110(uint8_t cs_x,uint8_t read_kWh_flag)
 	{
 		AC3PPDU_Output[temp0].AC_U = ((F_AC_P / F_AC_PF)-F_AC_PS) *1000;
 	}
-	Read_HLW8110_EA();
+	//Read_HLW8110_EA();
 	//AC3PPDU_Output[temp0].AC_kWh = F_AC_E *1000;
 	hlw8110_store[cs_x + CH1_out] += F_AC_E;
 	

+ 1 - 1
truing_control/PDU-Triphasic_IO/Modbus/include/mbconfig.h

@@ -46,7 +46,7 @@ PR_BEGIN_EXTERN_C
  *  @{
  */
 /*! \brief If Modbus ASCII support is enabled. */
-#define MB_ASCII_ENABLED                        (  1 )
+#define MB_ASCII_ENABLED                        (  0 )
 
 /*! \brief If Modbus RTU support is enabled. */
 #define MB_RTU_ENABLED                          (  1 )

+ 2 - 1
truing_control/PDU-Triphasic_IO/Modbus/rtu/mbrtu.c

@@ -320,8 +320,9 @@ xMBRTUTransmitFSM( void )
             xNeedPoll = xMBPortEventPost( EV_FRAME_SENT );
             /* Disable transmitter. This prevents another transmit buffer
              * empty interrupt. */
-            vMBPortSerialEnable( TRUE, FALSE );
             eSndState = STATE_TX_IDLE;
+						vMBPortSerialEnable( TRUE, FALSE );
+            //eSndState = STATE_TX_IDLE;
         }
         break;
     }

+ 106 - 106
truing_control/PDU-Triphasic_IO/USER/JLinkLog.txt

@@ -1,106 +1,106 @@
-T05CC 000:211.135   SEGGER J-Link V7.96c Log File
-T05CC 000:211.284   DLL Compiled: Apr  2 2024 12:30:42
-T05CC 000:211.289   Logging started @ 2025-04-23 09:35
-T05CC 000:211.292   Process: D:\Keil_v5\UV4\UV4.exe
-T05CC 000:211.299 - 211.296ms
-T05CC 000:211.307 JLINK_SetWarnOutHandler(...)
-T05CC 000:211.311 - 0.005ms
-T05CC 000:211.317 JLINK_OpenEx(...)
-T05CC 000:214.985   Firmware: J-Link V9 compiled May  7 2021 16:26:12
-T05CC 000:216.667   Firmware: J-Link V9 compiled May  7 2021 16:26:12
-T05CC 000:216.856   Decompressing FW timestamp took 129 us
-T05CC 000:224.159   Hardware: V9.50
-T05CC 000:224.178   S/N: 69545260
-T05CC 000:224.186   OEM: SEGGER
-T05CC 000:224.194   Feature(s): JFlash, GDB, RDI, FlashBP, FlashDL
-T05CC 000:225.900   Bootloader: (Could not read)
-T05CC 000:227.568   TELNET listener socket opened on port 19021
-T05CC 000:227.765   WEBSRV WEBSRV_Init(): Starting webserver thread(s)
-T05CC 000:227.998   WEBSRV Webserver running on local port 19080
-T05CC 000:228.179   Looking for J-Link GUI Server exe at: D:\Keil_v5\ARM\Segger\JLinkGUIServer.exe
-T05CC 000:228.294   Looking for J-Link GUI Server exe at: C:\Program Files (x86)\SEGGER\JLink_V796c\JLinkGUIServer.exe
-T05CC 000:228.339   Forking J-Link GUI Server: C:\Program Files (x86)\SEGGER\JLink_V796c\JLinkGUIServer.exe
-T05CC 000:262.184   J-Link GUI Server info: "J-Link GUI server V7.96c "
-T05CC 000:272.231 - 60.898ms returns "O.K."
-T05CC 000:272.283 JLINK_GetEmuCaps()
-T05CC 000:272.295 - 0.008ms returns 0xB9FF7BBF
-T05CC 000:272.306 JLINK_TIF_GetAvailable(...)
-T05CC 000:272.878 - 0.571ms
-T05CC 000:272.897 JLINK_SetErrorOutHandler(...)
-T05CC 000:272.901 - 0.004ms
-T05CC 000:272.924 JLINK_ExecCommand("ProjectFile = "C:\Users\Gowon\Desktop\3_ph_new\USER\JLinkSettings.ini"", ...). 
-T05CC 000:283.402   Ref file found at: D:\Keil_v5\ARM\Segger\JLinkDevices.ref
-T05CC 000:283.553   REF file references invalid XML file: C:\Program Files (x86)\SEGGER\JLink_V796c\JLinkDevices.xml
-T05CC 000:284.564 - 11.641ms returns 0x00
-T05CC 000:284.597 JLINK_ExecCommand("Device = GD32E230C8", ...). 
-T05CC 000:284.675   Flash bank @ 0x1FFFF800: SFL: Parsing sectorization info from ELF file
-T05CC 000:284.682     FlashDevice.SectorInfo[0]: .SectorSize = 0x00000010, .SectorStartAddr = 0x00000000
-T05CC 000:284.700   Device "GD32E230C8" selected.
-T05CC 000:285.008 - 0.405ms returns 0x00
-T05CC 000:285.016 JLINK_ExecCommand("DisableConnectionTimeout", ...). 
-T05CC 000:285.023 - 0.001ms returns 0x01
-T05CC 000:285.029 JLINK_GetHardwareVersion()
-T05CC 000:285.036 - 0.003ms returns 95000
-T05CC 000:285.040 JLINK_GetDLLVersion()
-T05CC 000:285.044 - 0.003ms returns 79603
-T05CC 000:285.048 JLINK_GetOEMString(...)
-T05CC 000:285.053 JLINK_GetFirmwareString(...)
-T05CC 000:285.057 - 0.003ms
-T05CC 000:285.063 JLINK_GetDLLVersion()
-T05CC 000:285.067 - 0.003ms returns 79603
-T05CC 000:285.071 JLINK_GetCompileDateTime()
-T05CC 000:285.075 - 0.003ms
-T05CC 000:285.081 JLINK_GetFirmwareString(...)
-T05CC 000:285.084 - 0.003ms
-T05CC 000:285.089 JLINK_GetHardwareVersion()
-T05CC 000:285.093 - 0.003ms returns 95000
-T05CC 000:285.098 JLINK_GetSN()
-T05CC 000:285.101 - 0.003ms returns 69545260
-T05CC 000:285.106 JLINK_GetOEMString(...)
-T05CC 000:285.114 JLINK_TIF_Select(JLINKARM_TIF_SWD)
-T05CC 000:286.981 - 1.866ms returns 0x00
-T05CC 000:286.999 JLINK_HasError()
-T05CC 000:287.015 JLINK_SetSpeed(5000)
-T05CC 000:287.489 - 0.476ms
-T05CC 000:287.895 JLINK_HasError()
-T05CC 000:287.913 JLINK_SetResetType(JLINKARM_RESET_TYPE_NORMAL)
-T05CC 000:287.920 - 0.007ms returns JLINKARM_RESET_TYPE_NORMAL
-T05CC 000:287.928 JLINK_Reset()
-T05CC 000:288.485   InitTarget() start
-T05CC 000:288.498    J-Link Script File: Executing InitTarget()
-T05CC 000:391.259   Error: Failed to initialized DAP.
-T05CC 000:391.302   InitTarget() end - Took 102ms
-T05CC 000:391.315   Connect failed. Resetting via Reset pin and trying again.
-T05CC 000:454.646   InitTarget() start
-T05CC 000:454.687    J-Link Script File: Executing InitTarget()
-T05CC 000:456.722   Error: Failed to initialized DAP.
-T05CC 000:456.740   InitTarget() end - Took 2.05ms
-T05CC 000:456.828 - 168.900ms
-T05CC 000:456.851 JLINK_GetId()
-T05CC 000:457.296   InitTarget() start
-T05CC 000:457.315    J-Link Script File: Executing InitTarget()
-T05CC 000:459.334   Error: Failed to initialized DAP.
-T05CC 000:459.347   InitTarget() end - Took 2.03ms
-T05CC 000:459.356   Connect failed. Resetting via Reset pin and trying again.
-T05CC 000:521.553   InitTarget() start
-T05CC 000:521.583    J-Link Script File: Executing InitTarget()
-T05CC 000:523.597   Error: Failed to initialized DAP.
-T05CC 000:523.618   InitTarget() end - Took 2.03ms
-T05CC 000:523.628 - 66.776ms returns 0x00000000
-T05CC 000:523.648 JLINK_GetId()
-T05CC 000:524.042   InitTarget() start
-T05CC 000:524.053    J-Link Script File: Executing InitTarget()
-T05CC 000:525.736   Error: Failed to initialized DAP.
-T05CC 000:525.756   InitTarget() end - Took 1.70ms
-T05CC 000:525.768   Connect failed. Resetting via Reset pin and trying again.
-T05CC 000:588.214   InitTarget() start
-T05CC 000:588.236    J-Link Script File: Executing InitTarget()
-T05CC 000:589.980   Error: Failed to initialized DAP.
-T05CC 000:589.994   InitTarget() end - Took 1.75ms
-T05CC 000:590.002 - 66.353ms returns 0x00000000
-T05CC 000:596.308 JLINK_GetFirmwareString(...)
-T05CC 000:596.333 - 0.026ms
-T05CC 009:506.134 JLINK_Close()
-T05CC 009:516.093 - 9.957ms
-T05CC 009:516.126   
-T05CC 009:516.130   Closed
+T9020 000:196.255   SEGGER J-Link V7.96c Log File
+T9020 000:196.367   DLL Compiled: Apr  2 2024 12:30:42
+T9020 000:196.371   Logging started @ 2025-07-15 06:32
+T9020 000:196.375   Process: D:\Keil_v5\UV4\UV4.exe
+T9020 000:196.380 - 196.378ms
+T9020 000:196.387 JLINK_SetWarnOutHandler(...)
+T9020 000:196.391 - 0.005ms
+T9020 000:196.398 JLINK_OpenEx(...)
+T9020 000:199.701   Firmware: J-Link V9 compiled May  7 2021 16:26:12
+T9020 000:201.317   Firmware: J-Link V9 compiled May  7 2021 16:26:12
+T9020 000:201.432   Decompressing FW timestamp took 92 us
+T9020 000:209.055   Hardware: V9.50
+T9020 000:209.072   S/N: 69545264
+T9020 000:209.077   OEM: SEGGER
+T9020 000:209.083   Feature(s): JFlash, GDB, RDI, FlashBP, FlashDL
+T9020 000:210.462   Bootloader: (Could not read)
+T9020 000:211.971   TELNET listener socket opened on port 19021
+T9020 000:212.078   WEBSRV WEBSRV_Init(): Starting webserver thread(s)
+T9020 000:212.245   WEBSRV Webserver running on local port 19080
+T9020 000:212.358   Looking for J-Link GUI Server exe at: D:\Keil_v5\ARM\Segger\JLinkGUIServer.exe
+T9020 000:212.437   Looking for J-Link GUI Server exe at: C:\Program Files (x86)\SEGGER\JLink_V796c\JLinkGUIServer.exe
+T9020 000:212.475   Forking J-Link GUI Server: C:\Program Files (x86)\SEGGER\JLink_V796c\JLinkGUIServer.exe
+T9020 000:286.669   J-Link GUI Server info: "J-Link GUI server V7.96c "
+T9020 000:290.002 - 93.594ms returns "O.K."
+T9020 000:290.040 JLINK_GetEmuCaps()
+T9020 000:290.050 - 0.008ms returns 0xB9FF7BBF
+T9020 000:290.062 JLINK_TIF_GetAvailable(...)
+T9020 000:290.579 - 0.516ms
+T9020 000:290.608 JLINK_SetErrorOutHandler(...)
+T9020 000:290.615 - 0.007ms
+T9020 000:290.643 JLINK_ExecCommand("ProjectFile = "C:\Users\Gowon\Desktop\PDU-Triphasic_IO\USER\JLinkSettings.ini"", ...). 
+T9020 000:299.677   Ref file found at: D:\Keil_v5\ARM\Segger\JLinkDevices.ref
+T9020 000:299.754   REF file references invalid XML file: C:\Program Files (x86)\SEGGER\JLink_V796c\JLinkDevices.xml
+T9020 000:300.441 - 9.799ms returns 0x00
+T9020 000:300.460 JLINK_ExecCommand("Device = GD32E230C8", ...). 
+T9020 000:300.528   Flash bank @ 0x1FFFF800: SFL: Parsing sectorization info from ELF file
+T9020 000:300.535     FlashDevice.SectorInfo[0]: .SectorSize = 0x00000010, .SectorStartAddr = 0x00000000
+T9020 000:300.550   Device "GD32E230C8" selected.
+T9020 000:300.850 - 0.383ms returns 0x00
+T9020 000:300.858 JLINK_ExecCommand("DisableConnectionTimeout", ...). 
+T9020 000:300.864 - 0.001ms returns 0x01
+T9020 000:300.869 JLINK_GetHardwareVersion()
+T9020 000:300.876 - 0.003ms returns 95000
+T9020 000:300.880 JLINK_GetDLLVersion()
+T9020 000:300.884 - 0.003ms returns 79603
+T9020 000:300.888 JLINK_GetOEMString(...)
+T9020 000:300.893 JLINK_GetFirmwareString(...)
+T9020 000:300.896 - 0.003ms
+T9020 000:300.902 JLINK_GetDLLVersion()
+T9020 000:300.906 - 0.003ms returns 79603
+T9020 000:300.910 JLINK_GetCompileDateTime()
+T9020 000:300.914 - 0.003ms
+T9020 000:300.920 JLINK_GetFirmwareString(...)
+T9020 000:300.923 - 0.003ms
+T9020 000:300.928 JLINK_GetHardwareVersion()
+T9020 000:300.931 - 0.003ms returns 95000
+T9020 000:300.936 JLINK_GetSN()
+T9020 000:300.940 - 0.003ms returns 69545264
+T9020 000:300.944 JLINK_GetOEMString(...)
+T9020 000:300.952 JLINK_TIF_Select(JLINKARM_TIF_SWD)
+T9020 000:302.792 - 1.839ms returns 0x00
+T9020 000:302.814 JLINK_HasError()
+T9020 000:302.834 JLINK_SetSpeed(5000)
+T9020 000:303.270 - 0.439ms
+T9020 000:303.747 JLINK_HasError()
+T9020 000:303.763 JLINK_SetResetType(JLINKARM_RESET_TYPE_NORMAL)
+T9020 000:303.770 - 0.007ms returns JLINKARM_RESET_TYPE_NORMAL
+T9020 000:303.778 JLINK_Reset()
+T9020 000:304.352   InitTarget() start
+T9020 000:304.365    J-Link Script File: Executing InitTarget()
+T9020 000:406.892   Error: Failed to initialized DAP.
+T9020 000:406.941   InitTarget() end - Took 102ms
+T9020 000:406.958   Connect failed. Resetting via Reset pin and trying again.
+T9020 000:469.063   InitTarget() start
+T9020 000:469.092    J-Link Script File: Executing InitTarget()
+T9020 000:470.909   Error: Failed to initialized DAP.
+T9020 000:470.929   InitTarget() end - Took 1.83ms
+T9020 000:470.979 - 167.201ms
+T9020 000:470.996 JLINK_GetId()
+T9020 000:471.448   InitTarget() start
+T9020 000:471.459    J-Link Script File: Executing InitTarget()
+T9020 000:473.268   Error: Failed to initialized DAP.
+T9020 000:473.284   InitTarget() end - Took 1.82ms
+T9020 000:473.291   Connect failed. Resetting via Reset pin and trying again.
+T9020 000:535.429   InitTarget() start
+T9020 000:535.464    J-Link Script File: Executing InitTarget()
+T9020 000:537.405   Error: Failed to initialized DAP.
+T9020 000:537.421   InitTarget() end - Took 1.95ms
+T9020 000:537.428 - 66.431ms returns 0x00000000
+T9020 000:537.444 JLINK_GetId()
+T9020 000:538.009   InitTarget() start
+T9020 000:538.016    J-Link Script File: Executing InitTarget()
+T9020 000:540.014   Error: Failed to initialized DAP.
+T9020 000:540.028   InitTarget() end - Took 2.01ms
+T9020 000:540.038   Connect failed. Resetting via Reset pin and trying again.
+T9020 000:602.073   InitTarget() start
+T9020 000:602.103    J-Link Script File: Executing InitTarget()
+T9020 000:604.016   Error: Failed to initialized DAP.
+T9020 000:604.033   InitTarget() end - Took 1.92ms
+T9020 000:604.042 - 66.596ms returns 0x00000000
+T9020 000:610.144 JLINK_GetFirmwareString(...)
+T9020 000:610.161 - 0.018ms
+T9020 008:404.370 JLINK_Close()
+T9020 008:414.829 - 10.455ms
+T9020 008:414.918   
+T9020 008:414.925   Closed

+ 2 - 2
truing_control/PDU-Triphasic_IO/USER/board_cfg.h

@@ -4,9 +4,9 @@
 
 
 
-#define PRJ_3_P_4_LINE  1
+#define PRJ_3_P_4_LINE  0
 #define PRJ_3_P_3_LINE  0
-#define PRJ_3_P_2_LINE  0
+#define PRJ_3_P_2_LINE  1
  
 
 #if PRJ_3_P_3_LINE

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 59 - 32
truing_control/PDU-Triphasic_IO/USER/bootloader.uvguix.Gowon


+ 1 - 5
truing_control/PDU-Triphasic_IO/USER/bootloader.uvoptx

@@ -117,14 +117,10 @@
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>JL2CM3</Key>
-          <Name>-U69545260 -O206 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO65536 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32E23x.FLM -FS08004000 -FL0C000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM)</Name>
+          <Name>-U69545264 -O206 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO65536 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32E23x.FLM -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>

+ 6 - 6
truing_control/PDU-Triphasic_IO/USER/bootloader.uvprojx

@@ -49,11 +49,11 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>3_3_out</OutputName>
+          <OutputName>3IN_2out双火线</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
+          <DebugInformation>0</DebugInformation>
           <BrowseInformation>1</BrowseInformation>
           <ListingPath>.\Listings\</ListingPath>
           <HexFormatSelection>1</HexFormatSelection>
@@ -80,8 +80,8 @@
             <nStopB2X>0</nStopB2X>
           </BeforeMake>
           <AfterMake>
-            <RunUserProg1>1</RunUserProg1>
-            <RunUserProg2>1</RunUserProg2>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
             <UserProg1Name>D:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L</UserProg1Name>
             <UserProg2Name>../tools/mb.exe cfg.h ../tools/bootloader.bin @L.bin</UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
@@ -275,8 +275,8 @@
               </OCR_RVCT3>
               <OCR_RVCT4>
                 <Type>1</Type>
-                <StartAddress>0x8004000</StartAddress>
-                <Size>0xc000</Size>
+                <StartAddress>0x8000000</StartAddress>
+                <Size>0x10000</Size>
               </OCR_RVCT4>
               <OCR_RVCT5>
                 <Type>1</Type>

+ 19 - 19
truing_control/PDU-Triphasic_IO/USER/main.c

@@ -118,26 +118,26 @@ static void MODbus_CMD_New(void);
 static void Fault_state_process(uint8_t ch_x);
 
 
-static void break_2_boot_upgreade(void)
-{
-	meta_data.errno = 0;
-	meta_data.operation_flag = 1;
-	meta_data.recent_running_time = normal_running_time;
-	flash_erase_meta();
-	flash_write_meta(&meta_data);
-	__disable_irq();
-	//__set_FAULTMASK(1);
-	NVIC_SystemReset();
-}
+//static void break_2_boot_upgreade(void)
+//{
+//	meta_data.errno = 0;
+//	meta_data.operation_flag = 1;
+//	meta_data.recent_running_time = normal_running_time;
+//	flash_erase_meta();
+//	flash_write_meta(&meta_data);
+//	__disable_irq();
+//	//__set_FAULTMASK(1);
+//	NVIC_SystemReset();
+//}
 
 
 
-static void app_init(META_DATA_S *meta)
-{
-	flash_get_meta_data(meta);
-	nvic_vector_table_set(NVIC_VECTTAB_FLASH,meta->rom_addr - NVIC_VECTTAB_FLASH);
-	__enable_irq();
-}
+//static void app_init(META_DATA_S *meta)
+//{
+//	flash_get_meta_data(meta);
+//	nvic_vector_table_set(NVIC_VECTTAB_FLASH,meta->rom_addr - NVIC_VECTTAB_FLASH);
+//	__enable_irq();
+//}
 
 static bool select_channel(uint8_t ch_x)
 {
@@ -845,7 +845,7 @@ static void read_ele(void)
 int main(void)
 {
 	
-	app_init(&meta_data);
+	//app_init(&meta_data);
 	InitSysTick();
 	InitLED();
 	InitKey();
@@ -1829,7 +1829,7 @@ static void MODbus_CMD_New(void)
 				break;
 			case Mb_Dbuff_break_Addr:
 			{
-				break_2_boot_upgreade();
+				//break_2_boot_upgreade();
 			}
 			break;
 			case Mb_Dbuff_Ch1_Ctrl_Addr ... Mb_Dbuff_Ch9_Ctrl_Addr: