Thread 中讨论的其他器件: SysConfig、 TCAN3403
我无法在 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。
