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.

[参考译文] TMS320F280037:MCAN 将仅以150kbps 的速率发送。 无法更改

Guru**** 2390935 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1316721/tms320f280037-mcan-will-only-transmit-at-150kbps-cannot-change

器件型号:TMS320F280037
主题中讨论的其他器件:C2000WARE

您好!  

Newby Here 我习惯了 PIC 但改变了工作,他们正在使用德克萨斯微控制器。  我们有一个开发板、我将其变为现实。  我运行最新的 CCS 并安装了 C2000Ware5.1。

我已经在运行 PWM,也就是 SPI。 但出于某种原因,除了150kbps 之外,我无法让 MCAN 传输,这是一个奇怪的速度。  我们有一个适用于 CAN @ 20Mhz 的外部时钟、但我也尝试了对 SYSCLK 进行分频。

为了检查、我有一个 CAN X 分析仪和一个来自微控制器的 CAN-TX 逻辑分析仪  

我已经对500kbps 标称值和1Mbps 数据使用了 CAN 位计时计算器、  

我可以确认它们是在寄存器中设置的。 我尝试过其他一些计算器、也尝试过其他一些设置、但我只是接缝以125kbps 而非500kbps 的速率获取数据。  我希望我不会设置一些东西、因为我对微控制器很陌生。  

任何指导我会非常感激...

我还想知道我是否可以关闭扩展 ID、因为我看不到设置  

我最初是以正常 CAN 在 syscfg 中开始的,但当我选择我的消息它崩溃了我...   

谢谢

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

    John:

               我的建议是先从 Driverlib 示例开始、然后尝试使用您的应用程序代码。 Driverlib 示例是经过测试的示例、应该可以正常工作、而不会出现任何问题。 从 C:\ti\cc2000\C2000Ware_5_01_00_00\driverlib\f28003x\examples\mcan 目录中、首先尝试 mcan_EX7_classic_transfer.c。 这是一个为经典 CAN 配置模块的简单示例。 一旦它起作用、您就知道您的硬件链是良好的。 之后请尝试 mcan_ex9_transfer.c。 这会在 CAN FD 模式下传输。  

    请下载我的应用报告 http://www.ti.com/lit/SPRACU9 并查看提供的调试提示。 通过查看此检查清单、可以解决大多数 CAN 问题。 我还创建了一个视频来帮助使用 DCAN 完成第一个通信项目: https://training.ti.com/getting-started-dcan-module。了解它是 DCAN 而不是 MCAN、但您应该能够从中获得一些有用的信息。 请看一下。  

    整合了资源列表、可帮助您处理 CAN: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1033069/faq-what-kind-of-resources-does-ti-provide-to-help-with-can-and-canfd

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

    这里是..  我采用了 FD 示例并将其输入到我正在测试的电路板的测试代码中,将其设置为8字节,然后关闭 FD。  我已经尝试重新计算罐设置,并有悲伤,所以坐下来,用笔和纸是困难的方式。

    //初始化位时序。
    //
    bitTimes.nomRatePrescalar = 0x0U;//标称波特率预分频器
    bitTimes.nomTimeSeg1 = 0x1EU;// SP 之前的标称时间段。 31十进制?
    bitTimes.nomTimeSeg2 = 0x7;// SP 后的标称时间段
    bitTimes.nomSynchJumpWidth = 0x8U;//标称 SJW
    bitTimes.dataRatePrescalar = 0x0U;//数据波特率预分频器
    bitTimes.dataTimeSeg1 = 0x1EU;// SP 之前的数据时间段
    bitTimes.dataTimeSeg2 = 0x7U;//数据时间段在 SP 之后
    bitTimes.dataSynchJumpWidth = 0x8U;//数据 SJW

    Tseg1是32和 Tseg2是8 .. 我的同事建议我每项测试1项、

    但我的主要问题是时钟设置。  

    当检查调试中的寄存器时、蓝色寄存器中的2个 MCANABCLKSEL + MCANACLDIV 未正确设置。我被留给 MUX 在 SYSCLK 处、并且分频器在完全分频13h 处向上分频 、即20分频!  

    我知道器件支持设置  

    但当我尝试添加这个我的项目不会编译..

    错误#10056:符号"Device_enableAllPeripheral"重新定义:首先在"./syscfg/device.obj 中定义;在".ctem"中重新定义/device/device.obj
    错误#10056:符号"Device_verifyXTAL"已重新定义:首先在".头/syscfg/device.obj 文件"中定义;在".data"中重新定义/device/device.obj
    错误#10056:符号"Device_initGPIO"重新定义:第一个定义在".GPIO"中/syscfg/device.obj;在"./device/device.obj 中重新定义
    错误#10056:符号"Device_init"重新定义:首先在".头/syscfg/device.obj 文件"中定义;在"./device/device.obj 中重新定义
    错误#10056:符号"__error__"重新定义:首先在".ctm"中定义/syscfg/device.obj;在".ctm"中重新定义。/device/device.obj
    错误#10056:符号"code_start"重新定义:首先在"./f28003x_codestartbranch.obj"中定义;在"./device/f28003x_codestartbranch.obj 中重新定义
    "../28003x_generic_ram_lnk.cmd"、第93行:错误#10099-D:程序将无法装入可用内存、或该段包含一个调用站点、该调用站点需要一个无法为此段生成的 trampoline。 对齐/分块放置在"codestart"大小0x4 PAGE 0的段中失败。 可用存储器范围:

     

    正如它所说的,我可以以500000kbps 的速率传输,下一步是使用示例尝试接收  

    感谢您的回复.. 最感激

    约翰   

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

    很高兴您能以500kbps 的速率工作。 请参阅  4位时序配置 www.ti.com/lit/SPRAD59中。 我已经解释过如何计算时序参数。