Other Parts Discussed in Thread: AM623, SYSCONFIG
器件型号: AM623
主题: SysConfig 中讨论的其他器件
AM623 CAN 接口支持的最低数据速率是多少? 例如、它是否支持 10kbps?
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.
Other Parts Discussed in Thread: AM623, SYSCONFIG
器件型号: AM623
主题: SysConfig 中讨论的其他器件
AM623 CAN 接口支持的最低数据速率是多少? 例如、它是否支持 10kbps?
您好 Yang Liu、
我想为这个问题道歉,保持这么长时间开放!
感谢您的再次查询。 从硬件的角度来看、我修订了 MCAN 源时钟和波特率主题。

可以看出,在上一个线程中,我使用错误的公式 — 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
尊敬的 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