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.

[参考译文] CC2640R2F:了解从 GPIO 功能到 DIO 端口的链路

Guru**** 2541380 points
Other Parts Discussed in Thread: CC2640, CC2640R2F, TMP116

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/821095/cc2640r2f-understanding-the-link-from-gpio-functions-to-dio-ports

器件型号:CC2640R2F
主题中讨论的其他器件:CC2640TMP116

大家好、

我正在尝试了解如何建立从 GPIO_READ/WRITE 函数中使用的引脚名称到芯片上实际引脚编号(DIO_x)的链路。

实际上、我开发了一个小型应用、使用 DIO_2来驱动蓝色 LED、使用 DIO_3来驱动绿色 LED、使用 DIO_4 o 来驱动红色 LED。

然后、我将此应用移到另一个电路板上、其中的引脚排列与蓝色和红色 LED 反相。

因此、我认为 CC2640R2DK_5XD.h 文件中的更改应该足以交换这些分配、但它不会更改任何内容。

此处包含了我的设置、定义和调用的摘要。

我想我的软件中有一个很大的错误,但仍然找不到什么

有人能不能让我解释什么是错误的,我应该对这种访问进行编程?

作为补充资料和问题:

-如果换用 board.h 文件,则它正常,但为什么不在 CC2640R2DK_5XD.h 中更改 IOD_xx?

- GPIO_READ/WRITE 函数的 GPIO_INDEX 参数的定义是什么?  

-我猜有引脚编号到引脚名称的链接或索引,但看不出它是如何工作的(文档有点糟糕,令人困惑!)

e2e.ti.com/.../GPIO-Calls.pdf

感谢你的任何帮助。

请。

