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.

[参考译文] LAUNCHXL-F280049C:UART 似乎未发送数据

Guru**** 2999690 points

Other Parts Discussed in Thread: AMC3330, SYSCONFIG

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1661987/launchxl-f280049c-uart-seems-not-sending-data

器件型号: LAUNCHXL-F280049C
主题中讨论的其他器件: AMC3330、 SysConfig

几周前我刚买了一个 Launchxl-FF280049c。  

我成功完成了燃油油位传感器测试。 我基本上使用了两个示例程序:adc_ex1_soc_software.c 和 sci_ex4_echobode.c 我将 UART 的代码从 sci 示例复制到 ADC 示例。 我使用最终代码从 ADCINA0 获取 ADC 值并发送到 Raspberry PI 计算机。 我获得了正确的燃油油位数据。

然后、我开始测量电压传感器、使用 AMC3330 作为隔离、输出(差分)被馈送到 ADCINA0 和 ADCINA1。 通过 XDS 调试、我可以看到数据值、但无法从 GPIO 引脚看到数据(我将 GPIO28 和 GPIO29 用于 UART)。 当我将前几个字节转换为整数时,我的 Raspberry PI 总是显示“27, 117,91“。  

 当将 GPIO 引脚用于输出时、我将 S6 开关从 UART 切换到 BP。  

我相信我做了一些错误的事情,但我不能告诉。 任何人都能指出我的错地方以及如何让 UART 发送数据。  

