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.

[参考译文] TMS320F28379D:CAN't Read Code Composer 中的 CanbRegs

Guru**** 2519520 points
Other Parts Discussed in Thread: LAUNCHXL-F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1564492/tms320f28379d-can-t-read-canbregs-in-code-composer

部件号:TMS320F28379D


工具/软件:

尊敬的技术支持:

 

我正在尝试使用 Code Composer 11.0.0.00012 在 GPIO 引脚 12 (Tx) 和 17 (Rx) 上设置 LAUNCHXL-F28379D 开发板的 CANB 外设。 由于与客户开发环境兼容、无法选择升级到较新版本。 我仅使用 CPU1。 我写的第一个代码是:

 

#include “F2837xD/device.h"</s>“

#include “F2837xD/can.h"</s>“

 

int 主要 ( Void )

   while (1);

   返回 0;

}

 

它编译时没有错误、但发出了不可访问代码的警告、因为 WAIT 命令会阻止 return 命令。

 

我通过板载调试器查看了 CanbRegs。 所有值均为 0x00000000、但数据表指示一些寄存器不应是 0x00000000。 然后查看“Memory Browser“视图。 从数据地址 0x0004A000 开始、当我将鼠标悬停在数据字段的第一个字上时、返回的数据为“---"。“。 随后还会弹出以下消息:“Memory map 阻止读取 0x0004A000@Data“。 我在聊天组中搜索了一个解决方案、并尝试将以下行添加到调试器的*。gel 文件中:

 

GEL_MapAddStr (0x0004A000、1、0x0800、“R|W|AS4",“,0、0);                  /*  CANB *   /

 

我重新编译了、所有“---"和“和“内存映射阻止了…“ 走开。 遗憾的是、“Register"视“视图和“Memory Browser“视图中的所有 CanbRegs 寄存器仍然是 0x00000000、而不是其默认值。

 

为了进行完整性检查、我在 main () 中使用相同的 while (1) 命令对 Piccolo 控制卡 F28035 进行了编程、并能够看到 ECAN 寄存器的正确默认值。

 

我需要如何使用“Register"视“视图和“Memory Browser“视图来在 LAUNCHXL-F28379D 上查看 CanbRegs 的正确默认值?

 

谢谢您、

 

Mark Prosachik

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

    您好: Mark、

    上电后、F2837x 器件上的所有外设默认处于禁用状态。 必须启用这些引脚、才能操作或响应寄存器读取和写入。

    请使用 以下 API 在 main () 中启用 CANA 和 CANB:

    SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_CANA);
    SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_CANB);

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

    QJ、

    API 不是解决方案、我们也不允许使用它们。 我专门运行了以下程序...

    int main()

      while (1);

      返回 0;

    }

    ...在 LAUNCHXL F28379D 和 Piccolo F2803x controlCARD 上、将 CAN 外设代码从方程中取出。 调试器不关心是否有 CAN 代码。 调试器可以访问所有寄存器。

    LAUNCHXL-F28379D 为每个寄存器报告了 0x00000000、但数据表指示几个寄存器应具有非零默认值。

    Piccolo F2803x controlCARD 报告了正确的默认值。

    与方案没有什么不同;因此、问题在于发展环境。

    这是一个需要对开发环境有深入了解的问题。 请先找一位专家回答、然后再回答。

    下面是 LAUNCHXL-F28379D 板报告的内容。

    CAN_ES 的默认值应为 0x00000007

    CAN_BTR 的默认值应为 0x00002301

    CAN_RAM_INIT 应具有默认值 0x00000005

    下面是 Piccolo F2803x controlCARD 电路板报告的内容。

    突出显示的值是正确的非零默认值:  

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

    是的。 不需要 CAN 模块初始化代码、但应该启用模块的时钟。 外设的时钟通过 PCLKCRx 启用。