]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Temporary changes for the CAN communication
authorLeos Mikulka <mikulleo@fel.cvut.cz>
Fri, 3 May 2013 08:50:30 +0000 (10:50 +0200)
committerLeos Mikulka <mikulleo@fel.cvut.cz>
Fri, 3 May 2013 08:50:30 +0000 (10:50 +0200)
arch/arm/arm_cr4/drivers/Can.c
boards/mpc5567qrtech/examples/rte_simple/config/Com_PbCfg.c
boards/ti_tms570ls/examples/rte_simple/config/CanIf_Cfg.h
system/EcuM/EcuM_Callout_Stubs.c

index 3f17ac90be9aefc49e5a4a7490308361774704d3..040093a590e0f692f272fa6d848e278c3022e5fd 100644 (file)
@@ -41,7 +41,7 @@
 #define Dem_ReportErrorStatus(...)\r
 #endif\r
 \r
-static sint8 IfRegId = 0;\r
+//static sint8 IfRegId = 0;\r
 \r
 /* Macro for waiting until busy flag is 0 */\r
 #define DCAN_WAIT_UNTIL_NOT_BUSY(ControllerId, IfRegId) \\r
@@ -106,6 +106,8 @@ static Can_StateType            ModuleState = CAN_UNINIT;
 static CanIf_ControllerModeType ControllerMode[CAN_ARC_CTRL_CONFIG_CNT];\r
 \r
 /* Used to switch between IF1 and IF2 of DCAN */\r
+static uint8 IfRegId = 0;\r
+\r
 \r
 /* Used to order Data Bytes according to hardware registers in DCAN */\r
 static const uint8 ElementIndex[] = {3, 2, 1, 0, 7, 6, 5, 4};\r
@@ -407,9 +409,13 @@ void Can_Init(const Can_ConfigType *Config)
         CanRegs[Controller]->CTL = 0x02001641 | DCAN_IRQ_MASK | (CanControllerConfigData[Controller].Can_Arc_Loopback << 7);// | (CanControllerConfigData[Controller].CanWakeupProcessing >> 8) | (CanControllerConfigData[Controller].CanBusOffProcessing >> 7);\r
 #else\r
         CanRegs[Controller]->CTL = 0x00001641 | DCAN_IRQ_MASK | (CanControllerConfigData[Controller].Can_Arc_Loopback << 7);// | (CanControllerConfigData[Controller].CanWakeupProcessing >> 8) | (CanControllerConfigData[Controller].CanBusOffProcessing >> 7);\r
+\r
+        /* Parity Off */\r
+        CanRegs[Controller]->CTL = 0x00020043 | DCAN_IRQ_MASK | (CanControllerConfigData[Controller].Can_Arc_Loopback << 7);// | (CanControllerConfigData[Controller].CanWakeupProcessing >> 8);\r
 #endif        \r
         /* LEC 7, TxOk, RxOk, PER */\r
         CanRegs[Controller]->SR  = 0x0000011F;\r