谢谢。  

 

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

    尊敬的 Yubin:

    有多个开关控制电路板上的各种 GPIO 和 UART 引脚、请参阅用户指南中的开关表、具体取决于您所需的功能。

    S6 应该是唯一需要更改的开关、因此请确保所有代码修改都不会更改用于 UART 通信的 GPIO。 此外、您可能需要使用原始燃油油位项目验证 GPIO 28/29 引脚上是否存在 UART 传输数据。

    另请注意、电路板顶部的引脚编号对应于引脚编号、而不是 GPIO 编号

    此致、

    彼得

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

    谢谢 Peter。  

    奇怪的是、一周前我测试了燃油油位传感器时、它工作正常。 我有一个视频来说明它是否正常工作。 但当我测试电压传感器时、它不起作用。 现在我尝试重复燃油油位传感器测试、我遇到了同样的问题:只能看到“27,117、91“等数据 因此、我的 Raspberry PI 在 launchxl-FF280049c 上没有从 UART 引脚接收到任何数据。  

               Lauchxl-FF280049c 引脚 44 (GPIO 29)----- > Raspberry PI 的针脚 10.

               Lauchxl-FF280049c 引脚 43 (GPIO 28)----- > Raspberry Pi 的引脚 8

               GND 引脚 62             ----- > Raspberry PI 的引脚 6。  

    我始终首先运行 XDS 调试探针、可以看到不同燃油液位或电压下的数据(A0 和 A1 上的 ADC 值)、但当我选择使用实部引脚时、没有数据输出。  

    看来 GPIO29 无法将数据发送出去、我不知道如何使其再次工作。 即使卡坏了,我试图知道是什么原因的问题。  

    是否有其他方法可以测试 GPIO 29(引脚 44)是否具有数据输出? 在调试探针中、Sci_ex4_echback 似乎很糟糕、但是否有办法使用 GPIO29 和 GPIO 28 引脚运行回读或回显?

    编辑:下面是我将数据发送到 Raspberry Pi 的代码

    MyData[0]= 0;
    MyData[1]=(myADC0Result0 >> 8)& 0xFF;//获取高 8 位
    MyData[2]= myADC0Result0 & 0xFF;//获取低 8 位
    SCI_writeCharArray (SCIA_BASE、(uint16_t*) MyData、3);

    另一个编辑:我只是有一个新的想法,我将做一个测试,并让你知道结果以后。  

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

    尊敬的 Yubin:

    代码是否是以前使用的代码的直接副本? 还是手动更新代码以将其恢复? 也许新增加的东西仍然存在,这是导致这种情况。

    如果它是之前代码的直接副本、那么听起来可能是器件上发生了损坏。 您能否验证电压传感器在器件运行期间没有超过 VDDA、或者您是否有某种方法来钳制输出? 在 MCU 上超过 VDDA 可能会损坏器件并导致不可预测的行为。

    此外、要测试的另一件事是调整 UART 的 GPIO、因为 GPIO35/37 也可用于 UART 到 XDS 调试器。 但请注意、您将需要使用 cJTAG 进行连接(因为 TDI/TDO 由 GPIO35/37 共享)

    此致、

    彼得

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

    谢谢 Peter。  

    现在我记得了。 我确实使用了 sci_ex4_echoback 中的代码、但修改了引脚设置代码。 问题是我的 CCS 崩溃了、我不记得我更改了什么。 我更改了 GPIO 28 和 29 的引脚类型或引脚模式。 我会试着弄清楚。  

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

    尊敬的 Yubin:

    如果您可以提供您正在使用的示例代码、这也将有助于进行调试

    此致、

    彼得

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

    我认为问题是调试探针工作正常、我可以看到 UART 数据。 但是、当我将 S6 开关切换到 BP 时、引脚 44 (GPIO 29) 没有输出。  

    我读取该程序后、可能会使用引脚设置进行调试、而不是用于实际引脚。 我不记得以前使用过什么设置配置、  

    这是一个简单的代码。 工程设置与 sci_ex4_echoback exmaple 相同。  

    #include “driverlib.h“

    #include “device.h“

    #include

    uint16_t 循环计数器= 0;

    void main (void)

    {

      无符号字符*mydata;

      设备初始化 ();

      device_initGPIO();

      //

      // GPIO28 是 SCI Rx 引脚。

      //

      GPIO_setControllerCore (DEVICE_GPIO_PIN_SCIRXDA、GPIO_CORE_CPU1);

      GPIO_setPinConfig (DEVICE_GPIO_CFG_SCIRXDA);

      GPIO_setDirectionMode (DEVICE_GPIO_PIN_SCIRXDA、GPIO_DIR_MODE_IN);

      GPIO_setPadConfig (DEVICE_GPIO_PIN_SCIRXDA、GPIO_PIN_TYPE_STD);

      GPIO_setQualificationMode (DEVICE_GPIO_PIN_SCIRXDA、GPIO_QUAL_ASYNC);

      //

      // GPIO29 是 SCI Tx 引脚。

      //

      GPIO_setControllerCore (DEVICE_GPIO_PIN_SCITXDA、GPIO_CORE_CPU1);

      GPIO_setPinConfig (DEVICE_GPIO_CFG_SCITXDA);

      GPIO_setDirectionMode (DEVICE_GPIO_PIN_SCITXDA、GPIO_DIR_MODE_OUT);

      GPIO_setPadConfig (DEVICE_GPIO_PIN_SCITXDA、GPIO_PIN_TYPE_STD);

      GPIO_setQualificationMode (DEVICE_GPIO_PIN_SCITXDA、GPIO_QUAL_ASYNC);

      interrupt_initModule();

      Interrupt_initVectorTable();

      Sci_performSoftwareReset (SCIA_BASE);

      SCI_setConfig (SCIA_BASE、DEVICE_LSPCLK_FREQ、115200、(SCI_CONFIG_WLEN_8 |

                                SCI_CONFIG_STOP_ONE |

                                SCI_CONFIG_PAR_NONE));

      sci_resetChannels (SCIA_BASE);

      SCI_resetRxFIFO (SCIA_BASE);

      SCI_resetTxFIFO (SCIA_BASE);

      SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_TXFF | SCI_INT_RXFF);

      SCI_enableFIFO (SCIA_BASE);

      SCI_enableModule (SCIA_BASE);

      Sci_performSoftwareReset (SCIA_BASE);

     

      for(;;)

      {

         MyData =“0123456789\0“;

         SCI_writeCharArray (SCIA_BASE、(uint16_t*) MyData、11);

        循环计数器++;

        DEVICE_DELAY_US (500000);

      }

    }

    在调试探针中、我可以看到 0123456789、但当 TX(引脚 44)与 Raspberry PI 的 UART RX(引脚 10)连接时、将不会读取。 LogicProbe 未显示来自针脚 44 的信号。  

    我是否需要在 setPin/PadConfig 中使用不同的名称、以便数据将发送到 GPIO29(引脚 44)。 我尝试使用 29 或 GPIO_29_SCITXDA 等、但没有工作。  

    谢谢。  

    编辑:由于 Launchpad 使用 16 位、我假设我的 Raspberry PI 中的接收器将接收两个 8 位、一个 16 位、所以我预计会看到像 0 1 0 2 0 3 0 4… 这是正确的吗?

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

    问题已解决。  

    我认为、之前使用了 GPIO_PIN_TYPE_PULLUP、但后来忘记了它、 GPIO_PIN_TYPE_STD 是错误的。  

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

    尊敬的 Yubin:

    很高兴听到这个问题得到解决。 我认为、您还应参考 SysConfig 工具、该工具有助于生成外设配置的代码。由于配置通过 SysConfig 选项抽象化、因此更容易捕获其中的一些拼写错误

    此致、

    彼得