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.

[参考译文] 编译器/OMAP-L138:GPIO PinMux 未生成

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663964/compiler-omap-l138-gpio-pinmux-not-building

器件型号:OMAP-L138
Thread 中讨论的其他器件:OMAPL138

工具/软件:TI C/C++编译器

大家好、

我一直在尝试在 J-15上使用两个 GPIO 引脚(GPIO8-10和 GPIO8-12)、但在尝试设置它时遇到了困难。 我一直遵循此链接中的代码: https://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/115/t/495930 

我假设我缺少一些 include 文件、并且包含的文件会使 delay 函数导致错误、但我仍然会得到错误代码100234-D 和10010。 如果有任何帮助、我将不胜感激;我将使用这些 GPIO 引脚向 Arduino 器件发送高电平或低电平信号。 我已经尝试使用 SPI、但无法使其正常工作、因此我切换到了 GPIO 引脚。 我使用的是 CCS v 5。

谢谢、

Kathleen

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的项目可能未定义处理器#defed。 另一篇文章中的示例看起来是基于 StarterWare 的。 某些 StarterWare 头文件需要#define 来正确提取特定于处理器的代码。 您似乎正在使用 LCDKL138。

    建议从现有示例 ARM 或 DSP 开始:

    OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omappl138\lcdkOMAPL138\GPIO
    OMAPL138_StarterWare_1_10_04_01\build\C674x\cgt_ccs\omappl138\lcdkOMAPL138\GPIO

    来源位于此处:
    OMAPL138_StarterWare_1_10_04_01\examples\lcdkOMAPL138\GPIO\gpioCardDetect.c

    gpioCardDetect.c 的 LCDK 版本并不能真正检测卡插入。 EVM 版本可实现这一点。 LCDK 版本仅使 LED4闪烁。 他们从未更改过名称或文档。

    理论上、您应该能够将代码从该另一个线程复制到示例中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Kathleen、

    如果 Norman 的帖子未解决您的问题、请提供您的控制台日志、以便我们进一步调试您收到的错误代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Norman、

    我设法使代码正常工作、它针对 GPIO8_10运行;但是我对 PinMux 设置有点困惑(例如、如果我想为 GPIO8_12设置一个引脚多路复用器)。 我正在努力解决的代码部分是:

    用于选择 GP8[10]引脚的/*引脚复用位掩码。 *
    #define PINMUX18_GPIO8_10_ENABLE (SYSCFG_PINMUX18_PINMUX18_31_28_GPIO8_10 <<\
    SYSCFG_PINMUX18_PINMUX18_31_28_SHIFT)


    空 GPIOBank8引脚10引脚多路复用设置(空)

    unsigned int savePinmux = 0;

    /*
    **清除上下文中的位并保留其他位值
    **在 PINMUX10寄存器中。
    *
    savePinmux =(HWREG (SOC_SYSCFG_0_regs + SYSCFG0_PINMUX (18))和
    μ~(SYSCFG_PINMUX18_PINMUX18_31_28));

    /*在 PINMUX10寄存器中设置与 GP8[10]相对应的引脚。*/
    HWREG (SOC_SYSCFG_0_regs + SYSCFG0_PINMUX (18)=
    (PINMUX18_GPIO8_10_ENABLE | savePinmux);



    特别是 、开头的#define 会使我感到困惑;如果我要将其应用于 GPIO8_12、唯一的更改是否是使10变为12?

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

    StarterWare 在配置 PINMUX 方面比较巧妙。 实现方式取决于用户手动将 PINMUX 寄存器编号和组与多个已定义的常量进行对齐。

    请查看"hw_syscfg0_OMAPL138.h"的"hw_syscfg0_C6748"中的"hw_syscfg0_c6748"。 搜索"GPIO8_12"。 定义是

    #define SYSCFG_PINMUX18_PINMUX18_23_20_GPIO8_12 (0x00000008u)

    请注意 pinmux 寄存器编号"18"和位字段编号"23_20"。 在 SYSCFG0_PINMUX (nn)、SYSCFG_PINMUXnn_PINMUXnn_xx_xx 掩码和 SYSCFG_PINMUXnn_PINMUXnn_xx_xx_SHIFT 宏中使用这些宏。 使用 StarterWare 代码作为模式:

    用于选择 GP8[12]引脚的/*引脚复用位掩码。 */
    #define PINMUX18_GPIO8_12_ENABLE (SYSCFG_PINMUX18_PINMUX18_23_20_GPIO8_12 <<\
    SYSCFG_PINMUX18_PINMUX18_23_20_SHIFT)
    
    void GPIOBank8Pin12PinMuxSetup (void)
    {
    unsigned int savePinmux = 0;
    
    /*
    **清除上下文中的位并保留其他位值
    **在 PINMUX18寄存器中。
    *
    savePinmux =(HWREG (SOC_SYSCFG_0_regs + SYSCFG0_PINMUX (18))和
    μ~(SYSCFG_PINMUX18_PINMUX18_23_20));
    
    /*在 PINMUX18寄存器中设置与 GP8[12]相对应的引脚。*/
    HWREG (SOC_SYSCFG_0_regs + SYSCFG0_PINMUX (18)=
    (PINMUX18_GPIO8_12_ENABLE | savePinmux);
    
    }
    
    

    毫无疑问、有更好的方法来实现 PINMUX 库、这种方法会更强大、更易于使用。 但它是免费的、您可以得到所支付的。