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.

[参考译文] TMS320F28075:有人可以分享一个有关如何使用 CLA 连接 GPIO 的简单示例吗?

Guru**** 2539500 points
Other Parts Discussed in Thread: TMS320F28075, TMS320F28377D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/609508/tms320f28075-can-anybody-please-share-a-simple-example-on-how-to-interface-gpio-using-cla

器件型号:TMS320F28075
主题中讨论的其他器件: TMS320F28377D

我已经尝试过以下主题中列出的示例:e2e.ti.com/.../1442283、但无法成功使用 TMS320F28075。

/----------------- GPIO 配置-------------------------------------------------------
EALLOW;
GpioCtrlRegs.GPAGMUX2.bit.GPIO16=0;
GpioCtrlRegs.GPADIR.bit.GPIO16=1;// 1=输出、0=输入
GpioDataRegs.GPASET.bit.GPIO16=1;//初始设置为高电平
GpioCtrlRegs.GPAPUD.bit.GPIO16=0;// 0=启用上拉,1=禁用上拉
GpioCtrlRegs.GPACSEL3.bit.GPIO16=1;// 0=CPU1、1=CPU1.CLA1、2=CPU2、3=CPU2.CLA
EDIS;
/--------------- 在.cla 文件中添加了头文件------------------------------------------
#include "F28x_Project.h"
-------------------- iir2p2z.cla 文件的任务1 ----------------------------
中断空 Cla1Task1 (空)

_mdebugstop();
GpioDataRegs.GPADAT.bit.GPIO16=1;
YN = xn*S1_B[0]+ W2[1];
W2[0]= xn*S1_B[1]+ yn *S1_A[1]+ W1[1];
W2[1]= W2[0];
W1[0]= xn*S1_B[2]+ yn *S1_A[2];
W1[1]= W1[0];
GpioDataRegs.GPADAT.bit.GPIO16=0;
//__mnop();
//__mnop();
//__mnop();

-------------------------------------------------------

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请看一下这个主题-它可能是有益的: e2e.ti.com/.../1442283
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这是我提到的线程。 它适用于 TMS320F28377D、但不适用于我的 TMS320F28075。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、在时间允许的情况下、我可以对此进行研究。 (除了您和我引用的线程在您的原始帖子中未突出显示之外、我没有其他借口。)
    您是否有安装了 F28075的定制板?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这是一个定制板。 在同一个线程中、有另一个用户报告了与我的类似问题、但此后没有更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Qinghua、

    F28377示例应适用于 F28075器件、除非您使用的是 F28075上不可用的 GPIO 引脚。 如果您能够解释在 F28075器件上运行此示例时遇到的问题、那将是一个不错的选择。

    此致、

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Todd 和 Vivek 的帮助。 我正在尝试使用 CLA 来切换 TMS320F28075中的 GPIO42 (而我可以使用主 CPU 轻松地进行切换、不会出现任何问题)。 我遵循了技术参考手册和 e2e.ti.com/.../1442283中的主题中的相同说明。 当我将 GPIO42控制传递给 CLA1时、GPIO42输出始终为低电平(0)、但无法切换。
    //输入 GPIO 配置:
    EALLOW;
    GpioCtrlRegs.GPBGMUX1.bit.GPIO42=0;
    GpioCtrlRegs.GPBDIR.bit.GPIO42 = 1;// 1 =输出、0 =输入
    GpioDataRegs.GPBSET.BIO42 = 1;//初始设置为高电平
    GpioCtrlRegs.GPBPUD.bit.GPIO42 = 0;// 0=启用上拉、1=禁用上拉
    GpioCtrlRegs.GPBCSEL2.bit.GPIO42 = 1;// 0=CPU1、1=CPU1.CLA1、2=CPU2、3=CPU2.CLA
    EDIS;

    //在 CLA ISR 中:
    (三
    * CLA 任务8
    *
    *此任务初始化 Cla1Task1中使用的变量。
    (三
    MDEBUGSTOP

    MMOVI16. MAR0、#1 ;将 MAR0加载为1
    MNOP ;
    MNOP ;
    MNOP ;

    MMOV16 @ GpioDataRegs.GPBCLEAR.bit.GPIO42、MAR0 ;
    MMOV16 μ@ M.CLA1_DEBUG、MAR0 ;

    MSTOP ;结束任务
    MNOP ;用于管道保护
    MNOP ;用于管道保护
    MNOP ;用于管道保护
    任务8_end:
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    在此代码(MMOV16 @ GpioDataRegs.GPBCLEAR.BIPOTIO42、MAR0;)中,您将写入清零寄存器,该寄存器将在 GPIO 引脚上驱动“0”。 对吧? 您在哪里将该位设置为"1"。 或者我在这里缺少什么?

    Vivek Singh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉造成混淆。 实际上、我尝试在设置/清除/切换之间切换、并且没有差异、但在 GPIO42中始终处于低电平。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否在 CLA 中的指令上设置一个断点来查看它是否一致存在?

    BTW、很遗憾、我无法访问 F28075处理器、因此我无法尝试您的代码。
    我可能会看到我的 controlSTICK 是否可以使用该代码-但是、今天可能不能使用...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试在 CLA 中的指令上设置断点、并确认 GpioDataRegs.GPBTOGGLE.bit.GPIO42未按我的预期进行设置、而同一 CLA 例程中的其他代码正在正常运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    经过几次试验后终于解决了这个问题! 我将 CLA 例程中的汇编代码修改为:
    MMOVI32. MR1、#0x00000400 ;为 GPIO42设置位10
    MMOV32 @ GpioDataRegs.GPBTOGGLE.ALL、MR1 ;切换 GPIO42
    现在、我可以按预期在 CLA 例程中切换 GPIO42。 看起来 CLA 汇编代码中的位操作在编译器中不受支持。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果不支持、这实际上并不会被标记为编译器错误、这是很奇怪的!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为它的地址不正确。 我相信、如果您用"C"语言编写相同的代码、它应该可以正常工作。

    除非您编写一些时间关键型代码、否则我建议您用 C 语言而不是汇编语言编写代码。

    此致、

    Vivek Singh