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.

[参考译文] TMS320F28374S:TMS320F28374S

Guru**** 2540720 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/866616/tms320f28374s-tms320f28374s

器件型号:TMS320F28374S
Thread 中讨论的其他器件:controlSUITEC2000WARE

我需要对 CAN 位时序的 CAN_regs 进行一些澄清。  具体来说、位时序寄存器 CAN_BTR、字段 TSEG1 (位11-8)。  我正在阅读《TMS320F2837xS Delfino 微控制器技术参考手册》、该手册于2017年9月修订。第2268页表21-13中的寄存器字段说明显示其采样点之前的时间段、而实际的 Tseg1是编程的寄存器值+ 1。  "采样点前的时间段"这一措辞 似乎表明该时间包括同步段(Sync_Seg)、传播时间段(Prop_seg)和相位缓冲段1 (Phase_Seg1/SJW)。  但是 、第2250页的第21.12.2节指出"因此位时间的长度为(编程值)[TSEG1 + TSEG2 + 3]tq 或(功能值)[Sync_Seg + Prop_Seg + Phase_Seg1 + Phase_Seg2]tq。  从第2268页的表21-13中可以看到实际的 TSeg2被编程为 TSEG2寄存器的值+1。  从2245页的表21-4中可以看到 SYC_Seg 固定为1tq。  因此、我假设"位时间长度为(编程值)[TSEG1 + TSEG2 + 3]tq"语句中的"+3"来自实际 TSEG1寄存器值+ 1编程的 TSEG1寄存器值+ 1、实际 TSEG2寄存器值+ 1编程的事实、 第三个+ 1来自将 Sync_seg 固定为1tq。  但这意味着实际的 TSeg1不包括 Sync_seg,这与我在表21-13页2268中对寄存器字段说明的解释相矛盾。

当我查看 C:\ti\controlSUITE\device_support\F2837xS\V210\F2837xS_common\driverlib\can.h 中的示例 C 头文件时、有一个名为 tCANBitClkParams 的 typedef 结构、其成员名为 uSyncPropPhase1Seg。  代码中的注释显示该字段包含 Sync_Seg、Prop_Seg 和 Phase_Seg1的和。  该结构 tCANBitClkParams 用于使用函数 CANBitTimingSet 设置 CAN 位时序。  查看 C:\ti\controlSUITE\device_support\F2837xS\V210\F2837xS_common\driverlib\CAN.c 中的示例 C 源文件时、在第673行的 CANBitTimingSet 函数定义中、它会声明

  uBitReg |=((pClkParms->uSyncPropPhase1Seg - 1)<<8)& CAN_BTR_TSEG1_M;

该代码行将 TSEG1寄存器字段设置为(uSyncPropPhase1Seg - 1)。  减1是因为 uSyncPropPhase1Seg 是实际值、而实际值是编程的寄存器值+ 1。  这意味着实际的 Tseg1确实包含 Sync_Seg。 不过,这与我对技术参考手册第21.12.2页2250节所述位时间长度的解释相矛盾。

此外,技术参考手册第21.12.2页2249节规定,"Prop_Seg 和 Phase_Seg1之和(作为 TSEG1)."。  我将该语句解释为 TSEG1不包含 Sync_Seg。

因此、您可以看到、存在许多差异、难以理解实际的 TSeg1是否包括 Sync_Seg。  我的确切问题是:CAN_regs、位定时寄存器 CAN_BTR、字段 TSEG1 (位11-8)是否已编程= ((实际)[Sync_Seg + Prop_Seg + Phase_Seg1])-1, 或者 TSEG1是否已编程= (实际)[Prop_Seg + Phase_Seg1]- 1?

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

    Andrew、

               我们将查看您的帖子、并将很快作出响应。 在此期间、您可能需要查看 http://www.ti.com/lit/an/sprac35/sprac35.pdf 附带的计算器 

    controlSUITE 已被 C2000ware 取代。 请从 TI 网站下载最新版本的 C2000ware。  

    另一个注意事项是 、http://www.ti.com/lit/ug/spruhx5g/spruhx5g.pdf 上提供了最新版本的 TRM

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

    [引用]"采样点之前的时间段"这一措辞似乎表明这一时间包括同步段(Sync_Seg)、传播时间段(Prop_seg)和相位缓冲段1 (Phase_Seg1/SJW)。[/引用]

    不包括 Sync_Segment。  

    [引用]但是第2250页的第21.12.2节显示"因此位时间的长度为(编程值)[TSEG1+TSEG2+3]tq [/引用]

    此部件正确。  

    [引用]或(功能值)[Sync_Seg + Prop_Seg + Phase_Seg1 + Phase_Seg2]tq。 [/报价]

    我同意这部分内容有点令人困惑。

     [引用]从第2268页的表21-13中可以看到实际的 TSeg2是通过编程设置的 TSEG2寄存器值+1。 [/报价]

    TSEG2就是这样。  

    [引用]因此、我假设"位时间长度为(编程值)[TSEG1 + TSEG2 + 3]tq"语句中的"+3"来自实际 TSEG1寄存器值+ 1编程的 TSEG1寄存器值+ 1、实际 TSEG2寄存器值+ 1编程的事实、 第三个+ 1来自将 Sync_seg 固定为1tq。 但这意味着实际的 TSeg1不包括 Sync_seg,这与我在表21-13页2268中对寄存器字段说明的解释相矛盾。 [/报价]

    如上第一点所述、它不包含 Sync_seg。 也许应该将措辞更改为"采样点之前的时间段、不包括 Sync_Segment "