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.

[参考译文] TM4C1294NCPDT:与 Xbee 连接

Guru**** 2442090 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/586052/tm4c1294ncpdt-interfacing-with-xbee

器件型号:TM4C1294NCPDT

Howdy。

我们将使用定制 PCB 与 XBee Pro S3B 模块连接。

有一个监控站正在将数据从自己的 XBee 发送到我们的。

当我们将 XBee 插入其插座(如 SparkFun 分线板)、然后接通电源时、UART 1 RX 引脚保持在600-650mV 左右、我们无法接收数据。

当我们为 Xbee 供电并将 UART1 RX 某位置为未连接状态、然后连接引脚时、它将处于高电平空闲状态、我们可以接收数据。  

我们怀疑 UART 1 RX 线在启动期间被 Tiva 拉低、Xbee 模块无法控制它。  

我们能够在刚刚好的 XBE 中与 XBE 进行通信。 (监控站-> XCTU、XCTU ->监控站、XCTU ->定制 PCB、定制 PCB -> XCTU、监控站->定制 PCB 等)。  

我们只需在器件上电时断开 UART1 RX (DOUT)连接、等待、然后重新连接该线路、然后才能接收数据。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我正确地理解 XBee 模块和 TM4C 位于不同的电源上、并且 XBee 模块在 TM4C 之前已通电。 驱动未供电设备的输入引脚是不好的主意。 您可能会遇到一个闩锁情况、使 TM4C UART RX 引脚保持低电平。 (我假设您没有在 UART 上使用任何接口驱动程序、而是将 XBee TX 引脚连接到 TM4C RX 引脚。) 您可以尝试通过在 XBee TX 和 TM4C RX 之间添加一个电阻器(可能是2.2K)来限制 XBee TX 引脚的电流。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bob、

    我们有一个向 TM4C 和 XBee 模块输出3.3V 电压的开关稳压器。 我们还尝试在将 XBee 保持在睡眠状态的同时为 UC 供电、然后将其唤醒、同样的问题也会发生。

    我们将使用电阻器进行尝试、并报告发生了什么情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果两个电源都由同一个电源供电、则可能还有其他情况发生。 该电阻器可能有助于识别它是什么。 让我知道发生了什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bob、

    电阻器不起作用。 我们尝试了几个不同的值、但它仍然只在模块通电后 DOUT/RX 线路跳过时起作用。

    我们尝试的另一件事是将 TM4C TX/RX 线路初始化为 GPIO、并将其写入高电平状态、然后将其配置为 UART 引脚。 一旦它们被配置为 UART 引脚、引脚便会空闲回到650mV 左右、并且再次没有接收到数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    电阻器两侧的电压是相同的、还是 XBee 侧的高电平、TM4C 侧的低电平?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="David Moore53"]...initialize 将 TM4C TX/RX 线路作为 GPIO 并将其写入高电平状态[/quot]

    这是否会确保"输出到输出"冲突- Xbee 和 TM4X 驱动其(现在已连接)输出?   这不能是好的。  (即数据争用中心!)

    您是否考虑过 TM4C UART_RX 线路上的上拉电阻器?

    在第二个 MCU 板上重复此测试也是明智之举...

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

    因此、我们尝试了不同的上拉电阻器(强和弱)、同一问题仍然存在。 我们将代码重置为仅初始化 UART1模块、然后将引脚设置为 UART。

    //将端口 C 启用为 UART1并将 GPIOC 指定为 UART
    //此 UART 用于连接到 XBee 模块
    SysCtlPeripheralEnable (SYSCTL_Periph_UART1);
    SysCtlPeripheralEnable (SYSCTL_Periph_UART1);SysCtlPeripheralEnable (SYSCTL_Periph_GPIO4
    
    
    
    );将 SysCtlGPIO5引脚配置为 GPIO_4引脚1引脚和 GPIO4引脚 GP4;
    
    将 GPIO_4引脚配置为 GPIO4引脚1引脚
    GPIOPinTypeUART (GPIO_PORTQ_BASE、GPIO_PIN_4);
    GPIOPinTypeUART (GPIO_PORTB_BASE、 GPIO_PIN_1);
    
    //设置 UART 参数、9600时钟速度、8位消息长度、1个停止位、无奇偶校验
    UARTConfigSetExpClk (UART1_base、g_ui32SysClock、9600、
    (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
    
    IntMasterEnable ();//启用主中断
    IntEnable (INT_UART1);//将中断设置为 UART1
    UARTIntEnable (UART1_base、UART_INT_RX | UART_INT_RTN);//将中断设置为 UART1引脚和 UART1引脚 

    在探测硬件后、我们看到 UART1模块初始化后、TX 线变为高电平。 RX 线一旦配置为 UART 引脚(持续6.3ms)、就会跳高、然后降至~650mV 电平。 XBee 通电后、我们将 DOUT 线路跳至 UART1 RX 线路、然后我们可以接收数据。  

    我们将 RX 引脚设置为中断因子吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    注释已关闭、但代码为您提供了正确的想法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 PB1 (UART1 TX)引脚行为中没有发现任何问题。 在配置引脚之前、它处于高阻抗状态、未连接任何拉电阻。 配置为 UART1 TX 后、它被驱动为高电平。

    问题在于 PQ4 (UART1 RX)的行为。 即使配置为 UART1 RX、默认情况下也没有上拉电阻、电平应由 XBee 的 TX 引脚决定。 在连接 XBee TX 之前引脚处于低电平这一事实也没有问题。

    当您在加电期间将 XBee TX 引脚连接到 PQ4时、您是否遇到问题? 这种连接保持低电平、对吧? 为了验证 TM4C1294上的 PQ4是否将 XBee TX 引脚保持在低电平、当您在它们之间有电阻器时、电阻器的 XBee TX 引脚侧是否处于高电平? 如果不是、那么将连接拉低的不是 PQ4、而是 XBee TX 引脚无法驱动为高电平。

    很抱歉、如果您已经确定了答案、但过去我发现、如果我没有仔细记录为何我选择排除调试故障树上的分支、我会浪费大量时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="David Moore53"]注释已关闭,但代码为您提供了正确的想法。

    我(曾)即将"浪费"这一点!

    当该引脚配置为"UART_RX"时、我将会解释此类引脚如何(显然)"下拉"外部器件的输出。   并且-(仅限)在加电时执行该操作。

    "上电"时、大多数 MCU GPIO 引脚将默认为输入-可能(有意)防止此类不良行为。  现在-正如您的注释所说(匆忙-待处理)、您代码的(其他)区域(简单)可能会将"UART_RX"配置为输出?  (公司/我经常发现这是因为客户开发仓促所致)

    请您准备第二块 MCU 板-重复此测试会很有用-最好具有"全新的 MCU 板!"  您提到的" MCU 和 Xbee 输出-设置(高电平)-测试期间"会使 MCU 和 Xbee 引脚(两者都有)可疑!  现在、这些引脚(可能)在"特别处理"时似乎可以工作(您仅在两个器件都加电后才能连接)。  然而-这些引脚(一个或两个)可能已损坏-并且不能支持"唤醒"所造成的"额外电流瞬变"。  理想的测试将采用(两者都采用)新的 Xbee 和新的 MCU 板-避免两个输出的任何设置均为"high!"

    您是否对两个电路板之间的(公共)接地连接进行了正面测量?  (最近?)   

    您是否能够在采用任何外部连接的情况下采用4K7-10K 上拉 R (至3V3)@ UART_RX -然后加电-?  在加电时以及在加电之后对该引脚进行示波器捕获将非常有用。  根据您的写作、我们无法判断、"无 Xbee "连接(即上拉)是否也会在上电后不久产生非法电压电平(~0.6V)。  这样一项试验--和报告--将是有说服力的。

    出于完整性考虑、最好在"上电"期间监控3V3到(Xbee 和您的 MCU 板)。  您还应该监控(通过示波器) Xbee 的"启动"输出信号-未连接到您的电路板!  它是否会过冲或下冲?  (即超过3V3或低于地面) 未报告任何此类详细信息-但在这种异常情况下、"一切可疑"。

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

    正确、当 XBee TX 引脚在加电期间连接到 PQ4时、会发生问题。 同时纠正连接保持低电平的问题。

    当电阻位于之间时、XBee 侧在~880mV 时稍高。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CB1、

    事后看来、同时开发七个或八个其他代码片段并不是最明智的选择。 无论如何、UART1 RX 及其 GPIO (PQ4)都不会在代码中的其他位置进行配置。 我们尝试将 PQ4初始化为 GPIO、并在最初将其驱动为高电平、但如前所述、这不起作用。

    我们已经尝试过第二个 PCB、同样的问题仍然存在。 使用 Launchpad 时也会发生同样的情况。 我们已尝试将 XBee 模块重置为出厂设置、并使用一些配置进行了播放、但没有效果。 我们有两个不同的 XBee 模块(2.4GHz 版本)、它们在 DOUT/RX 连接闲置时以900mV 的电压执行相同的操作。

    PCB 和 XBee 模块共用一个公共接地层、但是接地已经跳转到试验电路板、只是尝试新的东西、没有变化。

    上拉电阻器。 首先、我们通过一个4.7K 电阻器将 RX 连接到3.3、它会按预期升高。 然后、我们将3.3跳至 XBee、RX 跳至 XBee 的 DOUT 引脚、并打开电源、线路被拉高但保持高电平。 我们可以在数据进入的示波器上捕获光、但它不是稳定的数据流。

    示波器显示不存在或下冲。


    TLDR:
    上拉电阻器可将问题改善为有时工作的情况。 启动时、线路被拉至高电平、但数据间歇性传入。 我们以前尝试过这种方法时、必须使用过强的上拉值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    David、
    这非常重要。 如果在2.2K 欧姆范围内只有220mV、则 XBee 仅提供100uA 电流。 这只是一个非常弱的上拉电阻。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、

    XBee 引脚17连接到什么? 如果它保持悬空、它可能会导致 XBee 使用 SPI 而不是 UART。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    PCB 上的引脚17悬空、但通过 XCTU 配置、我们将其从内部上拉。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可能值得检查该引脚上的电平。 内部上拉可能非常弱。 您看到的症状与定义 XBee 串行接口的引脚上的不确定电平一致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要为您的 MCU 板提供"干净的运行状况清单"、您不能将您的(有问题) UART 路由到驻留在同一 MCU 板上的第二个 UART、或第二个 UART?  (我建议在每个 UART_RX 引脚上出现上拉 Rs。)

    按照该程序成功将(几乎)完全转移到 Xbee。

    当不使用电平转换器(RS232/485等)时、我们发现(大多数) UART_RX 引脚"需要"上拉电阻器或从上拉电阻器的存在中显著受益。(我们注意到、在 Cortex M4 MCU 上、来自多家供应商(包括此供应商)...)

    请注意、我们已请求您"范围监控" Xbee 的输出-不连接到您的 MCU 板。  您遵守并报告无过冲/下冲-但未说明输出电平是否适合 MCU! (即在3V3附近/较高、在接地附近/较低。)   这证明了 Xbee 正逐渐成为"犯罪方"的突出地位...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有关于此问题的任何更新?

    XBee 也有类似的问题。 如果我在未连接 DOUT 引脚的情况下打开 XBee 电源、然后将其连接到目标器件的 Rx 引脚、该引脚将拉高至3.3V、通信工作正常。 但是、如果在 DOUT 连接到目标器件时为 XBee 上电、它会一直浮动~1.6V、通信不起作用。 注意:当未连接任何器件时、目标器件 Rx 引脚在1.2V 时浮动、此外、我不知道目标器件的内部电路、我所拥有的只是具有3.3V-TTL UART 接口(3.3V、Rx、Tx、GND)的线束。

    此外、我在 DOT/Rx 线路上尝试了10k 和4.7K 上拉电阻器、使电压高达~1.5V。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不、此帖子没有任何更新、但我有一个问题。 TM4C 是否与 XBee 板同时供电? 如果 XBee 先上电、然后尝试在 TM4C 上电之前驱动 UART Rx 引脚、这可能会导致软闩锁问题。