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.

[参考译文] TMS320F28P650DH:为何 freopen 功能会影响 MCAN 通常不能运行初始化和 MCAN?

Guru**** 2387830 points
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1473977/tms320f28p650dh-why-freopen-function-will-affect-mcan-normally-init-and-mcan-can-not-run

器件型号:TMS320F28P650DH
主题中讨论的其他器件:C2000WARESysConfig

工具与软件:

尊敬的专家:

我在这里询问我的客户。

 放在 while (1)之前的 init_STDOUT_and_STDIN ()函数只会运行一次初始化代码、 如果客户在红色框中注释代码、例如 freopen 函数、MCAN 可以正常运行。 如果客户添加这些代码、MCAN 将异常运行并进入总线关闭状态。 然后检查寄存器 MCAN_CCCR_INIT 寄存器异常、然后变为1。 您是否有任何建议/目录? 谢谢。

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

    您好、绍兴

    使用 freopen()函数的要求是什么?

    STDOUT_AND_STDIN 函数的预期是什么?

    从您分享的代码片段中没有明显的东西使我相信它无论如何都会影响 MCAN 模块。

    在发生故障并进入总线关闭状态时、您能否提供 CAN_H/CAN_L 信号的屏幕截图?

    此致、

    Zackary Fleenor

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

    您好、Fleenor:

    此处参考了 SCI/UART 打印和 scanf 函数的以下示例。 同时、我们 在 MCAN 示例期间添加了以下 freopen 函数、它还会影响 MCAN 通常的初始化、并且无法在此处工作。  

    C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\f28p65x\examples\c28x\sci\sci_ex4_stdout_redirect 示例。

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

    您好、绍兴

    他们在哪里/何时调用导致失败的函数、以及他们在哪里/何时进行 CAN 初始化?

    此致、

    Zackary Fleenor

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

    您好、 Fleenor:

    我们已根据 F28P65x Launch Board 再现了该问题。

    该 init_STDOUT_and_STDIN 函数称为 Follow Up Board_init ()、并由 SysConfig (包括 MCAN init)生成 Board_ini ()。

    同时 、如果我们删除 如下红框代码所示的 freopen 函数(STDOUT_AND_STDIN)、则 MCAN 初始化正常。 也可以自行测试。如果 在 MCAN 初始化代码之后的红色框中添加这些代码、MCAN 将无法工作。 在此处调用此 stdout 函数时、请确认有关 MCAN init 异常的根本原因?  

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

    您好!

    您能否提供有关 freopen 和 setvbuf 函数正在执行什么操作的更多信息?

    第201205行与第201205行之间有何区别? 看起来这些函数调用了相同的函数、只是一个函数将返回值分配给变量* stdout_fp。

    是否应该像这样回调 freopen()?

    我看不出为什么包含这些函数会导致 MCAN 不工作。 MCAN 是否通过 Board_Init 正确配置后无法运行、还是从开始配置不当而从未运行?

    为了确保完整性、您使用的 SCIB 模块用于 stdout、外设使用了哪些引脚? 我想确认的是、MCAN 引脚没有任何引脚多路复用冲突。

    此致、

    Zackary Fleenor

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

    您好、Fleenor:  

    我已通过电子邮件将重现的问题项目发送给您。

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

    感谢您共享该项目。 您能回答上一个回答中的问题吗?

    此致、

    Zackary Fleenor

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

    是的、 可通过 Board_Init 正确配置。 如果我们在  行201和205代码之后再次配置、则 MCAN 初始化正常、MCAN 可以正常工作。

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

    调用 freopen 函数后重新配置 MCAN 是否可以解决您的问题?

    您能否分享最新的项目文件以供参考?

    此致、

    Zackary Fleenor

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

    是的、 调用免费功能后重新配置 MCAN 可解决客户问题。 请帮助弄清它会影响 MCAN 初始化的原因? 谢谢。