123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- ///##############################################################################
- //
- // FILE: BMS_CAN1_Mail_Box.c
- //
- // TITLE: CAN 1
- // - Module Configuration
- // - Mailbox Definition
- // - Mailbox Load
- // uint16_t CAN1_init ( void )
- // - Mailbox Check
- // uint16_t CAN1_update ( void )
- //
- //
- //##############################################################################
- //
- //==============================================================================
- // Change History:
- //==============================================================================
- // Datum: | Name | Version:| Change / Cause: | No
- //------------------------------------------------------------------------------
- // | | | | 002
- //------------------------------------------------------------------------------
- // | | | | 001
- //------------------------------------------------------------------------------
- // 31.07.13 | VR | 1.0 | New Build | 000
- //==============================================================================
- //==============================================================================
- // Comment Change / Cause:
- //==============================================================================
- // Change: 003 // 003
- //----------------------
- //
- //
- //==============================================================================
- // Change: 002 // 002
- //----------------------
- //
- //
- //==============================================================================
- // Change: 001 // 001
- //----------------------
- //
- //
- //==============================================================================
- #include "BMS_Master.h"
- // ****** Config CAN Modul ********************************************************
- CAN_CONFIG CAN_1_Config = {
- &CAN_1,
- CAN1_PortC10_11,
- TxPushPull, //enum {TxPushPull=0,Tx_OpenDrain} TxPortType;
- RxMask_Individual, //RxMaskType
- 0xFFFFFFFF, //uint32_t GlobalRxMask
- CANBaud_500kHz_OSC_40MHz
- };
- // ****** MailBox BMS to RCT Inverter 0 *************************************************
- CAN_MAILBOX CAN_Tx0_RCT_INVERTER = {
- &CAN_1_Config,
- 0, // uint8_t MBNumber //0..15
- MB_Tx, // uint8_t Direction
- 0, // uint8_t RemoteEn
- 8, // uint8_t DataBytes
- 0, // uint8_t InterruptEnable
- 0xFFFFFFFF, // uint32_t AcceptMask
- SHORT_ID, // 11 Bit ID
- 0x100 // ID
- };
- // ****** MailBox BMS to RCT Inverter 1 *************************************************
- CAN_MAILBOX CAN_Tx1_RCT_INVERTER = {
- &CAN_1_Config,
- 1, // uint8_t MBNumber //0..15
- MB_Tx, // uint8_t Direction
- 0, // uint8_t RemoteEn
- 8, // uint8_t DataBytes
- 0, // uint8_t InterruptEnable
- 0xFFFFFFFF, // uint32_t AcceptMask
- SHORT_ID, // 11 Bit ID
- 0x101 // ID
- };
- // ****** MailBox RCT Inverter *************************************************
- CAN_MAILBOX CAN_Rx_RCT_INVERTER = {
- &CAN_1_Config,
- 2, // uint8_t MBNumber //0..15
- MB_Rx, // uint8_t Direction
- 0, // uint8_t RemoteEn
- 8, // uint8_t DataBytes
- 0, // uint8_t InterruptEnable
- 0xFFFFFFFF, // uint32_t AcceptMask
- SHORT_ID, // 11 Bit ID
- 0x102 // ID
- };
- // ***** CAN1_init *************************************************************
- uint16_t CAN1_init( void )
- {
- uint16_t ReturnVal = CAN_OK;
-
- if(CAN_Init(&CAN_1_Config) == CAN_OK)
- {
- ReturnVal += CAN_Init_Mailbox( &CAN_Tx0_RCT_INVERTER);
- ReturnVal += CAN_Init_Mailbox( &CAN_Tx1_RCT_INVERTER);
- ReturnVal += CAN_Init_Mailbox( &CAN_Rx_RCT_INVERTER);
- }
- return ReturnVal;
- }
- uint16_t CAN1_init_tx_structure(BMS_CAN1_INVERTER_TX* tx_struct) {
- tx_struct->Values.maxBatteryChargeCurrent.valueId =CAN1_TX_MAX_BATTERY_CHARGE_CURRENT_ID;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.maxBatteryChargeCurrent.valueId));
- tx_struct->Values.maxBatteryChargeCurrent.value =0;
-
- tx_struct->Values.maxBatteryChargeVoltage.valueId =CAN1_TX_MAX_BATTERY_CHARGE_VOLTAGE_ID;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.maxBatteryChargeVoltage.valueId));
- tx_struct->Values.maxBatteryChargeVoltage.value =0;
-
- tx_struct->Values.minBatteryDischargeVoltage.valueId =CAN1_TX_MIN_BATTERY_DISCHARGE_VOLTAGE_ID;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.minBatteryDischargeVoltage.valueId));
- tx_struct->Values.minBatteryDischargeVoltage.value =0;
-
- tx_struct->Values.maxBatteryDischargeCurrent.valueId =CAN1_TX_MAX_BATTERY_DISCHARGE_CURRENT_ID;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.maxBatteryDischargeCurrent.valueId));
- tx_struct->Values.maxBatteryDischargeCurrent.value =0;
-
- tx_struct->Values.batteryCurrent.valueId =CAN1_TX_BATTERY_CURRENT_ID;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryCurrent.valueId));
- tx_struct->Values.batteryCurrent.value =0;
-
- tx_struct->Values.batteryCapacity.valueId =CAN1_TX_BATTERY_CAPACITY ;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryCapacity.valueId));
- tx_struct->Values.batteryCapacity.value =0;
-
- tx_struct->Values.batterySOC.valueId =CAN1_TX_BATTERY_SOC_ID;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batterySOC.valueId));
- tx_struct->Values.batterySOC.value =0;
-
- tx_struct->Values.batterySOCtarget.valueId =CAN1_TX_BATTERY_SOC_TARGET_ID;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batterySOCtarget.valueId));
- tx_struct->Values.batterySOCtarget.value =0;
-
- tx_struct->Values.batterySOH.valueId =CAN1_TX_BATTERY_SOH;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batterySOH.valueId));
- tx_struct->Values.batterySOH.value =0;
-
- tx_struct->Values.batteryVoltage.valueId =CAN1_TX_BATTERY_VOLTAGE_ID;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryVoltage.valueId));
- tx_struct->Values.batteryVoltage.value =0;
-
- tx_struct->Values.batteryTemperature.valueId =CAN1_TX_BATTERY_TEMPERATURE;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryTemperature.valueId));
- tx_struct->Values.batteryTemperature.value =0;
-
- tx_struct->Values.batteryStatus.valueId =CAN1_TX_BATTERY_STATUS;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryStatus.valueId ));
- tx_struct->Values.batteryStatus.globalBatteryStatus =0;
- tx_struct->Values.batteryStatus.errorCode =0;
- tx_struct->Values.batteryStatus.byte6 =0;
- tx_struct->Values.batteryStatus.byte7 =0;
-
- tx_struct->Values.batteryMode.valueId =CAN1_TX_BATTERY_MODE;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryMode.valueId));
- tx_struct->Values.batteryMode.value =0;
-
- tx_struct->Values.batteryModeExtra.valueId =CAN1_TX_BATTERY_STATUS_EXTRA;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryModeExtra.valueId));
- tx_struct->Values.batteryModeExtra.value =1;
- shuffle_lsb_msb_can1((uint8_t*)&(tx_struct->Values.batteryModeExtra.value));
-
- }
- // ***** CAN1_update ***********************************************************
- uint16_t CAN1_update( void )
- {
- // ****** MailBox BRUSA to BMS *************************************************
- // if( CHECKBIT( CAN_1.IFRL.R, 1 )) { // NLG5_ST 0x610
- // SETBIT( CAN_1.IFRL.R, 1 ); // IFR clear
- // check_and_save_NLG5_ST( &CAN_RxMB_NLG5_ST_610 );
- // }
- //
- // if( CHECKBIT( CAN_1.IFRL.R, 2 )) { // NLG5_ACT_I 0x611
- // SETBIT( CAN_1.IFRL.R, 2 ); // IFR clear
- // }
- //
- // if( CHECKBIT( CAN_1.IFRL.R, 3 )) { // NLG5_ACT_II 0x612
- // SETBIT( CAN_1.IFRL.R, 3 ); // IFR clear
- // }
- //
- // if( CHECKBIT( CAN_1.IFRL.R, 4 )) { // NLG5_TEMP 0x613
- // SETBIT( CAN_1.IFRL.R, 4 ); // IFR clear
- // }
- //
- // if( CHECKBIT( CAN_1.IFRL.R, 5 )) { // NLG5_ERR 0x614
- // SETBIT( CAN_1.IFRL.R, 5 ); // IFR clear
- // }
-
- return CAN_OK;
- }
- // ***** End BMS_CAN1_Mail_Box.c ***********************************************
|