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.

[参考译文] J721EXSOMXEVM:J721E SOM 的 GESI 板 GPIO 无法从 R5 处理器正常工作

Guru**** 2416110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1531737/j721exsomxevm-gesi-board-gpio-from-j721e-som-not-working-from-r5-processor

器件型号:J721EXSOMXEVM

工具/软件:

我们有一个 J721EXSOMEVM 板连接到大型载板。 我们还连接了 GESI 扩展板。  我们正在尝试使用 GESI 板上提供的一个已定义的 GPIO 来进行简单的 GPIO 测试。 我们无法看到任何 GPIO 输出。 我们在 MCU2_1 处理器上运行 FreeRTOS。 以下是我们所做的工作。

我们使用的 GPIO 是可从接头 J16-LHS 引脚 9 访问的 BoosterPack GPIO2(主 GPIO0 127)(GESI 扩展用户 guid spruit1b、表 4-7)。  我们将一个数字探头和一个模拟探头连接到该引脚、以查看是否可以将 GPIO 控制为输出。

J721E_pinmux_data.c — 将 GPIO 127 多路复用至 SOM 引脚/焊盘

static pinmuxPerCfg_t gGpio0PinCfg[] =
{
    /* MySYSTEM1 -> GPIO0_0 -> AC18 */
    {
        PIN_EXTINTN, PIN_MODE(7) | \
        ((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
    },
    /* MyGPIO0 -> GPIO0_97 -> Y28 */
    {
        PIN_RGMII6_TX_CTL, PIN_MODE(7) | \
        ((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
    },
    /* MyGPIO0 -> GPIO0_98 -> V23 */
    {
        PIN_RGMII6_RX_CTL, PIN_MODE(7) | \
        ((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
    },
    /* MyGPIO0 -> GPIO0_117 -> W4 */
    {
        PIN_SPI1_CS1, PIN_MODE(7) | \
        ((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
    },
    /* MyGPIO0 -> GPIO0_127 -> AC4 */
    {
        PIN_UART1_CTSN, PIN_MODE(7) | \
        ((PIN_PULL_DISABLE ) & (~PIN_PULL_DIRECTION | ~PIN_INPUT_ENABLE))
    },
    {PINMUX_END}
};
GPIO 配置 GPIO_board.c 和 GPIO_Board.h
// UART1_CTSN
#define BP_GPIO2_J16_PIN9  (127U)

#define GPIO_SPI_RCV_TASK       (0U)
#define MAX_GPIOS_USED_IN_APP   (1U)

GPIO_PinConfig gpioPinConfigs[] =
{
    GPIO_DEVICE_CONFIG(GPIO_SPI_RCV_TASK, BP_GPIO2_J16_PIN9) |
    GPIO_CFG_OUTPUT,
};

* GPIO Driver call back functions */
GPIO_CallbackFxn gpioCallbackFunctions[] =
{
    NULL,
};
然后登录 main.cpp
完成这些步骤后、我们无法看到被监控的 GPIO 输出发生任何变化。 我们已经多次使用较小的 TDA4VM-SK 板完成此操作、但很惊讶、我们无法将其正常工作。 是否似乎缺少一些内容或是否有另一个需要使用 GESI 板的步骤?

/* GPIO stuff */
uint32_t gpioBaseAddr[MAX_GPIOS_USED_IN_APP] =
{
   CSL_GPIO0_BASE,
};

uint32_t gpioPinNums[MAX_GPIOS_USED_IN_APP] =
{
   BP_GPIO2_J16_PIN9,
};

int main(void)
{ 
....
Board_pinmuxGetCfg(&boardPinmuxCfg);
   boardPinmuxCfg.autoCfg = BOARD_PINMUX_AUTO;
   boardPinmuxCfg.gesiExp = BOARD_PINMUX_GESI_ICSSG;
   Board_pinmuxSetCfg(&boardPinmuxCfg);

   boardConfig = BOARD_INIT_PINMUX_CONFIG |
      BOARD_INIT_MODULE_CLOCK |
      BOARD_INIT_UART_STDIO |
      BOARD_INIT_MODULE_CLOCK_MAIN;
   boardStatus = Board_init(boardConfig);
   
   Board_initGPIO( );
   GPIO_init( );

   // Set GPIO
   GPIO_write(GPIO_SPI_RCV_TASK, true);

我还查看了寄存器以确保它们看起来设置正确。 请参阅下面的、了解设置该位后的 GPIO 设置和控制寄存器。

设置位后的 GPIO 控制寄存器。

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

    尊敬的 Randy:

    我相信您的引脚多路复用可能有一个拼写错误。

    您是否可以测试以下内容:

    /* MyGPIO0 -> GPIO0_127 -> AC4 */
    {
        PIN_UART1_CTSN, PIN_MODE(7) | \
        ((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
    },

    谢谢、

    Neehar

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

    是的、这不是一个拼写错误。 这就是我们试图使它发挥作用的原因。 我们尝试了它的原始方式(默认为作为输入),但它仍然不起作用。 “PIN_INPUT_ENABLE"只“只使焊盘能够接收输入、这不是我们无论如何都会尝试执行的操作。

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

    尊敬的 Randy:

    让我检查一下、然后返回给您。

    谢谢、

    Neehar

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

    所以我们找出了自己的问题。 对于使用 GESI 板的任何 TI 员工而言、可能都是显而易见的。  

    GESI 板上的许多信号与 GESI 板本身或载板上的其他信号进行多路复用/切换。 还有其他信号连接到 IO 扩展器芯片、必须通过 I2C 接口进行控制、才能设置或接收它们上的 GPIO 类型信号。 它们 由一个 Linux 驱动程序/应用程序进行控制、而我们没有运行这个应用程序、因为我们在 R5 处理器上使用 JTAG。 因此、许多 GPIO 实际上并未连接到 GESI 板。

    我们必须找到其他未进行多路复用的信号、这些信号到达 GESI 板上的可访问位置。 下面列出了我们找到的一些内容以供其他参考。

    SPI_CS3 - Booster Pack 接头 J5 引脚 6

    MCAN5_RX - J13 引脚 2

    MCAN5_TX - J13 引脚 1

    MCAN6_RX - J11 引脚 2