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.

[参考译文] LP-MSPM0G3507:设置 MCAN 的数据速率

Guru**** 2487425 points
Other Parts Discussed in Thread: LP-MSPM0G3507, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1218283/lp-mspm0g3507-setting-datarate-for-mcan

器件型号:LP-MSPM0G3507
Thread 中讨论的其他器件: SysConfigTCAN3403

我无法在 LP-MSPM0G3507上设置 MCAN 外设的数据速率。  我目前使用的是 SDK 0.50、因为最新的 SDK 中存在一个 CAN 问题。  我从 SDK 中开始使用 TX 和 RX 项目、它们将以演示中的256KB/2Mbps 速率相互通信。 两个演示都使用以下 MCAN 设置:

/*
 * Configure Nominal Bit Rate to 250 kbps and Data Bit rate to 2 Mbps
 * nominal_tq = ((nomRatePrescalar +1)/(CANCLK)) = 83.33 ns
 * length_of_nominal_bit_time =
 *            (nomSynchJumpWidth + nomTimeSeg1 + nomTimeSeg2) * nominal_tq =
 *            (3 + 20 + 25) * 83.33ns = 4 us
 * Nominal_Bit_Rate = (1/length_of_nominal_bit_time) = (1 / 4us) = 250 kbps
 *
 * data_tq = ((dataRatePrescalar +1)/(CANCLK)) = 41.66 ns
 * length_of_data_bit_time =
 *            (dataSynchJumpWidth + dataTimeSeg1 + dataTimeSeg2) * data_tq =
 *            (3 + 5 + 4) * 41.66 ns =  500 ns
 * Nominal_Bit_Rate = (1/length_of_nominal_bit_time) = (1 / 500 ns) = 2 Mbps
 */


static const DL_MCAN_BitTimingParams bitTimes = {
    /* Nominal Baud Rate Pre-scaler. */
    .nomRatePrescalar = 0x3U,
    /* Nominal Time segment before sample point. */
    .nomTimeSeg1 = 0x14U, // 20U
    /* Nominal Time segment after sample point. */
    .nomTimeSeg2 = 0x19U, // 25U
    /* Nominal (Re)Synchronization Jump Width Range. */
    .nomSynchJumpWidth = 0x3U,
    /* Data Baud Rate Pre-scaler. */
    .dataRatePrescalar = 0x1U,
    /* Data Time segment before sample point. */
    .dataTimeSeg1 = 0x5U,
    /* Data Time segment after sample point. */
    .dataTimeSeg2 = 0x4U,
    /* Data (Re)Synchronization Jump Width. */
    .dataSynchJumpWidth = 0x3U,
};

0.50 SDK 不支持 SysConfig 工具、因此只有手动更改可用。  我确实从支持 SysConfig 的0.57 SDK 中加载了 TX 项目、以获取计算的值。  两个0.5与0.57 SDK 在参数值上不一致、尤其是在"...SyncJumpWidth"方面。

无论如何、数据表显示 MCAN 外设可以达到5Mbps、但 SysConfig 工具在我尝试获取5Mbps 的速率时会抛出错误。  我能够手动获取传输的最快速度如下:

static const DL_MCAN_BitTimingParams bitTimes = {
    /* Nominal Baud Rate Pre-scaler. */
    .nomRatePrescalar = 3U,
    /* Nominal Time segment before sample point. */
    .nomTimeSeg1 = 11U,
    /* Nominal Time segment after sample point. */
    .nomTimeSeg2 = 10U,
    /* Nominal (Re)Synchronization Jump Width Range. */
    .nomSynchJumpWidth = 3U,
    /* Data Baud Rate Pre-scaler. */
    .dataRatePrescalar = 0x0U,
    /* Data Time segment before sample point. */
    .dataTimeSeg1 = 6U,
    /* Data Time segment after sample point. */
    .dataTimeSeg2 = 5U,
    /* Data (Re)Synchronization Jump Width. */
    .dataSynchJumpWidth = 0x3U,

这是一个500Kbps 的标头、数据速率为48MHz/(14)=3.43MHz。  更快、发送似乎在消息的标头部分之后锁定。

是否有关于设置这些值的应用手册?  使用我有限的测试,SyncJumpWidth 似乎不会影响数据速率。  出于测试目的、我想以最大速率运行 MCAN 接口。

我的设置是两个 LP-MSPM0G3507开发套件、采用两个 TCAN 开发套件、其中填充了 TCAN1057AVDRQ1 8Mbps CAN IC。

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

    您好、William、

    实际上、我曾经测试过250kHz/4.8MHz、运行正常。(两个 MSPM0M0G3507+ TCAN1046)

    顺便说一下、 SysConfig 在0.57 SDK 中有一些错误、并在0.58中修复。

    谢谢。

    于浩

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

    您是否记得/拥有该配置的寄存器设置?  如果我将 dataTimeSeg 变量的降低速度快于大约3.3MHz、我的发送器会停止发送数据段。

    -威廉

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

    您好、William、

    这是我的配置。 您是否尝试过使用其他 CAN 收发器?

    谢谢。

    于浩

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

    感谢您的更新。  我从您的文件中尝试了设置、得到了同样的结果、当我用示波器查看 CAN 总线时、传输的数据阶段没有任何转换。  我已经尝试过 TCAN1057AVDRQ1芯片和 TCAN3403、这是目前唯一的两种。  您能否发送/发布整个"ti_msp_dl_config.c"文件。  可能是由于时钟设置或其他一些开关导致 MCAN 模块在较高速度下发生故障。

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

    我刚注意到 SDK 0.58被发布、所以我将重试这里的设置。

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

    我安装了新的0.58 SDK 并使用 mysecure 文件夹中的 CCS Theia beta。 新的 SDK 支持 SysConfig 工具、并且数字与以前大不相同。  使用新设置我能够获得4.8Mbps 的速率、在将 TX/RX 时钟更改为内部+PLL 后、我能够获得80MHz 而不是48MHz、我能够获得5MHZ、没有任何投诉。  我需要做一些测试、但事情似乎在工作。

    谢谢!

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

    好的、听起来很棒!

    谢谢!