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.

[参考译文] LAUNCHXL-F28P65X:使 CAN 闪存编程示例工作

Guru**** 2468610 points
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1479340/launchxl-f28p65x-getting-the-can-flash-programming-example-work

器件型号:LAUNCHXL-F28P65X
主题中讨论的其他器件:C2000WARESysConfig

工具与软件:

您好、TI 团队:

我已成功进行测试 SCI 串行闪存编程 我现在正在努力 CAN 闪存编程 . 但是、我的程序中可能缺少一些内容。

遵循的步骤:

  1. 设置 CAN 的引导模式 : S3与 GPIO72为高电平 GPIO84低电平 .
  2. 置位 S4至 XCRV 位置 对其进行布线 CAN 信号 连接。
  3. 互联 连接到 CANTX 和 CANRX 测试点的两根线 逻辑分析仪跟踪。
  4. 已导入 DCAN 项目 并编译出来。
  5. 已修改 字节3和字节4 在输出文件中、如下所示:AA 08 C0 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 41 00 48 16
  6. 已执行 DCAN 主机程序 使用命令:./ dcan_flash_programr.exe -d f28p65x -k dcan_flash_kernel_c28x_dual_ex5.txt -a led_ex1_c28x_dual_blinky_cpu1.txt -v

发现的问题:

根据我的 可进行采集 主机正在发送帧 、但是 MCU 从不响应 .

为了调试、我 已重新编译 DCAN 主机程序 、注释掉 十六进制字节打印 重点关注关键输出。 我注意到了 无论 CAN 接口是否已连接、主机应用的行为都相同 .

问题:

  1. 如果 BOOT ROM 主机发送应用程序时如何通过 CAN 进行响应?
  2. 有没有 缺少步骤 干扰有多大?

如果能提供任何指导、将不胜感激。

提前感谢您、
Luciano

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

    您好、Luciano、

    1) 1)是的、引导 ROM 在发送应用程序时应该做出响应。 您是否同时使用为 C2000Ware 中的 DCAN 提供的内核和主机应用程序? 还有哪个 C2000ware 版本?

    2) 2)您是否在此项目中使用 PEAK 系统 CAN 适配器? 其次、能否分享项目中 can_timing.h 文件的内容?  

    谢谢。此致、

    Charles

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

    尊敬的 Charles:

    是的、我在中使用 TI 提供的 DCAN 示例和实用程序 C2000Ware_5_04_00_00 .

    我还使用了 peak CAN 接口、但它的确如此 不会 峰值 CAN PRO。

    经过多次迭代后、我想向您更新我的发现:

    • 发送的第一个帧 主机应用程序 第一个字 可直接放在程序文件中、但是 仅在我首次连接 USB 时 . 之后、它从不发送 "0xAA、0x08" 一降再降。 此外、发送的帧始终相同。 我怀疑 主机应用程序正在等待 ACK 然后再继续添加字节。
    • dcan_flash_programmer#define kernel行编译了 已注释掉 、允许我通过将内核上载到 RAM 中 调试会话中的 CCS . 此时、我观察到当 闪存内核发送测试帧 波特率恰好是1.25倍 在中定义的值#define CAN_CALC_BITRATE 1000000UL
    • 「我明白了,我明白了 Linux 并创建了一个 使用 SocketCAN 的 Python 脚本 发送消息的位置 125k 、而设置CAN_CALC_BITRATE100k 、然后再次测试了设置。 不过、应用正常运行 在对10个 CAN 帧进行四舍五入之后失败 . 我可以看到这一点 将唯一的值写入地址处的存储器 0x80000.
    • 以前、我测试过一个简单的方法 CAN 应用 使用 和 SysConfig 工具 它起作用了 产品 . 现在、我正在考虑 创建空工程 中的代码 flash_kernel_ex5_can_flash_kernel . 但是、在继续之前、我需要 完全了解输出文件是如何生成的 及其可能失败的原因。

    如果有任何建议、将不胜感激。

    谢谢!
    Luciano。

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

    您好、Luciano、

    您能否仔细检查 RAM 中运行的内核是否将 GPIO 配置为 CAN-TX 和 CAN-RX? 您是否正在使用 INTOSC2 (可以在 device.h 中设置此选项)?

    此致、

    Skyler

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

    您好、Skyler:

    我更改了 INTOSC2 和现在的 比特率符合预期 . 谢谢您的参与!

    // #define USE_PLL_SRC_XTAL
    #define USE_PLL_SRC_INTOSC

    我认为 GPIO 引脚已正确配置、因为我在开关 S4附近将两根导线焊接到 LaunchPad 上的 CANTX 和 CANRX 测试点、这两个测试点对应于 GPIO4和 GPIO5、并且当微控制器通过调试会话运行时正在进行通信。

    当微控制器复位且所选引导引脚处于 CAN 配置中时、我没有看到来自微控制器侧的 ACK、因此可能会更改默认引脚。

    之后、 我解决了写作问题 . 这是一个 在我的 Python 脚本中填充错误 该行不是8的倍数。 现在、我可以使用 CCS 将 DCAN 闪存内核加载到 RAM 中对应用进行编程。

    引导 ROM 代码是否可以使用与 GPIO4和 GPIO5不同的 CAN 引脚? 我不特意更改此内容、但我认为如果 CAN 消息到达100K、这可能是不接收 ACK 的唯一方法。 如何读取/更改 OTP 值?

    此致、
    Luciano。

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

    您好、Luciano、

    [quote userid="514985" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1479340/launchxl-f28p65x-getting-the-can-flash-programming-example-work 设置 CAN 的引导模式 : S3与 GPIO72为高电平 GPIO84低电平 .

    您的怀疑是正确的。 由于您使用默认引导模式表、因此 CAN 引导选项0将与 GPIO59/GPIO58一同用于 Tx/GPIO58 Rx。 您需要在仿真引导中配置 BOOTDEF 0x22或对 OTP 进行编程、以便为板载 CAN 收发器使用正确的 GPIO 分配。

    此致!

    Matt

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

    大家好、Matt、今天、感觉很好。 对不起我的错误。 我想我会和其他文档相混淆。

    感谢大家的支持。

    此致、
    Luciano。