This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2634:总线关闭 ISR 不按预期工作。

Guru**** 1822340 points
Other Parts Discussed in Thread: SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1381752/am2634-bus-off-isr-does-not-work-as-expected

器件型号:AM2634
主题中讨论的其他器件:SysConfig

工具与软件:

您好,我试图让 ECU 进入总线关闭做一些事情,在 If_Controller 26200Off,但没有总线关闭处理程序(can_mcanProcessBusOff),也没有 呼叫 If_Controller 26200Off.


传输计数器会增加、但中的总线关闭标志从不升高。

您可以指导如何提高总线关闭标志吗?

我在 Canwrite 上放置一个断点、以使 ECU 在发送之前停止、然后将 CANHigh 和 CANLow 短接至 Go。

您的、
Abdelrhman Afifi  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Abdelrhman:

    您能概述一下如何配置 CAN 总线、以便尝试和检测总线关闭状态下的中断吗?

    我不熟悉这个特殊标志、因此请其他一些对此有更多了解的专家回答、但了解您为实现此目标所做的工作也会有所帮助。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!
    我将其配置为工作离子中断、适用于 TX 和 Rx。

    const struct Can_ControllerStruct_PC
        CanConfigSet_PC_CanController_CAN1 =
    {
        CanConf_CanController_CanController_CAN1,      /* Id as provided by GUI */
        (boolean)TRUE,   /* Contoller is used=1 or not_used=0*/
        0x52600000U, /* Can Controller Base Address */
    	(boolean)FALSE,    /* Automatic wakeup via bus activity */
        CAN_TX_RX_PROCESSING_INTERRUPT,  /* Can Rx Processing Type */
        CAN_TX_RX_PROCESSING_INTERRUPT,  /* Can Tx Processing Type */
        (boolean)TRUE,/* BusOff  TRUE = Interrupt FALSE = Polling */
    	(boolean)TRUE,    /* TRUE = Interrupt FALSE = Polling */
    	(boolean)TRUE,    /* Auto retransmission on Tx error Enable/Disable */
    	NULL_PTR,
    	CAN_CONTROLLER_INSTANCE_MCAN0,  /* Controller Instance */
    };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有更新吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Abdelrhman:

    美国节假日期间、多位专家不在为您服务-我将在下周回转。

    您发布的代码片段是否由 SysConfig 生成? 特定于您的应用?

     CAN 上有一个总线监控模式、为此可能需要启用该模式、但我无法确认这两者是否相关。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!
    它是从 tresos (TI AUTOSAR MCAL)生成的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、有任何更新吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Abdelrhman:

    我已在一位 MCAL 专家的帮助下更好地配置 Tresos。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    我对 Tresos 没有任何问题、问题是我提到的 MCAL。
    总线关闭 ISR 从未执行。

    您的、
    Abdelrhman Afifi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Abdelrhman:

    我能够使用附加的代码启用 mcan1_psr_BUS_off 位。

        uint32             testPassed = E_OK;
        Std_ReturnType     status;
        Can_ConfigType    *ConfigPtr;
        const Can_PduType *PduInfo;
    
        PduInfo         = &Pdu;
        canTestInitPdu(testPrms->testCaseId);
    
        ConfigPtr = &testObj->canConfig;
    
        gCanTestResult = E_OK;
        /* Do Can Init */
        Can_Init(ConfigPtr);
    
        if (gCanTestResult == E_OK)
        {
            canTestInterruptEnable();
            /* Initialize Tx and Rx Confirmation Count to 0 */
            CanIf_TxConfirmationCount = 0U;
            CanIf_RxConfirmationCount = 0U;
    
    
            if (Can_SetBaudrate(gCanControllerId, 1U))
            {
                GT_0trace(testObj->traceMask, GT_INFO1,
                          " Error in changing BaudRate\n\r");
                testPassed = E_NOT_OK;
            }
    
            /* Set Controller Mode for controller 0U*/
            status = Can_SetControllerMode(gCanControllerId, CAN_CS_STARTED);
            
            if (status != E_OK)
                testPassed |= E_NOT_OK;
            
            if (testPassed == E_OK)
            {
                testPassed = E_NOT_OK;
                do {
                    /* Polls for CAN state */
                    status = Can_Write(testPrms->mailbox, PduInfo);
                //    Can_MainFunction_Write();
                    // AppUtils_delay(100U);
    //                Can_MainFunction_BusOff();
                    // AppUtils_delay(100U);
                } while ((MainFunc_Execution !=
                          3U) && ControllerMode1[0] == CAN_CS_STARTED);
                testPassed = E_OK;
            }
            
        }

    请检查它是否适合您。  

    谢谢、此致、
    Gunjan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好

    我使用的是 MCAL 版本9.1.0、我不知道该代码片段 kindy 指南是什么。

    CAN 配置为与配置共享的中断模式

    [报价 userid="564003" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1381752/am2634-bus-off-isr-does-not-work-as-expected/5281552 #5281552"]

    您好!
    我将其配置为工作离子中断、适用于 TX 和 Rx。

    [报价]

    等待您的反馈。
    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 ,

    此代码只是启用中断、然后执行 can_write。

    您能否分享您用于启用中断和检查 BUS_OFF 的(代码步骤)?

    谢谢、此致、
    Gunjan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我使用的是 TI AUTOSAR MCAL、我不知道您需要我共享什么代码。

    我在上述注释之一中共享了 Tresos 生成的配置、总线关闭配置为中断模式:BUSOFF  true =中断 false =轮询*/

    CAN 处理程序 在接收和发送过程中工作正常、但总线不会关闭。

    您的、
    Abdelrhman Afifi