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.

[参考译文] Starterware/STARTERWARE-Sitara:GPIO 输出引脚和引脚多路复用器存在问题

Guru**** 2563960 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/614060/starterware-starterware-sitara-problem-with-gpio-output-pins-and-pin-mux

器件型号:STARTERWARE-Sitara

工具/软件:Starterware

大家好、

我在尝试控制 GPIO 引脚时遇到一些困难...

//
#define GPIOP8_04 (GPIO_1_7) //引脚:P8_04、mode7:GPIO1[7]
#define PINGP1 (7)
#define GPIOP8_07 (GPIO_2_7) //引脚:P8_07、mode7:GPIO2[7]
#define PINGP1_2 (7)
#define GPIOP8_22 (GPIO_2_22) //引脚:P8_26、mode7:GPIO2[22]
#define PINP2 (22)
//以下代码用于切换上面定义的引脚
//
l3l4_driver_init();
L344_clock_domain_open ();
GPIO1ModuleClkConfig();
GPIO2ModuleClkConfig();
GpioModuleEnable (SOC_GPIO_1_regs);
GpioModuleEnable (SOC_GPIO_2_regs);
//引脚多路复用设置
// P804
GpioPinMuxSetup (GPIOP8_04、7);
GPIODirModeSet (SOC_GPIO_1_regs、PINGP1、GPIO_DIR_OUTPUT);
// P807
GpioPinMuxSetup (GPIOP8_07、7);
GPIODirModeSet (SOC_GPIO_2_regs、PINGP1_2、GPIO_DIR_OUTPUT);
// P822
GpioPinMuxSetup (GPIOP8_22、7);
GPIODirModeSet (SOC_GPIO_2_regs、PINGP2、GPIO_DIR_OUTPUT);
//
while (1)
{
GPIOPinWrite (SOC_GPIO_1_regs、GPIOP8_04、GPIO_PIN_HIGH);
延迟(0xAFFFF);
GPIOPinWrite (SOC_GPIO_1_regs、GPIOP8_04、GPIO_PIN_LOW);
延迟(0xAFFFF);
//
GPIOPinWrite (SOC_GPIO_2_regs、PINGP1_2、GPIO_PIN_HIGH);
延迟(0xAFFFF);
GPIOPinWrite (SOC_GPIO_2_regs、PINGP1_2、GPIO_PIN_LOW);
延迟(0xAFFFF);
//
GPIOPinWrite (SOC_GPIO_2_regs、GPIOP8_22、GPIO_PIN_HIGH);
延迟(0xAFFFF);
GPIOPinWrite (SOC_GPIO_2_regs、GPIOP8_22、GPIO_PIN_LOW);
延迟(0xAFFFF);
//
} 

此代码的问题在于、我连接到 BeagleBone White 的 LED 不会亮起、off...instead 上似乎只有一个 LED (第二个 LED P8_07)中的光线很暗、 这种情况也会持续亮起...现在我使用的电阻为470欧姆、我很确定不会太大、就像我使用 P9接头(3.3V 输出)中的引脚4 (而不是 GPIO 引脚)连接 LED 一样、LED 亮起也很正常。
可以有人帮助我吗? 引脚复用是否未正确完成? 我还会尝试其他什么?

提前感谢

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

    一种更新...我注意到、我通过 USB 将 BeagleBone 连接到主机 PC 的那一刻、在加载程序之前、我在上一篇文章中发布的 P8_07中的 LED 会产生非常微弱的光。
    我还认为、我的问题主要集中在 GPIO1实例中不包含的 GPIO 引脚。
    有什么建议吗?

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

    您好、

    我对这个问题感到非常疯狂...我甚至使用了 SD 卡和 Ubuntu 的图像、以便通过 Linux 打开(血腥的)并将(至少目前) Starterware 和裸金属放在一边...
    结果让我感到很害怕...昏暗的光线仍然亮起、而在/sys/class/gpio/gpio71下使用 cat 方向后 、我得到的结果是...
    当然、我将其更改为输出并回显1的值、但没有任何改变...

    我提醒您,我将讨论插头 P8中的引脚7,即 GPIO2[7]………

    真的、发生了什么?有什么想法?

    谢谢

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

    嗯、

    我注意到、在我的初始帖子中、我错误地向 GPIOPinWrite 和 GPIOPinMuxSetup 函数提供了 GPIO 引脚的物理地址、而不是引脚编号。

    尽管已经纠正了这一点、但不幸的是、我仍然有同样的问题...

    我甚至尝试仅打开一个 LED (P8_27、即 GPIO2[22])、我在分步调试期间遇到的情况是、代码无法成功超过 GpioPinMuxSetup function..instead、它会将我驱动到以下代码段、但 Handler.S 除外:

    AbortHandler:
    UndefInstHandler:
    ;
    ;禁用所有中断
    ;
    夫人 R0、CPSR ;从 CPSR 读取
    OR R0、r0、#0xC0 ;清除 IRQ 和 FIQ 位
    MSR CPSR_c、r0 ;写入 CPSR
    添加 R14、PC、#0 ;存储返回地址
    LDR PC、_CPUAbortHandler ;转到 C 处理程序
    ;
    如果从 C 处理程序返回则转到无限循环
    ;
    loop0:
    B 环0 

    正常情况下、它会在无限循环中挂起...

    如果有任何帮助、我将不胜感激、因为我还想对 PWM 引脚应用引脚多路复用、似乎我面临着同样的问题...

    再次感谢

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

    大家好、

    我很抱歉,但是我把一切都搞砸了。我完全搞错了 GPIO 的名称和引脚号,还有 GpioPinMuxSetup 函数实际上需要作为它的第一个参数,GPIO 的名称,而不是我在上一篇文章中错误地声称的地址。

    无论如何、在 GPIO 名称、引脚编号和物理地址之间的差异方面多加注意肯定会带来回报、因为现在一切都顺利...

    很抱歉出现问题