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.

[参考译文] DAC8740H:CAN't 将数据流从 UART_IN 发送到 MOD_OUT、然后发送到 PA 总线

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1338745/dac8740h-can-t-transmit-data-stream-from-uart_in-to-mod_out-and-then-to-pa-bus

器件型号:DAC8740H
主题中讨论的其他器件: Profibus

我现在正在使用 DAC8740H 实现 压力传感器上的 PROFIBUS PA 应用。

现在、我可以 正确地从 PROFIBUS PA 总线接收帧、我可以在 MCU 中对其进行检查、因为 UART_OUT 连接到 MCU 的 RX 引脚。

但我无法通过 DAC8740H UART_IN 将帧传输到 PROFIBUS PA 总线。

详细说明:

1.我的原理图基于 TI E2E 网站提供的 DAC8740H_PAFF.SchDoc。  

2.为避免 PROFIBUS PA 主设备产生意外干扰,我只将 PA+和 PA-连接到直流电源的30V 和 GND。

3. 在 RST (引脚5)设置为高电平之前、由 MCU 将双工引脚设置为低电平。 所以我们使用了半双工!

4. DAC8740H 发送 FIFO 的深度是多少? 16个字节或其他?我可以首先将16个字节连续传输到 DAC8740H 的 UART_IN 一次吗?  

5.我看到在数据表中、  用户数据流之前需要开始定界符、开始 定界符必须是0x2D、或者有一些规则要定义?

6. 我首先将帧流"EA 8B 00 AE   FF FF FF FF  2D 10 00  02 00  35 30"传输到 DAC8740H 的 UART_IN、

其中

