protocol.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. @copyright None
  3. @file protocol.c
  4. @author Comment Vivre
  5. @date 2025-12-23
  6. @brief None
  7. */
  8. #include <MyProject.h>
  9. // 1 / 115200 * 640 *1000 ≈ 5.6 ms
  10. uint8_t xdata DebugDat[MAX_FRAME_LEN] = {0};
  11. uint8_t RecvBuffer[MAX_FRAME_LEN] = {0};
  12. bool RecMessageFalg = false;
  13. /**
  14. @function Dabug_Data_Update
  15. @brief 调试信息上载
  16. @date 2025-11-05
  17. */
  18. void Dabug_Data_Update(void)
  19. {
  20. static uint8_t update_delay_cnt = 0;
  21. uint8_t sumcheck = 0, addcheck = 0;
  22. uint16_t i = 0, switchTemp = 0;
  23. if (++ update_delay_cnt > 9)
  24. {
  25. update_delay_cnt = 0;
  26. memset(&DebugDat, 0, 0x40);
  27. *(_IO uint16_t xdata *)(&DebugDat + 0) = 0xABFF;
  28. *(_IO uint16_t xdata *)(&DebugDat + 2) = 0xFFF1;
  29. *(_IO uint16_t xdata *)(&DebugDat + 4) = 0x3800;
  30. switchTemp = (uint16_t)FOC__UD;
  31. *(_IO uint16_t xdata *)(&DebugDat + 6) = (switchTemp >> 8) | (switchTemp << 8);
  32. switchTemp = (uint16_t)FOC__UQ;
  33. *(_IO uint16_t xdata *)(&DebugDat + 8) = (switchTemp >> 8) | (switchTemp << 8);
  34. switchTemp = (uint16_t)FOC__IA;
  35. *(_IO uint16_t xdata *)(&DebugDat + 10) = (switchTemp >> 8) | (switchTemp << 8);
  36. switchTemp = (uint16_t)FOC__EMF;
  37. *(_IO uint16_t xdata *)(&DebugDat + 12) = (switchTemp >> 8) | (switchTemp << 8);
  38. switchTemp = (uint16_t)FOC__IQ;
  39. *(_IO uint16_t xdata *)(&DebugDat + 14) = (switchTemp >> 8) | (switchTemp << 8);
  40. switchTemp = (uint16_t)FOC_IQREF;
  41. *(_IO uint16_t xdata *)(&DebugDat + 16) = (switchTemp >> 8) | (switchTemp << 8);
  42. switchTemp = (uint16_t)FOC__EOME;
  43. *(_IO uint16_t xdata *)(&DebugDat + 18) = (switchTemp >> 8) | (switchTemp << 8);
  44. switchTemp = (uint16_t)FOC__POW;
  45. *(_IO uint16_t xdata *)(&DebugDat + 20) = (switchTemp >> 8) | (switchTemp << 8);
  46. // UD UQ IA EMF IQ IQREF EOME POW REF
  47. // 计算校验
  48. for (i = 0; i < 62; i++)
  49. {
  50. sumcheck += DebugDat[i];
  51. addcheck += sumcheck;
  52. }
  53. //将计算出来的校验数据写入数据帧
  54. DebugDat[62] = sumcheck;
  55. DebugDat[63] = addcheck;
  56. Switch_DMA(0);
  57. }
  58. }