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.

[参考译文] TMS320F28379D:为 SCI Tx 或 Rx 操作配置 GPIO 引脚时、我忽略了哪个阶跃?

Guru**** 2482225 points
Other Parts Discussed in Thread: LAUNCHXL-F28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1431551/tms320f28379d-when-configuring-a-gpio-pin-for-sci-tx-or-rx-operation-is-there-a-step-i-am-overlooking

器件型号:LAUNCHXL-F28379D
Thread 中讨论的其他器件: C2000WARE

工具与软件:

我正在进行从 F28335 DSP 移植到 F28379D DSP 的项目固件更新。 我们为 SCI GPIO Init 使用了 C2000ware API、即函数 GPIO_setMasterCore、GPIO_setPinConfig、GPIO_setPadConfig 和 GPIO_setQualification Mode。 在新处理器上、SCI 和 CAN 通信已经运行了很长时间、包括在专有硬件以及我们用于调试通信的 LaunchXL-F28379D 板上。

在过去几个月中、一个新团队成员提出了用于初始化 GPIO 引脚的修订算法。 它将 GPIO 引脚多路复用分配与其他 GPIO 选项结合在一起-输入与输出、上拉或禁用上拉、异步与 SYNC、INIT 状态高电平或低电平等 除了 SCIB GPIO 引脚被分配给 GPIO18和 GPIO19在 LaunchXL-F28379D 板上进行测试时、新方案似乎适用于一切、但当使用 GPIO137和 GPIO138时、SCIB 连接到新的专有板上时、新方案似乎可以正常工作。 我一直在调试新的 GPIO 初始化方案、以尝试找出在使用新的初始化方案时 GPIO19无法接收的原因。

固件应用程序的所有其余部分保持不变。 只有新的 GPIO 初始化方法是不同的。 我已经通过 CCS 调试器验证 SYSCLK 和 LSPCLK 没有变化、200 MHz 和波特率都设置正确。 GPIO_18_SCITXDB 的 pinmux 位字段分配 为 0x00080402U、 GPIO_19_SCIRXDB 的 pinmux 位字段分配为 0x00080602U。 对于正在工作和未工作的固件版本、GPIO18和 GPIO19的 GPIO 控制寄存器内容如下:

                  GPIO18 GPIO19       

GPAQSEL2:   0x11 0x11             

GPAMUX2:     0x10 0x10             

GPADIR:         0x1 0x0               

GPAPUD:       0x1         0x0

两个 GPIO 引脚的所有其他控制寄存器条目都是0。

对于这些寄存器设置、旧的 GPIO 初始化可在115200波特、8位、无奇偶校验和一个停止位的条件下实现稳定的通信。 使用新方法进行初始化时、SCIB 无法接收数据。