初始化 字节序列=  EA 8B 00 AE、这意味着  D2M_LEVEL = 01、 Jabber 已禁用。
但只是在传输几个字节时、CD 会变为高电平、并且在使用 示波器进行监视时、 我不会在 DAC8740H 的 MOD_OUT 引脚上看到任何输出。
橙线为 CD、蓝线为 UART_IN。
我还看到对于 UART_RTS 有错误操作。
橙色线为 UART_IN、蓝色线为 UART_RTS。
请帮助我并在可能存在问题的地方提供一些建议。
非常感谢。
上海快快电子科技有限公司
抓紧时间

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

    您好!

    您对原理图是否进行了任何更改?

    4. DAC8740H 发送 FIFO 的深度是多少? 16个字节或其他?我可以首先将16个字节连续传输到 DAC8740H 的 UART_IN 一次吗?  

    [/报价]

    是的、发送 FIFO 的深度为16字节。 您应该也能传输16字节相对连续的数据。

    让我向设计师核实您的其余问题、我会马上回复您。

    谢谢。
    卢卡斯

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

    您好!

    您能否尝试将 Jabber 超时设置为一个非常高的值(0xFF)、然后看看您是否得到类似的 NO 输出?

    谢谢。
    卢卡斯

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

    我不需要 Jabber 功能。

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

    是的、我做了一些改变:我将 MOD_OUT 耦合到 PA+。 TI 评估。 电路板将 MOD_OUT 耦合到 PA-。

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

    您好!

    我希望将值更改为非零值对发送输出有任何影响。

    谢谢。
    卢卡斯

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

    您好、图片 Q1Q3.png 是 TI DAC8742 Eva 的原理图。 应使用什么 Q1和 Q2?

    我使用了 MMBT2907ALT1-D。

    这个原理图是我的。

    现在、我传输的数据流可以到达 Q3的 pin3。 但我无法通过示波器捕获 Q1的载波信号引脚3 (或 Q1的引脚1或 Q2的引脚1)、这意味着我的信号无法通过 R2 (2K 电阻器)。

     我在原理图中使用的芯片 Q1和 Q2是否 不符合此应用的要求?

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

    您好!

    在 BOM 中、Q1和 Q3使用了 MMBT2907ALT1G。

    我看到您的 Q2引脚2网络连接到了5V。 在 TI 设计中、这连接到 REG 3.3V。
    您是否能够更改此设置并尝试3.3V 网络?

    谢谢。
    卢卡斯

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

    抱歉、实际上 Q2引脚2连接到了3.3V、 此处存在指示器错误。

    发射载波可到达 Q3的 pin3、看到橙色部分。

    我不知道为什么波无法通过 R2 (2KR)、并最终耦合到 PA+线路、我想用示波器捕获该波形。

    我敢肯定 Q1和 Q2的芯片是好芯片。

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

    Question:

    1 μ A PLC 总线上的、流是"AA D2 10 02 01 49 2F 41 D5"、这意味着 DAC8740H MOD_IN 引脚检测到该数据流、 然后 UART_OUT 引脚只将"10 02 01 49 2F 41"发送到 MCU 的 RX 引脚、前两个字节 AA D2和最后一个字节 D5不会发送到我的 MCU。

    没错!

    2 μ A 当、数据流"10 01 02 00 11 8C"时、是否应该在数据流中添加"AA D2"和"D5"? DCA8740H 是否可以自动添加此值?

    我的意思是、我应该从 MCU TX 发送为"EA 8B 00 AE   FF FF FF FF 2D 10 01 02   00 11 8C"、还是应该发送"EA 8B 00 AE  FF FF FF FF 2D"    AA D2  10 01 02 00 11 8C D5 "到 DAC8740H?

    3、 我在数据表中看到、  在用户数据流之前需要一个起始定界符、  0x2D 或者有一些规则需要定义?

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

     示波器捕获的结果表明、DAC8740H 的传输时间超过预期的"AA D2 10 01 02 00 11 8C D5"。

    UART_IN 接收到的数据流为  "EA 89 00 AE FF 2D 10 01 02 00 11 8C"或 "EA 89 00 AE FF 2D  AA D2  10 01 02 00 11 8C  D5 "、 DAC8740H 总线 PA+上的传输波长于预期。

    为了使总线 PA+上的传输波形为 "AA D2 10 01 02 00 11 8C D5"、我应该向 UART_IN 发送什么数据流?

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

    您好!

    在向器件发送 UART 时、您是否可以尝试发送 EA 89 00 AE  10 01 02 00 11 8C?

    4个初始化字节存储在 FIFO 中并且器件处理前导码和起始定界符之后可能是任何字节。



    谢谢。
    卢卡斯

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

    您好!

    此外、您可以尝试使用100kΩ RES 来切换 R8吗?  

    在我的电路仿真中、我看到一旦发生这种变化、输出就会调制。

    谢谢。
    卢卡斯

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

    大家好、当整个长度<= 16 (FIFO 深度)时、我可以将数据流发送到 PA+总线。

    但当数据流长度大于16字节时、不会遇到问题。

    1. UART_RTS 连接到我的 MCU 的一条中断输入线路、设置为下降沿将触发中断。 我将其命名为 UART_RTS_Int.

    2.我首先将16字节(EA 89 00 AE 68 0B 0B 68 81 82 08 3E 3C 02 05 00)传输到 DAC8740H 、并等待 UART_RTS_Int、然后将最后5个字节( FF 11 8C 04 3A)发送到 DAC8740H、 但失败了、因为我发现 在 UART_RTS 下降之前、CD 已经变为高电平。

    橙色线为 CD、蓝色线为 UART_RTS。

    因此、最后的5个字节无法通过 DAC8740H 发送出去。

    有什么建议吗?

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

    我看到了一个问题:UART_RTS 不受 D2M_LEVEL 控制。 在我的应用 D2M_LEVEL = 01中、表示当发送 FIFO 加载不到4个字节时、UART_RTS 上发生警报。 当我第一次发送16个字节到 DAC8740H 时、用户数据流长度为12个字节、UART_RTS 应该在 FIFO 切换为8个字节后下降到低电平。 但实际上、数据流仍已发送到 UART_IN、UART_RTS 具有下降低电平! 这很奇怪!

    图1:向 DAC8740H 发送16个字节(4个字节 Init. + 12字节用户数据流)

    我找到了一条关于 UART_RTS 的规则、它 会在 UART_IN 开始接收数据流后1.2ms 左右下降到低电平

    图2:向 DAC8740H 发送10个字节(4个字节 Init. + 6字节用户数据流)

    Question:

    如果我想发送超过16个字节到 DAC8740H、那么有用的顺序是什么?

    最初我使用 UARAT_RTS 来判断发送重新维护字节的时间、但显然它不起作用!

    我应该用 CD 来判断吗? 什么是详细顺序?

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

    您好!

    当 FIFO 中的数据多于您设置的限值时、UART_RTS 变为低电平、因此对于两种不同的情况应该是相同的。
    您可以看到、  在数据字节更多的情况下、它保持低电平的时间更长、因为在小于4个字节之前、它有更多数据要从 FIFO 中删除。

    在发送前4个初始字节然后发送数据字节之后、PA 输出应开始发送指定数量的前导码字节和起始定界符。
    在此期间、FIFO 将开始填充数据、因为 PA 输出尚未开始发送数据字节。

    根据我对两波特率、4前导码和1启动的计算、PA 输出应在 FIFO 中包含7或8个字节时开始传输数据。
    接下来、即使是连续 PA 传输、FIFO 也会开始为 PA 输出上发送的每2个字节填充大约1个字节、因为 UART 更快。

    由于这个定时、我建议使用最高的 D2M_LEVEL "11"、这样当 FIFO 中的字节数量少于8个时便会收到通知、这样才能获得最多的响应时间。
    您可以尝试先发送16个字节、然后继续发送8个字节。  

    谢谢。
    卢卡斯

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

    非常感谢!

    其他问题:

    对于 PA 协议: 在用户帧 "10 01 02 00 11 8C"之前应该有帧前定界符"AA D2";在用户帧之后还应该有结束定界符"D5"。

    我的问题是、DAC8740H 是自动添加这些定界符、还是应该在整个数据流中添加定界符?

    detaily,如果我想发送 "10 01 02 00 11 8C",我应该发送 "EA 99 00 AE AA D2 10 01 02 00 11 8C D5 "、还是应该直接发送 "EA 99 00 AE 10 01 02 00 11 8C"?

    今天、我使用一个总线监控工具来捕获、我发现:

    我输入第17行查看细节、就是这个:很明显、我放置在总线上的帧是不正确的。

    对于正确的总线、如下所示:

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

    我已尝试由 MCU 发送至 DAC8740H:"EA 99 00 AE  AA D2  10 01 02 00 11 8C  D5 "、长度= 13字节、请检查下图:

    总线监控器工具无法将其标识为有效的 PA 帧。(预定界符错误、长度错误等)

    然后、我尝试 由 MCU 发送到 DAC8740H:"EA 99 00 AE 10 01 02 00 11 8C"、长度= 10字节、请查看下图:

    总线监控器工具仍然无法将其标识为有效的 PA 帧。(预定界符错误、长度错误等)

    这是到 PA+总线的 MOD_OUT 的方法。

    为什么我发送出去的帧无法确定为有效的 PA 帧?

    我忽略了一些粗心大意的问题吗?

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

    我认为我的传输波效果很好。

    我在总线监控工具中看到、我发送的波形无法识别为十六进制格式的数据流。

    我不知道问题在哪里。

    您能给我一些建议吗?

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

    你好, ! 我的项目快到了截止日期。 我需要更多支持。 非常感谢您一直以来对我们的支持。 我的 QQ 是157454269、我的电子邮件是 hurry@hurry-tech.cn、能直接支持我吗?

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

    您好!

    如果这对您来说更容易、我可以通过电子邮件联系。

    该器件将插入前导码、开始和停止定界符。

    您只需要提供 B3-B0和数据字节。

    谢谢。
    卢卡斯

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

    您好!

    仅注意我们为将来的案例找到的可能解决方案:

    使用 DM_LVL '11'作为发送多个/更长消息的最大时间范围。

    前导码字节字段已经是 val+1、因此将其设置为0仅发送1个前导码。

    DAC8740H 负责发送 PAFF 前导码、启动和停止。
    UART 消息应仅为 B3-B0 +数据。

    正常曼彻斯特从下降沿开始、反相从上升沿开始。

    检查板上的外部非 TI 组件

    正在关闭本主题帖。

    谢谢。
    卢卡斯