浏览代码

MC_VS7500-TC033001-MS2001-V2.1.6.1.0_20210913_2
1、修改I2C的驱动,解决频繁封波导致电机异常;
2、增加清除历史记录的指令。

dail 3 年之前
父节点
当前提交
25ffa03639

文件差异内容过多而无法显示
+ 2540 - 2540
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


二进制
MDK-ARM/bin/MC_VS75XX-TC033001-MS2001-V2.1.6.1.0_20210913_2.bin


+ 4 - 15
User/Src/I2C_Analog.c

@@ -2,23 +2,12 @@
 
 static void _SDA_IN(I2C_Handle_Struct_t* I2C_Handle)
 {
-  GPIO_InitTypeDef GPIO_InitStruct;
-
-  GPIO_InitStruct.Pin = I2C_Handle->SDA_GPIO_Pin;
-  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
-  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-	GPIO_InitStruct.Pull = GPIO_PULLUP;
-  HAL_GPIO_Init(I2C_Handle->SDA_GPIOx, &GPIO_InitStruct);
+	HAL_GPIO_WritePin(I2C_Handle->SDA_GPIOx, I2C_Handle->SDA_GPIO_Pin, GPIO_PIN_SET);
 }
 
 static void _SDA_OUT(I2C_Handle_Struct_t* I2C_Handle)
 {
-  GPIO_InitTypeDef GPIO_InitStruct;
-
-  GPIO_InitStruct.Pin = I2C_Handle->SDA_GPIO_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
-  HAL_GPIO_Init(I2C_Handle->SDA_GPIOx, &GPIO_InitStruct);
+	__NOP();
 }
 
 static void _GPIO_CLK_Init(GPIO_TypeDef* GPIOx)
@@ -59,12 +48,12 @@ void I2C_GPIO_Config(I2C_Handle_Struct_t* I2C_Handle)
 
   GPIO_InitStruct.Pin = I2C_Handle->SCL_GPIO_Pin;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
-  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
   HAL_GPIO_Init(I2C_Handle->SCL_GPIOx, &GPIO_InitStruct);
 	
 	GPIO_InitStruct.Pin = I2C_Handle->SDA_GPIO_Pin;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
-  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
   HAL_GPIO_Init(I2C_Handle->SDA_GPIOx, &GPIO_InitStruct);
 }
 

+ 10 - 0
User/Src/can_process.c

@@ -633,6 +633,16 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 					SendData(ID_MC_TO_CDL, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
 					break;
 				}
+				case 0x3909://Çå³ýÀúÊ·ÐÅÏ¢
+				{
+				  if(strncmp("LOG CLEAR", (char*)Data, DataLength) == 0)
+					{
+					  Var_SetToDefaultLog();
+						EEPROM_24C02_LogReset(&I2C_Handle_EEPROM);
+						SendData(ID_MC_TO_CDL, MODE_REPORT, 0xA903, (uint8_t*)"ACK");
+					}
+					break;
+				}
 				default:break;
 			}
 			break;

+ 5 - 2
User/Src/protect_check.c

@@ -378,13 +378,16 @@ void MC_Protect_OverCurrent_Process(FlagStatus* OverCurrentTrigFlag, MC_ErrorCod
 	{
 		//开启PWM计数清零
 		StarPwmCnt = 0;
-		//关闭PWM
-		Disable_PwmGpio_Out();
 		//2个PWM周期后,过流触发标志复位
 		if(OffPwmCnt >= 1)
 		{
 			*OverCurrentTrigFlag = RESET;
 		}
+		else
+		{
+			//关闭PWM
+			Disable_PwmGpio_Out();
+		}
 		OffPwmCnt++;
 	}
 }

+ 4 - 0
修改说明.txt

@@ -419,4 +419,8 @@ MC_VS7500-TC033001-MS2001-V2.1.6.1.0_20210913_1
 1、里程统计增加过滤,避免干扰信号导致里程统计不准;
 2、针对开机后母线电压采集上升缓慢,优化SOC初始值的计算方法。
 
+MC_VS7500-TC033001-MS2001-V2.1.6.1.0_20210913_2
+1、修改I2C的驱动,解决频繁封波导致电机异常;
+2、增加清除历史记录的指令。
+
 

部分文件因为文件数量过多而无法显示