BMS_CAN1_Mail_Box.c 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. ///##############################################################################
  2. //
  3. // FILE: BMS_CAN1_Mail_Box.c
  4. //
  5. // TITLE: CAN 1
  6. // - Module Configuration
  7. // - Mailbox Definition
  8. // - Mailbox Load
  9. // uint16_t CAN1_init ( void )
  10. // - Mailbox Check
  11. // uint16_t CAN1_update ( void )
  12. //
  13. //
  14. //##############################################################################
  15. //
  16. //==============================================================================
  17. // Change History:
  18. //==============================================================================
  19. // Datum: | Name | Version:| Change / Cause: | No
  20. //------------------------------------------------------------------------------
  21. // | | | | 002
  22. //------------------------------------------------------------------------------
  23. // | | | | 001
  24. //------------------------------------------------------------------------------
  25. // 31.07.13 | VR | 1.0 | New Build | 000
  26. //==============================================================================
  27. //==============================================================================
  28. // Comment Change / Cause:
  29. //==============================================================================
  30. // Change: 003 // 003
  31. //----------------------
  32. //
  33. //
  34. //==============================================================================
  35. // Change: 002 // 002
  36. //----------------------
  37. //
  38. //
  39. //==============================================================================
  40. // Change: 001 // 001
  41. //----------------------
  42. //
  43. //
  44. //==============================================================================
  45. #include "BMS_Master.h"
  46. // ****** Config CAN Modul ********************************************************
  47. CAN_CONFIG CAN_1_Config = {
  48. &CAN_1,
  49. CAN1_PortC10_11,
  50. TxPushPull, //enum {TxPushPull=0,Tx_OpenDrain} TxPortType;
  51. RxMask_Individual, //RxMaskType
  52. 0xFFFFFFFF, //uint32_t GlobalRxMask
  53. CANBaud_500kHz_OSC_40MHz
  54. };
  55. // ****** MailBox BMS to RCT Inverter 0 *************************************************
  56. CAN_MAILBOX CAN_Tx0_RCT_INVERTER = {
  57. &CAN_1_Config,
  58. 0, // uint8_t MBNumber //0..15
  59. MB_Tx, // uint8_t Direction
  60. 0, // uint8_t RemoteEn
  61. 8, // uint8_t DataBytes
  62. 0, // uint8_t InterruptEnable
  63. 0xFFFFFFFF, // uint32_t AcceptMask
  64. SHORT_ID, // 11 Bit ID
  65. 0x100 // ID
  66. };
  67. // ****** MailBox BMS to RCT Inverter 1 *************************************************
  68. CAN_MAILBOX CAN_Tx1_RCT_INVERTER = {
  69. &CAN_1_Config,
  70. 1, // uint8_t MBNumber //0..15
  71. MB_Tx, // uint8_t Direction
  72. 0, // uint8_t RemoteEn
  73. 8, // uint8_t DataBytes
  74. 0, // uint8_t InterruptEnable
  75. 0xFFFFFFFF, // uint32_t AcceptMask
  76. SHORT_ID, // 11 Bit ID
  77. 0x101 // ID
  78. };
  79. // ****** MailBox RCT Inverter *************************************************
  80. CAN_MAILBOX CAN_Rx_RCT_INVERTER = {
  81. &CAN_1_Config,
  82. 2, // uint8_t MBNumber //0..15
  83. MB_Rx, // uint8_t Direction
  84. 0, // uint8_t RemoteEn
  85. 8, // uint8_t DataBytes
  86. 0, // uint8_t InterruptEnable
  87. 0xFFFFFFFF, // uint32_t AcceptMask
  88. SHORT_ID, // 11 Bit ID
  89. 0x102 // ID
  90. };
  91. // ***** CAN1_init *************************************************************
  92. uint16_t CAN1_init( void )
  93. {
  94. uint16_t ReturnVal = CAN_OK;
  95. if(CAN_Init(&CAN_1_Config) == CAN_OK)
  96. {
  97. ReturnVal += CAN_Init_Mailbox( &CAN_Tx0_RCT_INVERTER);
  98. ReturnVal += CAN_Init_Mailbox( &CAN_Tx1_RCT_INVERTER);
  99. ReturnVal += CAN_Init_Mailbox( &CAN_Rx_RCT_INVERTER);
  100. }
  101. return ReturnVal;
  102. }
  103. uint16_t CAN1_init_tx_structure(BMS_CAN1_INVERTER_TX* tx_struct) {
  104. tx_struct->Values.maxBatteryChargeCurrent.valueId =CAN1_TX_MAX_BATTERY_CHARGE_CURRENT_ID;
  105. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.maxBatteryChargeCurrent.valueId));
  106. tx_struct->Values.maxBatteryChargeCurrent.value =0;
  107. tx_struct->Values.maxBatteryChargeVoltage.valueId =CAN1_TX_MAX_BATTERY_CHARGE_VOLTAGE_ID;
  108. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.maxBatteryChargeVoltage.valueId));
  109. tx_struct->Values.maxBatteryChargeVoltage.value =0;
  110. tx_struct->Values.minBatteryDischargeVoltage.valueId =CAN1_TX_MIN_BATTERY_DISCHARGE_VOLTAGE_ID;
  111. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.minBatteryDischargeVoltage.valueId));
  112. tx_struct->Values.minBatteryDischargeVoltage.value =0;
  113. tx_struct->Values.maxBatteryDischargeCurrent.valueId =CAN1_TX_MAX_BATTERY_DISCHARGE_CURRENT_ID;
  114. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.maxBatteryDischargeCurrent.valueId));
  115. tx_struct->Values.maxBatteryDischargeCurrent.value =0;
  116. tx_struct->Values.batteryCurrent.valueId =CAN1_TX_BATTERY_CURRENT_ID;
  117. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryCurrent.valueId));
  118. tx_struct->Values.batteryCurrent.value =0;
  119. tx_struct->Values.batteryCapacity.valueId =CAN1_TX_BATTERY_CAPACITY ;
  120. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryCapacity.valueId));
  121. tx_struct->Values.batteryCapacity.value =0;
  122. tx_struct->Values.batterySOC.valueId =CAN1_TX_BATTERY_SOC_ID;
  123. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batterySOC.valueId));
  124. tx_struct->Values.batterySOC.value =0;
  125. tx_struct->Values.batterySOCtarget.valueId =CAN1_TX_BATTERY_SOC_TARGET_ID;
  126. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batterySOCtarget.valueId));
  127. tx_struct->Values.batterySOCtarget.value =0;
  128. tx_struct->Values.batterySOH.valueId =CAN1_TX_BATTERY_SOH;
  129. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batterySOH.valueId));
  130. tx_struct->Values.batterySOH.value =0;
  131. tx_struct->Values.batteryVoltage.valueId =CAN1_TX_BATTERY_VOLTAGE_ID;
  132. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryVoltage.valueId));
  133. tx_struct->Values.batteryVoltage.value =0;
  134. tx_struct->Values.batteryTemperature.valueId =CAN1_TX_BATTERY_TEMPERATURE;
  135. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryTemperature.valueId));
  136. tx_struct->Values.batteryTemperature.value =0;
  137. tx_struct->Values.batteryStatus.valueId =CAN1_TX_BATTERY_STATUS;
  138. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryStatus.valueId ));
  139. tx_struct->Values.batteryStatus.globalBatteryStatus =0;
  140. tx_struct->Values.batteryStatus.errorCode =0;
  141. tx_struct->Values.batteryStatus.byte6 =0;
  142. tx_struct->Values.batteryStatus.byte7 =0;
  143. tx_struct->Values.batteryMode.valueId =CAN1_TX_BATTERY_MODE;
  144. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryMode.valueId));
  145. tx_struct->Values.batteryMode.value =0;
  146. tx_struct->Values.batteryModeExtra.valueId =CAN1_TX_BATTERY_STATUS_EXTRA;
  147. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryModeExtra.valueId));
  148. tx_struct->Values.batteryModeExtra.value =1;
  149. shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryModeExtra.value));
  150. }
  151. // ***** CAN1_update ***********************************************************
  152. uint16_t CAN1_update( void )
  153. {
  154. // ****** MailBox BRUSA to BMS *************************************************
  155. // if( CHECKBIT( CAN_1.IFRL.R, 1 )) { // NLG5_ST 0x610
  156. // SETBIT( CAN_1.IFRL.R, 1 ); // IFR clear
  157. // check_and_save_NLG5_ST( &CAN_RxMB_NLG5_ST_610 );
  158. // }
  159. //
  160. // if( CHECKBIT( CAN_1.IFRL.R, 2 )) { // NLG5_ACT_I 0x611
  161. // SETBIT( CAN_1.IFRL.R, 2 ); // IFR clear
  162. // }
  163. //
  164. // if( CHECKBIT( CAN_1.IFRL.R, 3 )) { // NLG5_ACT_II 0x612
  165. // SETBIT( CAN_1.IFRL.R, 3 ); // IFR clear
  166. // }
  167. //
  168. // if( CHECKBIT( CAN_1.IFRL.R, 4 )) { // NLG5_TEMP 0x613
  169. // SETBIT( CAN_1.IFRL.R, 4 ); // IFR clear
  170. // }
  171. //
  172. // if( CHECKBIT( CAN_1.IFRL.R, 5 )) { // NLG5_ERR 0x614
  173. // SETBIT( CAN_1.IFRL.R, 5 ); // IFR clear
  174. // }
  175. return CAN_OK;
  176. }
  177. // ***** End BMS_CAN1_Mail_Box.c ***********************************************