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.

[参考译文] TMS570LS3137:针对波特率的 CAN 总线配置

Guru**** 2548020 points
Other Parts Discussed in Thread: TMS570LC4357, TMS570LS3137, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1345936/tms570ls3137-can-bus-configuration-for-baud-rate

器件型号:TMS570LS3137
主题中讨论的其他器件:TMS570LC4357HALCOGEN

您好

我已将 CAN 总线波特率配置为

can1939_init (canREG1、2、bus_rate、fcpu、1);

实现

#define BUS_RATE 125 /*波特率[Kbits/sec] del bus */
#define FCPU 180 /*频率 CPU EST (180MHz)*/

和 CAN 总线工作正常。

我尝试了一个更快的波特率(250,1000 ),但我不能有工作。

你有什么建议吗?

谢谢

法比奥

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

    尊敬的 Fabio:

    我不知道问题的确切根本原因、能够以高达1Mbps 的速率工作。

    请尝试参考以下两个线程:

    (2) TMS570LC4357:用于在 Halcogen 生成的驱动程序中更改 CAN 比特率的 API -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    (2) RM57L843:DCAN 时序配置- 20Kbit/s -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    如果他们不能提供帮助、那么请分享您的项目、以便在最后进行验证和调试。

    --
    谢谢。此致、
    Jagadish。

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

    您好,Jagadish

    我还不能这样做:-(

    我使用 IXXAT 分析了 CAN 流量、当我使用125kbps (以及 IXXAT)配置我的板时、我看到了正确的数据包、但当我尝试使用250kbps 配置 bot 时、我只看到了数据包、但看到了错误。

    我尝试过使用另一个微控制器、现在可以了、因此250kbps 的 IXXAT 配置是可以的。

    我用两个函数配置和启动 TMS570上的 CAN 总线... 我将发送给他们 PM、以解决有关软件的安全问题。

    提前感谢

    法比奥

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

    尊敬的 Fabio:

    很抱歉我的答复出现延误。

    我能否在结束时获得一个最简单的调试项目?

    --
    谢谢。此致、
    Jagadish。

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

    您好

    给你一个私人的消息

    谢谢

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

    您好  

    谢谢您提供的代码、我会进行深入研究、并很快提供更新。

    谢谢

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

    尊敬的 Fabio:

    我对我的答复出现拖延表示诚挚的歉意。 我上周休假了、我已经完成了这么多的线程。 我明天就会处理好你的问题、并会提供最新信息。

    --
    谢谢。此致、
    Jagadish。

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

    您好, Jagadish

    不用担心:-)

    很多等级

    法比奥

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

    尊敬的 Fabio:

    我尝试过另一个微控制器,因此可以使用250kbps 的 IXXAT 配置。

    抱歉、 不清楚、
    您是否能够以相同的250kbps 波特率与另一个控制器正常配合工作?

    --
    谢谢。此致、
    Jagadish。

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

    可以、只需确认 CAN 总线分析仪已正确配置

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是,只需确认 CAN 总线分析仪已正确配置即可[/报价]

    这里另一个控制器意味着不是 TI 的 TMS570?

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

    ST 的 STM570……不是 TI

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

    尊敬的 Fabio:

    我没有  IXXAT USB 来连接 CAN 分析仪。 此外、我还没有 TMS570LS32137开发板。

    因此、我使用 PCAN View 和 TMS570LC4357板进行了测试。 TMS570LC4357和 TMS570LS3137中的 CAN IP 相同。

    我在接收数据方面没有发现任何问题:

    我持续从 CAN 发送 Hercules 字的速率为250kbps、在 PCAN 视图中也是如此。

    我唯一提出的建议是、请确保在 IXXAT 工具上正确配置采样点。

    在您在 HALCoGen 上进行波特率计算后、采样点将会变化。

    例如、请参阅 I 配置250kbps 后的采样率:

    则为66.66%。

    因此、我在 PCAN 视图上配置了相同的采样点:

    之后、我在接收数据方面不会看到任何问题。

    IXXAT 是否允许配置采样点?

    --
    谢谢。此致、
    Jagadish。

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

    您好, Jagadish

    很抱歉我的反馈延迟了

    感谢您的 analisys。

    不幸的是 i-m 不使用 HAL 代码 GEN 而是一个旧的项目为我以前的同事..

    是否可以让您 canInit 程序和 CanTransmit 只是为了验证我的 CAN 管理程序_

    谢谢

    法比奥

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

    尊敬的 Fabio:

    这里是125kbps 和250kpbs 的代码变更

    左侧的波特率为125kps、右侧的波特率为250kbps。  

    这不仅是改变波特率变化的 BRP 值、HALCoGen 还做了几个其他时序参数。 尝试进行相同的更改并自行进行测试。

    对于该更改、采样点为  

    125kbps - 62.5%

    250kbps - 66.6%

    --
    谢谢。此致、
    Jagadish。

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

    我将 PLL1 180MHz 与

    BRP reg = (1)<< 16 |

              (3-1)<< 12 |

              (3+1 -1)<< 8 |

              (3 -1) << 6 |

               (25)<< 0

    并且在125kbps 波特率下工作

    您的配置是哪些 PLL1?

      

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

    尊敬的 Fabio:

    CAN 模块不会直接使用 PLL1时钟、对吗?

    它将使用 VLCK1、如下所示:

    这将通过 PLL1生成:

    在本例中、PLL1时钟为300MHz、但 CAN 模块 VCLK1的时钟为75MHz。

    --
    谢谢。此致、
    Jagadish。

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

    对不起,我不是像你这样的专家:-(

    我正在使用上面写入的配置、并且它们使用125kbps od 波特率。 与 CAN 配置相关的注释表明 、PLL1驱动 CAN、频率为180MHz

    除了 BRT、还有哪些寄存器需要确认 CAN 总线使用180MHz 时钟?

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

    在成瘾中,我试图在调试阶段改变 BTR 和其他寄存器,微控制器被挂起...但我不能改变寄存器值...

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

    在成瘾,你能分享你的代码吗?

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

    尊敬的 Fabio:

    成瘾时,您能分享您的代码吗?

    当然可以。

    下面是我的代码:

    e2e.ti.com/.../3301.CAN_5F00_TEST_5F00_POLL_5F00_LC4357.zip

    --
    谢谢。此致、
    Jagadish。

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

    谢谢

    我会处理的:-)

    法比奥

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

    您好,Jagadish

    遗憾的是、我的项目来自于使用 HALCOGEN 构建的旧应用程序、但 HALCOGEN 项目丢失了。

    但是、我曾尝试在一个新项目中使用 HALCOGEN、其中使用了针对 PLL1 180MHz 的 CAN 总线配置、并且我生成了  

    配置控制器 CAN 总线。

    对于125kbps、值是相同的、但对于其他速率、值与我的项目中使用的值不同。

    这些是我现在使用的正确配置、并且相对速率有效!

    /* 125kbps canREG1->BTR =(UINT32)((UINT32) 1U << 16U)|
    (UINT32)((UINT32)(3U-1U)<<12U)|
    (UINT32)((UINT32)((3U+1U)- 1U)<<8U)|
    (UINT32)((UINT32)(3U-1U)<<6U)|
    (UINT32) 25U;*/

    /* 250kbps canREG1->BTR =(UINT32)((UINT32) 0U<< 16U)|
    (UINT32)((UINT32)(4U-1U)<<12U)|
    (UINT32)((UINT32)((3U+4U)- 1U)<<8U)|
    (UINT32)((UINT32)(4U-1U)<<6U)|
    (UINT32) 29U;*/
    /* 500kbps
    canREG1->BTR =(UINT32)((UINT32) 0U<< 16U)|
    (UINT32)((UINT32)(3U-1U)<<12U)|
    (UINT32)((UINT32)((5U + 3U)- 1U)<< 8U)|
    (UINT32)((UINT32)(3U-1U)<<6U)|
    (UINT32) 14U;*/

    // 1Mbps
    /* canREG1->BTR =(UINT32)((UINT32) 0U<<16U)|
    (UINT32)((UINT32)(1U-1U)<<12U)|
    (UINT32)((UINT32)((7U+1U)-1U)<<8U)|
    (UINT32)((UINT32)(1U-1U)<<6U)|
    (UINT32)8U;*
    canREG1->BTR =(UINT32)((UINT32) 0U<< 16U)|
    (UINT32)((UINT32)(1U-1U)<<12U)|
    (UINT32)((UINT32)((7U+1U)-1U)<<8U)|
    (UINT32)((UINT32)(1U-1U)<<6U)|
    (UINT32)8U;

    这些是旧值…… 非常相似但不同

    / PLL1= 180MHz /

    /*! 简明定义 costante per impostazione budrate con PLL1=pcan 160MHz e bit timing=125k */
    #define BRP_180m_125K 25U
    #define BRPE_180m_125K 1U
    #define PHASE_SEG1_180m_125K 3U
    #define PHASE_SEG2_180m_125K 1U
    #define SJW_180m_125K 3U

    /*! 简明定义 costante per impostazione budrate con PLL1=pcan 160MHz e bit timing=250k */
    #define BRP_180m_250K 29U
    #define BRPE_180m_250K 0U
    #define PHASE_SEG1_180m_250K 4U
    #define PHASE_SEG2_180m_250K 4U
    #define SJW_180m_250K 4U

    /*! 简明定义 costante per impostazione budrate con PLL1=pcan 160MHz e bit timing=500k */
    #define BRP_180m_500K 14U
    #define BRPE_180m_500K 0U
    #define PHASE_SEG1_180m_500K 3U
    #define PHASE_SEG2_180m_500K 3U
    #define SJW_180m_500K 3U

    /*! 简明定义 costante per impostazione baudrate con PLL1=pcan 160MHz e bit timing=1M */
    #define BRP_180m_1M 8U
    #define BRPE_180m_1M 0U
    #define PHASE_SEG1_180m_1M 1U
    #define PHASE_SEG2_180m_1M 1U
    #define Sjw_180m_1M 1U

    非常感谢您的支持

    此致

    法比奥

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

    尊敬的 Fabio:

    这些是我现在使用的正确配置,且相对费率有效!

    很高兴听到这个消息。

    --
    谢谢。此致、
    Jagadish。