在使用新的 GPIO 初始化方法执行固件时、我忽略了是否有 GPIO 配置组件、这可能会导致接收失败?

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

    器件型号:LAUNCHXL-F28379D

    工具与软件:

    我有一个与"LAUNCHXL-F28379D:两个 Launchxl-F28379d"之间的 SCI 通信主题中描述的问题类似的问题。 我正在为专有目标板构建一个应用、但正在使用 LaunchXLF2839D 板调试 SCI 通信。

    我有两个版本的固件。 一种方法使用已经使用两年的 GPIO 初始化。 一位新的团队成员已推广了用于 GPIO 引脚初始化的新架构。 奇怪的是、当 SCIB 连接到专有电路板上的 GPIO137和 GPIO138时、新的引脚初始化方法仍然有效。 但当我更改 SCIB 引脚分配、使用 GPIO18和 GPIO19在 LaunchXL 板上进行测试时、该指示失败。

    在引用的线程中、Allison Nguyen 建议尝试 driverlib 示例项目 sci_ex1_loopback。 我已将该项目导入到本地工作区中。 然后、我制作了一份该工程文件夹的副本、并编辑了工程文件夹名称和工程文件、以将新工程的名称更改为 scib_ex1_loopback。 到目前为止一切顺利。

    文件夹 CPU1_RAM\syscfg 中的 board.h 是指定要使用的 SCI 端口的唯一源文件。 我制作了一份 board.h 副本、将其编辑为使用 SCIB、现在我无法更改 scib 项目来使用新的 board.h 文件。 无法从编译中排除原始文件 board.h。 我尝试了将新文件复制到 CPU1_RAM\syscfg 中以替换原始 board.h 似乎工作正常。 但当我检查源文件的内容时、它已恢复到定义 SCIA 的原始版本。

    那么、批准的 TI 修改该 driverlib 项目的本地副本以使用 SCIB 而不是 SCIA 的方法是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Thomas:
    加入你们的两个线程、因为我相信我们可以协同讨论这些问题。
    为了澄清、您是否已在使用以下方法、但对 GPIO18和 GPIO19使用? (以下 GPIO 初始化代码片段来自我们的 C2000Ware SCI 示例):
        //
        // GPIO28 is the SCI Rx pin.
        //
        GPIO_setMasterCore(28, GPIO_CORE_CPU1);
        GPIO_setPinConfig(GPIO_28_SCIRXDA);
        GPIO_setDirectionMode(28, GPIO_DIR_MODE_IN);
        GPIO_setPadConfig(28, GPIO_PIN_TYPE_STD);
        GPIO_setQualificationMode(28, GPIO_QUAL_ASYNC);

        //
        // GPIO29 is the SCI Tx pin.
        //
        GPIO_setMasterCore(29, GPIO_CORE_CPU1);
        GPIO_setPinConfig(GPIO_29_SCITXDA);
        GPIO_setDirectionMode(29, GPIO_DIR_MODE_OUT);
        GPIO_setPadConfig(29, GPIO_PIN_TYPE_STD);
        GPIO_setQualificationMode(29, GPIO_QUAL_ASYNC);
    该方法适用于 SCIA GPIO、但不适用于 SCIB GPIO? 您是否能够在回送模式下进行测试? 您是否仔细检查了引脚并查看了所有活动?
    另一件事是请确保将 LaunchPad _LAUNCHXL_F28379D 的预定义添加到项目属性中、这一点非常重要、以便在 InitSysCtrl ()中正确定义您的 PLL 设置。  
    此致、
    Allison
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Allison -感谢您的帮助。 适用于 LaunchXL 板上 GPIO 18和适用于 SCIB 的 GPIO19的方法是 C200ware API、您在回复中已经显示了该方法。 顾问推荐的方法基本上将这5个 API 调用的内容合并到一个函数中。 结果应该是相同的。 这两种方法后 GPIO 寄存器的内容是相同的、正如我在原始问题中列出的那样。 然而、新办法未能得到接受。 我想知道在为 SCI Tx 和 Rx 配置 GPIO 引脚的过程中我可能会忽略什么、这将解释行为差异。

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

    您好、Thomas:

    要对此进行调试、我将通过两种情况运行该程序:(1)使用正常(正常) GPIO 设置函数运行、(2)使用组合函数运行。 在这两种情况下、单步执行/进入这些函数、并在调用/之后检查 GPIO 寄存器值、以查看它们是否产生相同/正确的寄存器设置。 如果它们不正确、则会提示我们没有正确写入寄存器。 如果您能做到、请告诉我。  

    此致、

    Allison

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

    Allison -在执行初始化的过程中、我已经检查了寄存器内容、并且在程序完全初始化后检查了 GPIO 寄存器内容。  在这两种情况下、GPIO18和 GPIO19的寄存器内容在工作版本(使用 C2000ware API)和修改版本的程序中是相同的、该程序使用由五个 C2000ware 函数执行的操作组合的单一函数。 寄存器内容显示在我的原始消息中。

    我要指出的是、两个版本的程序都使用相同的输入数据来源。 协议参数为115200的波特率、8个数据位、无奇偶校验、1个停止位。  

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

    您好、Thomas:

    感谢您的澄清。 您是否仍然能够探测 TX 并查看 SCI 活动?  您能否确认即使使用组合 API、内部环回模式仍然可以正常工作? 或者您是说即使内部环回也无法正常工作吗? 您能否确认 GPAGMUX2设置也正确?

    此致、

    Allison

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

    Allison -示例程序 sci_ex1_loopback 在修改为使用 SCIB 时会起作用。 但这并不奇怪、因为在初始化早期为所有引脚设置了默认的"安全"GPIO 引脚映射值后、程序中的任何内容都不会接触 GPIO 引脚以针对 SCI 端口进行配置。 我在技术参考手册中没有找到可以将 GPAMUX2的位设置转换到引脚多路复用器选项上的位置、但 SCIRXDB 的 pinmap.h 值为0x00080602、我在第一条消息中给出的位模式是0x10、这是2、所以它似乎是正确的。 当使用任一 组 GPIO 初始化代码时、也会得到相同的结果。(工作的代码和失败的代码)。 由于上述原因、我尚未尝试将单功能 GPIO 初始化调整到回送程序中、该回送在执行时不对 GPIO 端口执行任何操作。  

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

    您好!

    假设您的 GPA G MUX2和 GPAMUX2寄存器均设置正确(以及原始帖子中列出的其他寄存器)、我不知道您为什么在发送和接收 SCI GPIO 方面会遇到问题。

    我们的 GPIO 专家已离职、但下周还会再来、因此如果需要、我可以转发。 不过接下来我会在第二 天左右尝试使用相同的寄存器设置对此进行测试。

    此致、

    Allison

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

    您好!

    我刚刚使用 GPIO 18和 GPIO19运行了 SCI 示例1环 回工程(关闭环回模式并物理跳接引脚)、而不会出现发送或接收问题。 同样、如果 GPIO 寄存器匹配、则应正确配置 GPIO。 当你将配置组合在一起时(错误情况)、你是一次写入整个 GPIO 寄存器/所有位字段吗? 还是只写入这些特定的 GPIO 位? 您在程序中写入这些代码的时间是否与典型时间不同(在其他外设初始化之前与之后)?

    以下是使用18和19上的示例的 GPIO 寄存器值

    此致、

    Allison

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

    Allison -感谢您在这个问题上投入的时间和工作。 Re:您的问题、1)在配置我们的应用中使用的这些 GPIO 引脚之前、我们执行常规的安全外设初始化步骤。 对于 GPIO 引脚、我们首先使用示例程序 sci_ex1_loopback 中使用的标准调用、即将所有引脚配置为安全设置作为输入。 2) 2)当我们在每个控制寄存器中设置应用的引脚配置设置时、我们使用与掩码来清除正在配置的引脚的位并保留控制寄存器上所有其他引脚的设置、然后或在中仅更改在该通道上配置的引脚的位。  

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

    您好、Thomas:

    Allison 目前不在办公室、因此请预计她的回复会有延迟。

    此致、

    Delaney

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

    您好、Thomas:

    对于延迟延长、我们深表歉意。 您是否仍面临此问题? 我也与一位同事讨论了这个问题、好像大家在 GPIO137/138和 GPIO18/19之间切换了。 您是否检查过 GPIO137/138是否已重置为默认 GPIO? 您可以仔细检查这些 GPIO 寄存器吗? 非正常情况下的 SCI 状态寄存器是什么? 它们是否指示 出现了错误?

    此致、

    Allison

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

    Allison -正如我在最初的邮件中所解释的、当目标板是 LaunchXL-F28379D 时使用 GPIO18/19、因为该板上的 SCIB 便是这样布线的。 最终目标是由我的客户开发的专有电路板、它将 SCIB 连接至 GPIO137/138。 编译器指令指定每个构建配置应使用的目标板。 该专有电路板的 GPIO 将被忽略、因为该问题可以在 LaunchXL 电路板上表现出来

    我上次对此问题进行测试已经有一段时间了。 在此期间、我们使用 C2000ware 初始化 API。 我可以根据 SCI 示例程序开发出一个测试项目、将新的 GPIO init 函数替换为示例代码、以尝试重新生成问题。 如果问题再次出现、我可以将程序发送给您、但必须通过私人消息。 我必须在项目的闲置时间内找到开发该示例代码的时间、但闲置时间是很少见的、因此我可能需要一段时间。 如果您 认为会有所帮助、我就可以这样做。  

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

    您好、Thomas:

    Allison 目前不在办公室,直到节假日结束。 请预计响应会有延迟。 感谢您的耐心。

    此致、

    Aishwarya.

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

    您好、Thomas:

    感谢您的坚持。 是的、如果您能够提供项目的简化版块来隔离此部分内容、请随时在 E2E 上与我好友沟通并通过私人消息发送。

    此致、

    Allison

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

    Allison -非常感谢。 我将向您介绍该优惠。 必须在时间允许的情况下创建示例应用程序、因此请耐心等待。  

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

    您好、Thomas:  

    听起来不错。 是的、它可以帮助我了解修改后的 GPIO 初始化中具体正在发生什么。 我将等待您的朋友的请求。

    此致、

    Allison