Patrick

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

    Patrick、

    您是否已阅读 CC2640 BLE 软件开发人员指南中的第6.2节-第6.4节

    这涵盖了所需的更改。 由于您使用的是定制板、因此必须创建定制板文件。  

    有关此主题的更多信息、 请单击此处

    BR、

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

    您好、Seong、

    感谢你的答复。

    事实上、我已经查看过这个文档、并且非常了解我必须在板级配置文件中做的定义。

    但是,我仍然有点困惑:

    -在文档示例中,“PIN_setOutputValue()”函数用于激活 PIN...

    -但在我的软件(基于 UARTecho 示例项目)中,我使用 GPIO_write()函数...

    所以,我不明白这两个功能的区别是什么:

    -PIN 功能使用直接的 PIN 驱动程序与主板的 I/O 连接?

    -GPIO 功能只是来自用户软件的更高级别的调用,并重定向至定义的 PIN?

    为了更准确地回答我的问题以及有关我所附文件的问题:

    -软件如何建立从我指定给"GPIO_write()"的名称"Board_GPIO_LED_B"到"IOID_2"引脚的链接?

    -"Board_GPIO_LED_B"在"Board.h"文件中定义为"CC2640R2DK_5XD GPIO_LED1"。。

    -此"CC2640R2DK_5xD GPIO_LED1"本身在"CC2640R2DK_5XD 文件中定义为"枚举"、因此其值为0x01...

    因此、根据我的理解、"GPIO_write()"函数将输出值设置为其"index"参数0x01...

    -我的问题:

    -从这个"index"参数传递到"GPIO_write()"到实际访问的引脚编号的链接是什么?

    -它是否是由"PIN_init()函数定义的"BoardGpioInitTable"中的索引?

    ——还有别的吗?

    再次感谢您对这一点的详细解释!

    此致

    Patrick

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

    尊敬的 Patrick:

    关于枚举的使用、它适用于 TI 参考板设计。 如果您使用的是定制板、我建议您不要使用它。

    引用 Launchpad 时、IO 定义 为 CC2640R2_LAUNCHXL.h

    /*数字 IO */
    #define CC2640R2_LAUNCHXL_DIO0 IOID_0
    #define CC2640R2_LAUNCHXL_DIO1_RFSW IOID_1
    #define CC2640R2_LAUNCHXL_DIO12 IOID_12

     CC2640R2_LAUNCHXL.h 包含在 CC2640R2_LAUNCHXL.c 中、您可以在 应用中设置使用的 IO、即 BoardGpioInitTable[]。 UART、I2C 等其他外设由 RTOS 管理。 调用 UART_open()时的示例 UART 会将这些引脚设置为 UART。

     CC2640R2_LAUNCHXL.h 也包含在 Board.h 中、它主要由主应用程序使用。 在主应用中、您可以使用 Board.h 在 LED 引脚上定义初始化 IO 的示例。

    PIN_Config ledPinTable[]={
    BOARD_PIN_LED0 | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull | PIN_DRVSTR_MAX、
    BOARD_PIN_LED1 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、
    PIN_TERMINATE
    };

    然后使用 PIN_setOutputValue()来调开/关 LED。

    -kel

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

    Patrick、

    对此进行了任何更新?  

    BR、

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

    Markel、您好!

    感谢您的回复,很抱歉我的更新太晚了!

    现在可以使用 PIN_setOutputValue()函数。

    好的、GPIO_READ()等函数的运行情况如何。 ?

    此致。

    Paick

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

    尊敬的 Patrick:

    使用、 PIN_getInputValue (PIN_ID pinId);、

    有关 PIN_setOutputValue()和  PIN_getInputValue()的示例用法,请参见,引脚中断示例程序。

    -kel

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

    很抱歉 Markel,我的回答不清楚!

    实际上、我的所有问题都涉及 GPIO_Read 和 GPIO_Write 函数。

    这些 函数与 PIN_setOutputValue()和 PIN_getInputValue()函数之间有何区别?

    在我的应用程序中、我直接使用 GPIO_Read() AD GPIO_Write()函数、并且不知道如何将引脚索引中的链接作为参数传递给这些函数、以及芯片的物理引脚编号。

    此致

    Patrick

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

    Patrick、

    如 Markel 所述,请参阅 CC2640 SDK 中的引脚中断示例,了解 PIN_setOutputValue()和  PIN_getInputValue()的用法。 尝试突出显示其中一个函数、然后按 F3打开其声明。

    GPIO_ReadGPIO_Write 是 SimpleLink SDK 驱动程序的函数。 这些是从 GPIO 头文件 GPIO.h 中定义的

    BR、

    成  

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

    你好

    好的、对于这个答案、我了解 GPIO 和引脚功能是不同的、我也了解它们的全局使用。

    但我的主要问题仍然是:

    -GPIO 和 PIN 驱动程序的功能有何区别? 我的意思是,我们为什么要使用一个而不是另一个?

    -如何使来自引脚索引的链路作为参数传递给 GPIO 读写功能和芯片的物理引脚编号?

    再次感谢您的回答!

    祝你度过美好的一天!

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

    尊敬的 Patrick:

    GPIO 函数使用该枚举、该枚举是用于 TI 参考板示例 TI CC2640R2F Launchpad 的 IO 的列表或索引。 请参阅 GPIOC26XX.c、了解 GPIO 函数如何使用该枚举。"C:\ti\simplelink_cc2640r2_sdk_3_10_00_15\source\ti\drivers\gpio"

    /*!
    *@def CC2640R2_LAUNCHXL_GPIOName
    *@GPIO 名称的简要枚举
    *
    typedef 枚举 CC2640R2_LAUNCHXL_GPIOName{
    CC2640R2_LAUNCHXL_GPIO_S1 = 0、
    CC2640R2_LAUNCHXL_GPIO_S2、
    CC2640R2_LAUNCHXL_SPI_MASTER_READY、
    CC2640R2_LAUNCHXL_SPI_SLAVE_READY、
    CC2640R2_LAUNCHXL_GPIO_LED_GREEN、
    CC2640R2_LAUNCHXL_GPIO_LED_RED、
    CC2640R2_LAUNCHXL_GPIO_TMP116_EN、
    CC2640R2_LAUNCHXL_GPIO_SPI_FLASH_CS、
    CC2640R2_LAUNCHXL_SDSPI_CS、
    CC2640R2_LAUNCHXL_GPIO_LCD_CS、
    CC2640R2_LAUNCHXL_GPIO_LCD_POWER、
    CC2640R2_LAUNCHXL_GPIO_LCD_ENABLE、
    CC2640R2_LAUNCHXL_GPIOCOUNT
    }CC2640R2_LAUNCHXL_GPIOName;

    您的最终产品很可能不会使用 TI Launchpad。 因此、对于大多数 BLE 应用、使用 PIN 功能。 示例引脚功能用法是在 Project Zero 示例程序中使用、该程序使用引脚功能来打开 LED 并检测开关按压。

    使用 PIN 函数、您可以使 IO 句柄对所有 C 文件全局可见、使您能够在不同 C 文件中使用 PIN 函数。

    因此、建议使用引脚功能。

    -kel