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.

[参考译文] TCAN4550:GPIO1时钟输出功能

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1342073/tcan4550-gpio1-clockout-function

器件型号:TCAN4550

您好、

我的客户正在使用 TCAN4550、他们遇到了 GPIO1在运行一段时间后将生成一个40MHz 波形、该波形恰好是其外部晶体的频率的问题。

我有客户回读了 工作模式和引脚配置寄存器(地址= h0800)、  

发现当40MHz 显示在波形中时、GPIO1_CONFIG 更改为1。(绿色为写入值)

因此、我想确认的是、如果该位设置为1、是否意味着它会配置为时钟输出、正如我在旧版数据表中看到的、它具有多路复用器。 (虽然从数据表更改中可以看到我们将其删除、但我仍然想知道、这是裸片更改、或只是数据表更改)

我只需确认发生这种情况的原因:   

首先、我检查了 SPI 配置、它是模式0。

然后、我发现他们将使用 TI 演示代码的函数 Init_can (void)重新初始化 TCAN4550。 (www.ti.com/.../SLLC469)

在调用 Init_can(void)之前,他们会向 TCAN4550发送一个 RST 信号,我检查他们会将高电平设置为2ms ,而在消耗低电平之后,他们会再等待2ms。  

因此 我让客户注释这个 Init_can (void)代码、然后问题消失了、或者由于我们没有进行这么长时间的测试、更难重现。

你有什么想法,为什么该位被改变?

Br

爱玛

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

    尊敬的 Emma:

    客户只应使用 GPIO1_CONFIG 值"00"或"10" GPIO1_CONFIG 寄存器值0x01和0x11保留且不应使用。  某些保留寄存器位仅供未使用、而其他寄存器位可用于内部或开发功能、而不打算在客户的应用中使用。

    因此 我让客户注释这个 Init_can (void)代码、然后问题消失了、或者由于我们没有进行这么长时间的测试、更难重现。

    你有什么想法,为什么该位被改变?

    [/报价]

    Init_can (void)函数是演示代码中的主函数、用于配置 TCAN4550的所有器件设置。  我认为、如果您注释掉整个函数、那么该器件将无法进行配置或工作。

    Init_can (void)函数中的以下代码行会设置 GPIO1_CONFIG 寄存器值。

    devConfig。 GPIO1_CONFIG = TCAN4x5x_DEV_CONFIG_GPIO1_CONFIG_GPO;     // GPIO 设置为 GPO (默认)

    此行是如下所示 devConfig 设置的一部分、以供参考。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /* Configure the TCAN4550 Non-CAN-related functions */
    TCAN4x5x_DEV_CONFIG devConfig = {0}; // Remember to initialize to 0, or you'll get random garbage!
    devConfig.SWE_DIS = 0; // Keep Sleep Wake Error Enabled (it's a disable bit, not an enable)
    devConfig.DEVICE_RESET = 0; // Not requesting a software reset
    devConfig.WD_EN = 0; // Watchdog disabled
    devConfig.nWKRQ_CONFIG = 0; // Mirror INH function (default)
    devConfig.INH_DIS = 0; // INH enabled (default)
    devConfig.GPIO1_GPO_CONFIG = TCAN4x5x_DEV_CONFIG_GPO1_MCAN_INT1; // MCAN nINT 1 (default)
    devConfig.FAIL_SAFE_EN = 0; // Failsafe disabled (default)
    devConfig.GPIO1_CONFIG = TCAN4x5x_DEV_CONFIG_GPIO1_CONFIG_GPO; // GPIO set as GPO (Default)
    devConfig.WD_ACTION = TCAN4x5x_DEV_CONFIG_WDT_ACTION_nINT; // Watchdog set an interrupt (default)
    devConfig.WD_BIT_RESET = 0; // Don't reset the watchdog
    devConfig.nWKRQ_VOLTAGE = 0; // Set nWKRQ to internal voltage rail (default)
    devConfig.GPO2_CONFIG = TCAN4x5x_DEV_CONFIG_GPO2_NO_ACTION; // GPO2 has no behavior (default)
    devConfig.CLK_REF = 1; // Input crystal is a 40 MHz crystal (default)
    devConfig.WAKE_CONFIG = TCAN4x5x_DEV_CONFIG_WAKE_BOTH_EDGES;// Wake pin can be triggered by either edge (default)
    TCAN4x5x_Device_Configure(&devConfig); // Configure the device with the above configuration
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    TCAN4x5x_DEV_CONFIG_GPIO1_CONFIG_GPO enum 包括在 TCAN4x5x_TCANL.h Data_Structs 文件中。  该代码仅提供未保留的寄存器设置作为选项。

    Fullscreen
    1
    2
    3
    4
    5
    typedef enum
    {
    TCAN4x5x_DEV_CONFIG_GPIO1_CONFIG_GPO = 0,
    TCAN4x5x_DEV_CONFIG_GPIO1_CONFIG_WATCHDOG_INPUT = 2
    } TCAN4x5x_DEV_CONFIG_GPIO1_CONFIG;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    客户能否验证他们的代码是否将该寄存器值设置为0 (默认值)、或者如果他们正在使用看门狗功能、则设置为2?  不应将其设置为1或3、因为它们是保留的。

    我不知道此位设置会自行更改的任何原因。  有噪声或质量较差的 SPI 信号可能会导致错误地对 SPI 位进行采样、但这可能不是非常可重复的、并且也会损坏其他寄存器值。

    此致、

    乔纳森