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.

[参考译文] AFE881H1:UART 通信问题

Guru**** 2379800 points
Other Parts Discussed in Thread: AFE881H1, TLVH431, TLV431B
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1473906/afe881h1-uart-communication-problem

器件型号:AFE881H1
主题中讨论的其他器件: TLVH431TLV431B

工具与软件:

您好!

我使用 AFE881h1进行 HART 通信。

我想使用 UBM 模式、但我遇到问题。

我尝试使用 UBM 模式与 AFE881H1进行通信。 我的目标是在发送中断命令后发送0x16 0x00 0x01、然后读回、从而使寄存器模式位为1。 我想我遵守 UART 字符结构。 我要在逻辑分析仪中向您展示我发送的消息的图像。 Uartout 持续显示类似2.7V 的值。 这是否正常? 它在我发送读取命令时没有改变。 我连续读取一个类似0x55的值。

请帮助我解决这个问题。

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

    Yusuf

    我不确定您的 UARTOUT 为什么会重复发送信号。 但是、您应该以这种方式看到上用于将0x01写入寄存器0x16的事务:  

    写入寄存器之后、我会立即执行中断和寄存器读取操作。 复制此事务、检查时间、并告诉我这样是否有帮助。

    Joseph Wu

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

    您好!
    我尝试过,但我没有得到一个回应,即使我发送相同的数据。 Uartout 数据仍然出现错误。 你知道为什么会发生这种情况吗?
    我将会保留逻辑分析仪的图形。

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

    您的分析仪设置是否如此?


    我将通过该函数发送11位低电平。 是这样吗?

    Send_UART_Break (void)

    while ((huart2.instance->ISR USART_ISR_TXE))

    huart2.instance->RQR |= USART_RQR_SBKRQ

    }

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

    我无法理解 UARTOUT 输出。 我在为卡供电后看到数据。
    我的硬件连接如下:
    UART TX - UART 输入
    UART RX - UARTOUT
    警报- 3.3V
    CS - 3.3V
    复位- 3.3V
    REF_EN–3.3V
    IOVDD - 3.3V
    RTS - 3.3V
    SDI–GND
    SCLK - GND
    CD -空闲
    CLK_OUT - IDLE
    VDD - GND

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

    Yusuf

    我不确定问题是什么。 我认为首先需要调试的是 UARTOUT 线路。 它不应该持续广播信号。 设备当时是否接收 HART 信号?

    您是否有电路板原理图? 我想了解器件的连接方式以及设置方法。

    Joseph Wu

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

    Joseph Wu,

    我添加了我使用的电路图。 我删除了 R55、C51、R54、R50、因为我认为它可能来自 HART 信号输入。 但是、我无法更改 UARTOUT 输出。 我将添加从 UARTOUT 输出接收到的数据。 我不知道还有什么原因。

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

    Yusuf


    首次给器件通电时、UARTOUT 是否处于发送数据活动状态? 它是否在上电后的特定时间后启动?

    当我查看输出时、我觉得输出实际上是以19200波特输出并重复发送 FF。 这并非 AFE881H1所能提供的功能、仅提供1200波特和9600波特 UART 选项。


    Joseph Wu

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

    感谢你的帮助。 我发现了问题。 我已经将 VREFIO 引脚直接连接到 GND。 当我放置100nf 时、它得到了解决。 这是进入 IC 的电压崩溃。 现在我获取了该数据。 与您的数据唯一的区别是、有0x89数据而不是0x88。 区别是什么? 此外、为什么 RX_INF 引脚通过680pf 连接到 GND? 如果它未连接、会发生什么情况? 我无法理解这一点。 可以帮帮我吗?

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

    此外、在示例应用中、TLVH431会发烫。 这是否正常? 电路中的3.3V 是否与我的板上的3.3V 相同? 我将它连接到了我制造的3.3V。 这是不是错了? 如果我要使用我制作的3.3V 电压(而不是外部电源)为电路板供电、如何更改此值?

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

    Yusuf


    我很高兴您能够发现从 VREF 到接地的短路。 希望您发现的问题会更容易一些。

    我认为从0x88到0x89的第一个字节的差异不是一个严重的问题。 这是 STATUS 字节的 LSB。 我想它是 UBM 模式下的 R/IRQ 位、显示在第67页的"Status Bits"部分。


    Joseph Wu

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

    Yusuf


    进入 TLVH431的电流量不应足以使器件发热。 事实上、整个电路板的加电电流在开始时应该恰好为3mA。 您要在环路中测量多大的电流? 您能否展示包含电阻器值和您使用的确切元件的 BOM?

    RX_INF 引脚应通过680pF 电容器接地。 该电容用作 HART 信号内部滤波的一部分。 我不确定如果直接接地会发生什么情况。 目前、在将该器件设置为发送器的一部分时似乎还存在其他问题、因此我将首先调试原理图。 从环路向电路板中输入了多大的电流以及 TLVH431的电压是多少? 3.6V 齐纳二极管两端的电压是多少? Q5处的基极电压是多少


    Joseph Wu

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

    Yusuf

    也不应将/ALARM 直接连接到3.3V 电源。 该引脚是一个开漏连接、用作低电平有效输出。 这意味着应该是一个上拉至3.3V 电源的电阻器。 我将使用10kΩ-100kΩ 电阻器。

    Joseph Wu

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

    再次感谢您的帮助。
    我通过100K 将 ALARM 引脚连接到3.3V。
    尽管启动电路需要3.3V 电压、但我看到它会产生1.66V 电压。当我在图像 I throw 中移除 Q2晶体管时、我看到二极管的值为3.9V。 (我没有3.6V 齐纳二极管、我输入3.9v)。 当我再次激活 Q2时、我看到这里的值是2.25V。 Q2应该形成3.3V。
    ​​与示例应用程序的值不同:
    我使用的是39或39k、而不是40.2或40.2k。
    VOUT 输出10k + 82k = 92k。 电路中的采样值为10万。
    499K 470K 而非模式输出。
    3.6V 齐纳二极管、而不是3.9V 齐纳二极管。
    而不是电阻
    560欧姆而不是510欧姆。 这里的折叠率约为57、而不是60。
    我使用27万个电阻、而不是249k。
    这些是电路中的差异。 我认为这些差异只会改变周期电流、但是可以优化微小的差异。 因为我没有特定的值。
    我有一个我无法预见的硬件错误。

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

    我忘了提及。 我通过680pf 连接了 RX_INF 引脚。

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

    Yusuf

    电路板正确上电取决于器件选择。 特别是3.6V 齐纳二极管是一个重要的选择。 在 AFE881H1数据表中、有一节介绍了启动电路。 这是所示的原理图:

    齐纳二极管必须足够高、才能导通 Q1、然后通过 TLV431B 拉电流。 但是、在 TLV431B 上升到3.3V 后、齐纳二极管必须足够低、以便 Q1在 Q2接管负载时关断。 数据表中指出:

    同样、齐纳二极管选择很重要。 通常、齐纳二极管将是高拐点二极管、该二极管会快速导通并达到适当的电压。

    我还会查看是否有电路板上的其他器件需要额外的电流。  

    Joseph Wu

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

    在启动电路没能成功之后、我把电路改成了这样。  我还更改了齐纳二极管。 我逐个安装了一个3.6V 齐纳二极管。 但是、3.3V 电压始终保持在1.6V 至1.7V 之间。 Q1保持在导通状态、我无法修复它。

    3.3V 来自我所在级的稳压器。 这就是我具有固定3.3V 的原因。 我如何控制输出电流?

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

    此外、加电后、DAC 输出是否默认为0.3V?

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

    我将0x0000作为 DAC 代码发送。 然后、当我在 Vout 和地之间测量时、会看到一个大约1V 的值。 当我发送 FF 时、我看到的是3.3V。 我不应该在默认模式下看到0.3V 和2.5V 吗? 或者、我不应该将"视觉"作为参考? 注意:RX_INF 引脚通过680pF 连接到"visual"

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

    Yusuf


    当器件启动时、DAC 输出应该为0.3V。 即使器件出现错误情况、有一个内部电路应该输出非常接近0.3V 的电压。 设置 DAC 编码时、输出应该从代码0x0000线性变为0xFFFF、从0.3V 到2.5V。

    我还要检查的其他事项之一是测量 VREFIO 电压。 您的原理图显示该器件已启用内部基准、因此基准电压应达到1.25V。

    我会注意到、启动电流仍然无法正常工作。 由于该部分没有正确偏置、因此通过该部分消耗的电流可能更多、并且环路电流可能大于预期值。


    Joseph Wu

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

    感谢你的帮助。 我使 DAC 部分正常工作。 我开始进行 HART 通信。 我将 RTS 引脚连接到3.3V 作为硬件。 我无法在处理器上使用任何引脚。 如果不使用 RTS 引脚、我就无法使用 HART? 如果我从 MODEM_CFG 启用 HART 足够了吗?

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

    Yusuf

    /RTS 用于启用调制器输出。 通常使用该选项来发送 HART 传输。 但是、您可以使用对 MODEM_CFG 寄存器的 SPI 写入将 RTS 位设置为1。 这也将打开用于 HART 传输的调制器。

    Joseph Wu

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

    尊敬的 Jsoeph:

    我尝试这样进行通信。

    1 -从 FIFO_CFG 设置级别4
    发送数据0x0F 0x00 0xF4
    2-启用 HART。
    发送的数据0x0E 0x00 0x48
    通过 SPI 将 RTS 位设置为低电平
    发送的数据0x0E 0x00 0x49
    将数据写入 FIFO_U2H
    发送数据0x15 0x01 0x99
    重复尽可能多的数据数量
    通过 SPI 将 RTS 位设置为高电平
    发送的数据0x0E 0x00 0x48

    我正在用示波器观察 Mod Out 输出。 我看不到频率变化、我看到频率为1200Hz 的信号。

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

    更新
    它发送数据一次。 但是、它会继续以1200kHz 的固定频率发送信号。 我发送数据0x0E 0x00 0x40并禁用 HART、但它仍以1200kHz 的频率发送信号。

    此外、由于您解决了上述问题、因此我选择了"接受"答案选项。 我是否需要就这些问题展开新的对话?

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

    Yusuf


    我认为您在上一篇文章中列出的一般顺序是正确的、但我看到了一个问题。 对于 U2H 级别集、您写入了:0x0F 0x00 0xF4。 它认为这应该是0x0F 0x00 0xF1。 对于 U2H 级别、32个寄存器只有四个位、并且该级别表示为 MSB。 当 U2H 电平的位是0b0100时、这表示电平8。 此外、当电平大于该值时、IRQ 会跳闸。 当设置为8时、IRQ 在9时跳闸。

    在这种情况下、我想你会将这些位设置为0b0001、这表示一级为2、当 FIFO 中有3个字节时、触发。


    Joseph Wu

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

    Joseph、
    又是 HeLa。 我将数据发送至设置 FIFO 水平
    0x0F 0x00 0xFF。 然后我启用 HART。
    我将 RTS 位设置为1。 然后、我创建一个32字节的数组。 我按照以下格式发送每个字节。

    对于(uint8_t i = 0;i < len;++I){
    uint16_t fifo_u2h = data[i];//添加数据位
    fifo_u2h ||(CalculateOddParity (data[i])<< 8);
    //写入 FIFO 缓冲区
    AFE881H1_WriteRegister (AFE881H1_FIFO_U2H_WR_OFFSET、fifo_u2h);
    }
    循环向 U2H_WR 发送格式为0x15 0x1 0xFF 的数据。 (所有数据设为0xFF)
    此循环完成后、我将 RTS 位设置为0。
    当我用示波器查看 Mod Out 输出时、我看到以下信号。



    似乎发送了32个寄存器、但当我详细检查数据时、我看不到任何有意义的数据。 我正在与您分享我收到的数据。 原因是什么?


    此外、最后2个寄存器与其他寄存器不同。 您知道原因吗?
    感谢你的帮助。

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

    Yusuf

    我不确定你们所有的传输都在做什么、但有些内容看起来是正确的。 例如、这是上一篇文章中的图表之一:

    在这里、您可以看到器件启动了调制器、然后发送起始位0。 之后、数据看起来是 FF、大概后跟奇偶校验位和停止位、两者恰好为1。

    在前一张图中、我不确定最后两个字节是多少、但除了数据为0F 而不是 FF 外、它看起来与传输类似。  

    我认为、如果更改传输中的数据、您将能够看到更多的信号变化。 也许发送0xF7、您将看到最后一个1、奇校验0和停止位1。  

    最后、我想向您发送一封邮件、那就是有一份有关 HART 基础知识的应用手册。 其中可能包含一些信息、可帮助您回顾信号。

    https://www.ti.com/lit/pdf/SLAAEH0

    Joseph Wu

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

    尊敬的 Joseph:

    谢谢你。 我已经获得了可以发送正确数据的示波器图像。 我已经验证了数据。 . 下面是我添加的示波器图像的图像、环路-、LOOP+和2.2nF 输出。 我看到我发送的信号也来自 RX_IN 引脚。 我通过提供5V 电压来使用直流电源为其馈电。 同时、我看到我自己的数据返回到 RX_IN 引脚。 电容器输出略有不同。 我观察到正确的信号吗?
    注:黄色  --> 2.2nF 输出
         橙色-->回路
         绿色 --> LOOP+

    我的第二个问题是、如果我将两个 afe881h1连接在一起、并且要从一个进行传输、然后从另一个进行接收、我该怎么做? 如果我将​​两个电路的 LOOP+值和 LOOP-值连接在一起、该方法是否正确?

    我还将添加电路的照片。

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

    Yusuf

    通过快速看一下 HART 信号、我会发现该信号是正确的。 似乎是在通过环路发送电流、您大概有一个用于将正弦波转换为电压的电阻。  

    通常情况下、您不能将两个 AFE881H1器件连接在一起进行相互通信。 该器件是支持 HART 的现场变送器的中心。 在这种情况下、HART 控制器将与发送器通信。 此外、您可以通过环路将 AFE881H1器件视为电流控制器、通常情况下、环路上不会有多个电流控制。

    不过、您可以将器件设置为多点模式、以便这些器件并联在一起。 它的设置方式如下:

    如果您没有 HART 控制器、但确实能够通过 AFE881H1器件发送命令、则可以使用相同的检测电阻 进行两个器件的通信。 这将测试一个器件上的传输、并测试另一个器件上的接收。

    在现场器件上测试 HART 时、另一个可能有用的应用手册是:

    http://www.ti.com/lit/pdf/slaaeh8

    Joseph Wu