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.

[参考译文] AM623:AM623 CAN 接口支持的最低数据速率是多少?

Guru**** 2952510 points

Other Parts Discussed in Thread: AM623, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1656496/am623-am623-what-is-the-minimum-supported-data-rate-of-the-am623-can-interface

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

AM623 CAN 接口支持的最低数据速率是多少? 例如、它是否支持 10kbps?

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1587243/am623-what-is-the-minimum-supported-data-rate-of-the-am623-can-interface/6114465

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

    您好 Yang Liu、

    我想为这个问题道歉,保持这么长时间开放!

    感谢您的再次查询。 从硬件的角度来看、我修订了 MCAN 源时钟和波特率主题。

    如所示: https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/08_06_00_18/exports/docs/api_guide_am62x/DRIVERS_MCAN_PAGE.html

    可以看出,在上一个线程中,我使用错误的公式 —  CAN 比特率=[ CAN_FCLK_freq / 100 *( BRP+1 )]/( 1 + TSEG1 + TSEG2 ) 犯了一个错误。 应更正为:   

    CAN 比特率 =[ CAN_FCLK_freq / (BRP+1) ] /( 1 + TSEG1 + TSEG2 )(以 Mbps 为单位)、其中 CAN_FCLK_freq 以 MHz 为单位。

    CAN_FCLK_freq 源自 PLL0 分频器 MAIN_PLL0_HSDIV4_CLKOUT、默认值为 25。 根据 TI SYSCONFIG 时钟树工具、该分频器的最大值可设置为 128(但我不知道是否可以通过用户软件或仅通过 TI SYSFW 进行此类更改)。 更改 PLL0_HSDIV4 分频器时、您应考虑使用同一分频器为 DCC0 时钟供电 — 数字时钟比较器 0、 因此根据您的工程配置、更改共享时钟源分频器可能不是一个好主意!  

    因此、在 AM62x MCU + SDK MCAN 示例中、CAN_FCLK_freq = 80MHz(默认源)、BRP = 32、TSEG1 = 32、TSEG2 = 16、我们得到:

    CAN 比特率=[80 /(7+1)]/(1 + 6 + 3)=(80 / 8)/ 10 = 10 / 10 = 1 Mbps

    注意:根据上述 MCU + SDK MCAN 指南、MCAN 驱动程序软件应通过将 MCAN_CORE_DBTP 寄存器的以下位字段设置为其最大值来实现最低比特率、如下所示:

    MCAN_CORE_DBTP [20:16] DBRP = 31、MCAN_CORE_DBTP[12:8] DTSEG1 = 31、 MCAN_CORE_DBTP[7:4] DTSEG2 = 15

    当 BRP = DBRP + 1 = 32、TSEG1 = DTSEG1 + 1 = 32、TSEG2 = DTSEG2 + 1 = 16 时、完成的最小波特率为:

    对于 CAN_FCLK_freq 默认值= 80MHz:

    CAN 比特率最小值=[80 /(31+1)]/(1 + 32 + 16)=(80 / 32)/(1 + 32 + 16) = 0.0510Mbps ~ 51Kbps

    对于 CAN_FCLK_freq min = 25MHz:

    CAN 比特率最小值=[25 /(31+1)]/(1 + 32 + 16)=(25 / 32)/(1 + 32 + 16) = 0.0159Mbps ~16Kbps

    如果我们假设不使用 DCC0、并且 MAIN_PLL0_HSDIV4 可以设置为 128 最大值、则 CAN_FCLK_freq min = PLL0_OUT_freq/128 = 2000MHz /128 = 15.625MHz

    对于 CAN_FCLK_freq min = 15.625MHz:

    因此、 从硬件的角度来看、理论上可以实现 CAN 比特率 min =[ 15.625MHz /(31+1)]/(1 + 32 + 16)=(15.625 / 32)/(1 + 32 + 16)= 0.00996Mbps ~9.96Kbps (10Kbps)

    然而、我希望我们的 MCAN 软件驱动程序专家确认、考虑到特定于驱动程序的软件限制、是否可以实现 10Kbps 的低比特率。

    为了转发给相关的软件专家、我需要了解您所使用的 SDK 类型(Linux 或 MCU+SDK、或非 TI 操作系统和环境)。 请同时指定 SDK 的版本?

    我将关闭未回答的旧线程、因为它将复制此线程。

    谢谢你

    此致、

    Anastas Yordanov  

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

    尊敬的 Anastas:

    感谢您的详细说明。 我们将使用适用于 AM62x 的 TI Processor SDK Linux RT、版本 11.02.08.02(内核 6.12.57) 和版本 08.06.00.42(内核 5.10.168)和上游 MCAN (m_can) 驱动程序。

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

    尊敬的 Wei Yufeng:

    我将让我们的 Linux MCAN 驱动程序专家进行确认。

    请预计、根据专家的工作量、可能会有一些延迟。

    感谢您的耐心!

    此致

    Anastas Yordanov

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

    尊敬的 Wei Yufeng:

    我们可以设置最大比特率、如器件树叠加层: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62x-sk-mcan.dtso?h=ti-linux-6.18.y-cicd 中所示

    我们通常不会如设备树绑定中所示设置最小  比特率:git.ti.com/.../bosch,m_can.yaml

    因此、决定最低比特率的因素是从硬件角度看、Anastas 之前已经讨论过这一点。 还应考虑 与 AM62x SoC 配合使用的收发器最小和最大比特率。

    此致、

    Anshu