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.

[参考译文] TCAN1145-Q1:上电后、切换到正常模式失败。

Guru**** 2478765 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1445103/tcan1145-q1-after-power-on-changing-to-normal-mode-fails

器件型号:TCAN1145-Q1

工具与软件:

嗨团队、

电源打开时、客户处于 Steadby 模式。 客户希望将 MODE SEL 配置为正常模式、但写入后返回值不正确。 请帮助分析为什么会出现问题?

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

    您好、Alan:

    我们目前正在度假。  
    谢谢、请在下周前提供反馈。  

    此致、

    Michael。  

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

    您好、Michael、ö m

    您的建议如何?

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

    您好、Michael、ö m

    客户已调优 SPI、但在根据我们的应用手册调试部分唤醒时遇到问题。 请帮助分析它。

    客户现在已修复了设备无法唤醒的情况。 它在收到621之后正常唤醒。 但是、如果客户先发送另一个 ID、然后再发送621、则无法将其唤醒。
    请帮助找出问题的原因
    下面是配置代码实现

    TCAN114X_STATUS_ENUM
    TCAN114x_Mode_Set(TCAN114X_MODE_ENUM modeRequest)
    {
        TCAN114x_Mode_Control modeRegister;
        TCAN114x_Mode_Control_Read(&modeRegister);
        printf("Read Can Mode before write: %d\n", modeRegister.MODE_SEL);
        switch (modeRequest)
        {
            default: return TCAN114X_FAIL;
            case TCAN114X_MODE_SLEEP :
            {
                modeRegister.MODE_SEL = REG_BITS_TCAN114X_MODE_CNTRL_MODE_SLEEP;
                modeRegister.SW_EN = 1;
                TCAN114x_Mode_Control_Write(&modeRegister);
                return TCAN114X_SUCCESS;
            }
    
            case TCAN114X_MODE_STANDBY : modeRegister.MODE_SEL = REG_BITS_TCAN114X_MODE_CNTRL_MODE_STANDBY; break;
            case TCAN114X_MODE_LISTEN : modeRegister.MODE_SEL = REG_BITS_TCAN114X_MODE_CNTRL_MODE_LISTEN; break;
            case TCAN114X_MODE_NORMAL : 
                modeRegister.MODE_SEL = REG_BITS_TCAN114X_MODE_CNTRL_MODE_NORMAL; 
                //modeRegister.SW_EN = 1;
                break;
        }
    
        TCAN114X_STATUS_ENUM ret = TCAN114x_Mode_Control_Write(&modeRegister);
        TCAN114x_Mode_Control tmp_modeRegister;
        TCAN114x_Mode_Control_Read(&tmp_modeRegister);
        printf("Read Can Mode after write: %d\n", tmp_modeRegister.MODE_SEL);
        if (ret!= TCAN114X_SUCCESS){
            printf("[ERROR]TCAN114x_Mode_Set: %d fail\n", modeRegister.MODE_SEL);
            return TCAN114X_FAIL;
        }
    
        return TCAN114X_SUCCESS;
    }
    
        uint8_t sw_config = 0;
        can1145_write_reg_value(REG_TCAN114X_SW_CONFIG_4, &sw_config,1);
        uDelay(500);
        TCAN114x_PN_Config sleep_config;
        sleep_config.ID = 0x621;        // 0x621
        sleep_config.IDE = 0;           // standard frame
        sleep_config.IDMask = 0x00;     
        sleep_config.DataMaskEN = 0;    // no mask
        sleep_config.DATA[6] = 0x00;
        sleep_config.DLC = 0;           
        sleep_config.SWFDPassive = 1;   //CAN with flexible data rate frame are ignored
        sleep_config.CAN_DR = 5;        // = 500Kbps
        //sleep_config.FD_DR = 3;           //Reserved
        sleep_config.FrameErrorThreshold = 254;
        ret0 = TCAN114x_PN_Config_Write(&sleep_config);
        uDelay(5000);
        ret1 = TCAN114x_Mode_Set(TCAN114X_MODE_SLEEP);
        printf("standby trans ret0:%d, sleep trans ret1:%d\r\n",ret0,ret1);
    
    

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

    您好、Alan:

    如果他们首先发送另一个 ID、那么他们发送匹配的 WUF 之前的时间间隔是多久?

    此致、

    Sean

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

    你好、Sean、ć

    客户首先手动发送另一个 ID、但无法唤醒系统。 然后、接下来发送 WUF ID、间隔约为几秒。

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

    您好、Alan:

    WUF 接收器通过首先接收有效的 WUP 来激活、如果它们手动发送另一个 ID、并且间隔约为几秒、则 WUF 接收器将停用并在 tSILENCE 内返回深度睡眠模式、在这种情况下、它们需要首先发送 WUP 来再次启动选择性唤醒、然后发送匹配的 WUF 以唤醒器件。

    他们是否能够在发送第一个 ID 的 tSILENCE 内尝试发送匹配的 WUF?

    此致、

    Sean

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

    你好、Sean、

    感谢您的分析。
    客户通过插上并拔 CAN 接线盒来模拟发送 WUP、然后发送 WUF、对其进行了仿真和测试。 它的确正常地被唤醒了。
    但还有一个问题。 我根据位位置使用了唤醒功能、并将 canid 0x123的 Byte6位0设置为1来唤醒。
    1.发送 WUP
    2.将 canid 0x123的 Byte6位0设置为0并发送
    3.将 canid 0x123的 Byte6位0设置为1并发送
    这样、步骤1、2和3就不能被唤醒。
    如果只能唤醒步骤1和3、
    但我们的实际汽车将会有步骤1、2和3的顺序、这种情况无法被唤醒。
    客户设计的步骤是否正确? 或者这种现象是否符合预期?

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

    第2步和第3步如下所示:

    我从 DS 和 AN 中看到的信息是、PN 唤醒必须首先发送 WUP 以使 WUF 接收器处于运行状态、然后发送包含 WUF 的 CAN 消息、以便将 PN 唤醒。
    现在、客户表示其网关设计不会发送 WUP、而是只会向 CAN 帧消息添加 WUF。 是否有实现 PN 唤醒功能的方法?

    应用手册:

    DS:

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

    你好、Sean、ć

    1.客户反馈:没有听说每次使用 TJA1145-Q1时都需要发送 WUP。 如果每个 PN 唤醒都需要 WUP、这是否是 CAN 和 NXP 之间的差异?
    2. WUP 在中被描述为显性脉冲、隐性脉冲和显性脉冲。 这是否意味着客户需要每次发送一次此消息以唤醒特定帧设计、然后发送 WUF 以在 tSilence 超时之前唤醒? 在超时后、它需要再次发送 WUP 脉冲、然后在 tSILENCE 时间内再次发送 WUF。 我的理解是否正确?


    3.是否有测得的 WUP 波形? 如果客户需要添加此设计、他们希望看到实际的波形、以便更好地了解。
    非常感谢您的支持!

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

    您好、Alan:

    1.这是 TJA1145或任何其他局部联网 CAN 收发器的相同要求、我没有说他们每次都需要发送 WUP 进行选择性唤醒。 它们仅在总线保持空闲状态的时间大于 tSILENCE 时才需要执行该操作、以保持总线处于活动状态并启用 WUF 接收器。 以下是 NXP 的应用手册:

    https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/other/7787/1/AH1203_Partial_Networking_v1.1.pdf

    如果他们仍对 TI 或 NXP 的应用手册有疑问、请查看 ISO11898-2中的快照:

    2.不需要,他们不需要再发送一个 WUP 在 tSILENCE 超时之前。  如果在总线上没有针对 tSILENCE 的通信、它们将需要发送一个 WUP 来"重新激活"总线偏置。

    3.对 WUP 没有严格的要求,在实际应用中 WUP 几乎可以是任何 CAN 帧,这意味着总线上的任何活动实际上都可能是唤醒事件。  下面我们举例说明。

    此致、

    Sean