+        //CanRegs[Controller]->SR = 0x0000031F;  // according to HalCoGen\r
 \r
         /* Test Mode only for Development time: Silent Loopback */\r
         if (CanControllerConfigData[Controller].Can_Arc_Loopback) {\r
@@ -423,6 +429,8 @@ void Can_Init(const Can_ConfigType *Config)
             *(ControllerConfig[Controller].CancelPtr + MsgNr) = 0;\r
             *(ControllerConfig[Controller].TxPtr     + MsgNr) = 0;\r
             \r
+            CanRegs[Controller]->ABOT = 0; // added manually according to HalCoGen, maybe delete???\r
+\r
             DCAN_WAIT_UNTIL_NOT_BUSY_NO_RV(Controller, IfRegId);\r
 \r
             // Initialize all message objects for this controller to invalid state.\r
@@ -430,6 +438,7 @@ void Can_Init(const Can_ConfigType *Config)
                        CanRegs[Controller]->IFx[IfRegId].ARB = 0x00000000;\r
                        /* Start writing Arbitration Bits */\r
                        CanRegs[Controller]->IFx[IfRegId].COM = 0x00A80000 | (MsgNr + 1);\r
+                       // CanRegs[Controller]->IFx[IfRegId].COM = 0x00F80000 | (MsgNr + 1); maybe right, later it's used again??\r
 \r
                        /* Use IFx[0] and IFx[1] alternating */\r
                        IfRegId ^= 1;\r
@@ -474,11 +483,14 @@ void Can_Init(const Can_ConfigType *Config)
                                                                                                                | (CanControllerConfigData[Controller].CanTxProcessing << 1) // Tx confirmation interrupt enabled\r
                                                                                                                | (Eob & ~(hoh->CanObjectType >> 22)); // Eob, only for Rx.\r
 \r
+                               //CanRegs[Controller]->IFx[IfRegId].MC = 0x00001008;\r
+\r
                                //CanRegs[Controller]->IFx[IfRegId].MC = 0x00001008 | CanControllerConfigData[Controller].CanRxProcessing | (CanControllerConfigData[Controller].CanTxProcessing) | Eob & ~(hoh->CanObjectType >> 17);\r
 \r
                                if(hoh->CanIdType == CAN_ID_TYPE_STANDARD)      /* Standard Identifiers */\r
                                {\r
                                        /* Only Standard-Ids are accepted, Set Mask */\r
+                                       // HalCoGen\r
                                        CanRegs[Controller]->IFx[IfRegId].MASK = 0x80000000 | ((*(hoh->CanFilterMaskRef)) & 0x1FFFFFFF);\r
                                        /* Message valid, Id, Direction */\r
                                        CanRegs[Controller]->IFx[IfRegId].ARB  = 0x80000000 | ((hoh->CanIdValue & 0x7FF) << 18) | hoh->CanObjectType;\r
@@ -486,7 +498,9 @@ void Can_Init(const Can_ConfigType *Config)
                                else if(hoh->CanIdType == CAN_ID_TYPE_EXTENDED) /* Extended Identifiers */\r
                                {\r
                                        /* Only Extended-Ids are accepted, Set Mask */\r
-                                       CanRegs[Controller]->IFx[IfRegId].MASK = 0x80000000 | ((*(hoh->CanFilterMaskRef)) & 0x1FFFFFFF);\r
+                                       CanRegs[Controller]->IFx[IfRegId].MASK = 0xC0000000 | ((*(hoh->CanFilterMaskRef)) & 0x1FFFFFFF); // HalCoGen\r
+                                       // C = bit 30: The message direction bit (Dir) is used for acceptance filtering.\r
+                                       // CanRegs[Controller]->IFx[IfRegId].MASK = 0x80000000 | ((*(hoh->CanFilterMaskRef)) & 0x1FFFFFFF);\r
                                        /* Message valid, Id, Direction */\r
                                        CanRegs[Controller]->IFx[IfRegId].ARB  = 0xC0000000 | (hoh->CanIdValue & 0x1FFFFFFF) | hoh->CanObjectType;\r
                                }\r
@@ -510,7 +524,7 @@ void Can_Init(const Can_ConfigType *Config)
         /* Set Bit Timing Register */\r
         CanRegs[Controller]->BTR = Can_CalculateBTR(Controller);\r
 \r
-        /* Reset CCE Bit */\r
+        /* Reset CCE Bit, i.e. disable configuration change */\r
         CanRegs[Controller]->CTL &= ~0x00000040;\r
 \r
 #if(CAN_DEV_ERROR_DETECT == STD_ON)\r
@@ -603,7 +617,7 @@ void Can_InitController(uint8 Controller, const Can_ControllerConfigType* Config
 \r
                DCAN_WAIT_UNTIL_NOT_BUSY_NO_RV(Controller, IfRegId);\r
 \r
-               /* Read actual MaskRegister value of MessageObject */\r
+               /* Read actual MaskRegister value of MessageObject; TxRqst/NewDat */\r
         CanRegs[Controller]->IFx[IfRegId].COM = 0x004C0000 | (MsgNr);\r
 \r
         DCAN_WAIT_UNTIL_NOT_BUSY_NO_RV(Controller, IfRegId);\r
@@ -612,7 +626,7 @@ void Can_InitController(uint8 Controller, const Can_ControllerConfigType* Config
         /* Set new Mask */\r
         CanRegs[Controller]->IFx[IfRegId].MASK |= (*(hoh->CanFilterMaskRef)) & 0x1FFFFFFF;\r
         /* Write new Mask to MaskRegister */\r
-        CanRegs[Controller]->IFx[IfRegId].COM   = 0x00C80000 | (MsgNr);\r
+        CanRegs[Controller]->IFx[IfRegId].COM   = 0x00C80000 | (MsgNr);        // E8??\r
 \r
         IfRegId ^= 1;\r
     }\r
@@ -677,7 +691,7 @@ Can_ReturnType Can_SetControllerMode(uint8 Controller, Can_StateTransitionType T
         break;\r
 \r
     case CAN_T_SLEEP:\r
-        /* Set PDR  Bit */\r
+        /* Set PDR  Bit - Local Power Down Mode requested */\r
         CanRegs[Controller]->CTL |=  0x01000000;\r
         /* Save actual Register status */\r
         RegBuf = CanRegs[Controller]->CTL;\r
@@ -806,7 +820,7 @@ Can_ReturnType Can_Write(Can_Arc_HTHType Hth, Can_PduType *PduInfo)
     uint8                 *CurTxRqstPtr;\r
     imask_t state;\r
 \r
-    CurSduPtr       = PduInfo->sdu;\r
+    CurSduPtr       = PduInfo->sdu;            // e.g. ComArcIPduBuffer_TX_PDU\r
     \r
 \r
 /* DET Error Check */\r
@@ -847,7 +861,7 @@ Can_ReturnType Can_Write(Can_Arc_HTHType Hth, Can_PduType *PduInfo)
                        continue; // This message object is not part of this hoh.\r
                }\r
                /* Check if TxRqst Bit of MsgObject is set */\r
-               if(CanRegs[ControllerId]->TRx[MsgNr >> 5] & (1 << (MsgNr & 0x1F)))\r
+               if(CanRegs[ControllerId]->TRx[MsgNr >> 5] & (1 << (MsgNr & 0x1F))) // (1 << (MsgNr & 0x1F)) - bitIndex\r
                {\r
                        continue;\r
                }\r
index a887a98db3a43b4d51d6e519ed8f21a2f35ddf27..011a129d738c20375e0ee613ed266e4b2021dd50 100644 (file)
@@ -242,11 +242,29 @@ const ComSignal_type * const ComIPduSignalRefs_FreqReq[] = {
 };\r
 const ComSignal_type * const ComIPduSignalRefs_RX_PDU[] = {\r
        &ComSignal[ Arg1 ],\r
-       &ComSignal[ Arg2 ],             \r
+       &ComSignal[ Arg2 ],\r
+       /*      &ComSignal [ H ],\r
+        *  &ComSignal [ E ],\r
+        *  &ComSignal [ R ],\r
+        *  &ComSignal [ C ],\r
+        *  &ComSignal [ U ],\r
+        *  &ComSignal [ L ],\r
+        *  &ComSignal [ E ],\r
+        *  &ComSignal [ S ],\r
+        */\r
        NULL,\r
 };\r
 const ComSignal_type * const ComIPduSignalRefs_TX_PDU[] = {\r
-       &ComSignal[ ResultSig ],                \r
+       &ComSignal[ ResultSig ],\r
+       /*      &ComSignal [ H ],\r
+        *  &ComSignal [ E ],\r
+        *  &ComSignal [ R ],\r
+        *  &ComSignal [ C ],\r
+        *  &ComSignal [ U ],\r
+        *  &ComSignal [ L ],\r
+        *  &ComSignal [ E ],\r
+        *  &ComSignal [ S ],\r
+        */\r
        NULL,\r
 };\r
 \r
index 757e30a55e141451b80e27ce3cf28983a9b4bb2c..7b1eed0a5e90c01ab46a8b722a10a2c6594d2bf9 100644 (file)
@@ -37,7 +37,7 @@
 #define CANIF_TRANSCEIVER_API               STD_OFF  // Not supported\r
 #define CANIF_TRANSMIT_CANCELLATION         STD_OFF  // Not supported\r
 \r
-\r
+// TODO: check whether FreqReq, FreqInd necessary\r
 #define CANIF_PDU_ID_RX_PDU            0\r
 #define CANIF_PDU_ID_FreqReq           1\r
 \r
index 5356f576b9c3f044728d3466f1a4b032e5f6c611..955eacf918af5f8ded47a6c7f72310e2c367c265 100644 (file)
@@ -143,6 +143,7 @@ void EcuM_AL_DriverInitOne(const EcuM_ConfigType *ConfigPtr)
 #if defined(USE_PORT)\r
        // Setup Port\r
        Port_Init(ConfigPtr->PortConfig);\r
+       //Dmm_Reset(ConfigPtr->PortConfig);\r
 #endif\r
 \r
 \r