瀏覽代碼

已实现数据通信,仪表可正常读取电池信息。样品电池只发送三条数据,部分内容缺失。

Dail 1 年之前
父節點
當前提交
96f7758022
共有 5 個文件被更改,包括 2517 次插入2517 次删除
  1. 1 1
      Core/Src/can.c
  2. 2510 2510
      MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex
  3. 二進制
      MDK-ARM/bin/QD007A_CTL_APP.bin
  4. 5 5
      User/Src/bms_magene.c
  5. 1 1
      User/Src/can_process.c

+ 1 - 1
Core/Src/can.c

@@ -234,7 +234,7 @@ void HAL_CAN_Rx1CpltCallback(CAN_HandleTypeDef *CanHandle)
 	}
 	switch(CanHandle->pRx1Msg->StdId)
 	{
-		case BMS_MAGENE_BASE_RPDO + BMS_MAGENE_ADDRESS_MAIN: case BMS_MAGENE_BASE_RPDO + BMS_MAGENE_ADDRESS_BACK:
+		case BMS_MAGENE_BASE_TPDO + BMS_MAGENE_ADDRESS_MAIN: case BMS_MAGENE_BASE_TPDO + BMS_MAGENE_ADDRESS_BACK:
 		{
 			if(CanHandle->pRx1Msg->DLC == 8)//由于没有帧头帧尾和CRC,故保证数据的准确性必须为8字节才解析
 			{

文件差異過大導致無法顯示
+ 2510 - 2510
MDK-ARM/QD007A_CTL_APP/QD007A_CTL_APP_CRC.hex


二進制
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 5 - 5
User/Src/bms_magene.c

@@ -17,7 +17,7 @@ void BMS_InfoUpdate(void)
     else
         PeriodCnt = HAL_GetTick();
     //仅主电池打开
-    if((BMS_Magene_TPDOInfo_Main.BatStInfo.State == 1) && (BMS_Magene_TPDOInfo_Back.BatStInfo.State == 0))
+    if((BMS_Magene_TPDOInfo_Main.BaseInfo.WorkState == 2) && (BMS_Magene_TPDOInfo_Back.BaseInfo.WorkState != 2))
     {
         //运行信息
         BMS_RunInfo.Voltage = BMS_Magene_TPDOInfo_Main.BaseInfo.Voltage;
@@ -74,7 +74,7 @@ void BMS_InfoUpdate(void)
         BMS_UsrLog.MaxChgTime = BMS_Magene_TPDOInfo_Main.StaInfo.MaxChargeTime;       
     }
     //仅副电池打开
-    else if((BMS_Magene_TPDOInfo_Main.BatStInfo.State == 0) && (BMS_Magene_TPDOInfo_Back.BatStInfo.State == 1))
+    else if((BMS_Magene_TPDOInfo_Main.BaseInfo.WorkState != 2) && (BMS_Magene_TPDOInfo_Back.BaseInfo.WorkState == 2))
     {
         //运行信息
         BMS_RunInfo.Voltage = BMS_Magene_TPDOInfo_Back.BaseInfo.Voltage;
@@ -131,7 +131,7 @@ void BMS_InfoUpdate(void)
         BMS_UsrLog.MaxChgTime = BMS_Magene_TPDOInfo_Back.StaInfo.MaxChargeTime;
     }
     //主副电池同时打开
-    else if((BMS_Magene_TPDOInfo_Main.BatStInfo.State == 1) && (BMS_Magene_TPDOInfo_Back.BatStInfo.State == 1))
+    else if((BMS_Magene_TPDOInfo_Main.BaseInfo.WorkState == 2) && (BMS_Magene_TPDOInfo_Back.BaseInfo.WorkState == 2))
     {
         //暂不考虑
     }        
@@ -167,7 +167,7 @@ void BMS_CanProcess(BMS_Magene_CanData_Struct_t* CanData)
         {
             if(CanData->Data[0] == BMS_MAGENE_STATUS_PAGE_ID) //识别PageID
             {
-                memcpy((uint8_t*)CanData->Data + 2, (uint8_t*)&BMS_Magene_TPDOInfo_Main.BaseInfo.PageID + (CanData->Data[1] - 9) * 8 + 2, 6);
+                memcpy((uint8_t*)&BMS_Magene_TPDOInfo_Main.BaseInfo.PageID + (CanData->Data[1] - 9) * 8 + 2, (uint8_t*)CanData->Data + 2, 6); //起始状态码为0x09
             }
             BMS_Magene_OnLineCheck_Main.OnLineFlag = 1;
             BMS_Magene_OnLineCheck_Main.TimeCnt = HAL_GetTick();
@@ -176,7 +176,7 @@ void BMS_CanProcess(BMS_Magene_CanData_Struct_t* CanData)
         {
             if(CanData->Data[0] == BMS_MAGENE_STATUS_PAGE_ID) //识别PageID
             {
-                memcpy((uint8_t*)CanData->Data + 2, (uint8_t*)&BMS_Magene_TPDOInfo_Back.BaseInfo.PageID + (CanData->Data[1] - 9) * 8 + 2, 6);
+                memcpy((uint8_t*)&BMS_Magene_TPDOInfo_Back.BaseInfo.PageID + (CanData->Data[1] - 9) * 8 + 2, (uint8_t*)CanData->Data + 2, 6); //起始状态码为0x09
             }
             BMS_Magene_OnLineCheck_Back.OnLineFlag = 1;
             BMS_Magene_OnLineCheck_Back.TimeCnt = HAL_GetTick();

+ 1 - 1
User/Src/can_process.c

@@ -130,7 +130,7 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
 		//´¦ÀíÒÇ±í·¢ËÍBMSµÄÖ¸Áî
 		case ID_PBU_TO_BMS: case ID_CDL_TO_BMS:
 		{
-			if((BMS_Magene_OnLineCheck_Main.OnLineFlag == 1) && (BMS_Magene_OnLineCheck_Back.OnLineFlag == 1))
+			if((BMS_Magene_OnLineCheck_Main.OnLineFlag == 1) || (BMS_Magene_OnLineCheck_Back.OnLineFlag == 1))
 			{
 				switch(Cmd)
 				{

部分文件因文件數量過多而無法顯示