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.

[参考译文] TIDA-00527:TIDA-00527

Guru**** 2609895 points
Other Parts Discussed in Thread: TIDA-00057

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/811823/tida-00527-tida-00527

器件型号:TIDA-00527
主题中讨论的其他器件:TIDA-00057

你(们)好

曼彻斯特编码有什么帮助。

我正在使用 Arduino 的 Manchester.h 库、并尝试串行发送数据、并通过 TIDA00527传递、并使用 Arduino 串行从其他端接收数据。

我所面临的问题是、我在接收器端连续获取数据、但我发送的位在代码中是不同的、在发送器的串行监视器中实际上是不同的

下面是简化代码

#define TX_PIN 1.

void setup()  

man.setupTransmit(TX_PIN、MAN_9600);  


void loop()  


man.transmit ('0');

 

这是使用 Manchester.h 库从 Arduino 传输代码。 但我无法了解0是如何以垃圾形式发送的、我在终端上接收到的内容如何解码? 我在 termianl 上看到这个

Y⸮⸮⸮Y35⸮Y3⸮⸮Y⸮U⸮Y35⸮Y35⸮Y⸮⸮⸮Y3⸮⸮⸮Y3⸮⸮35⸮Y35⸮⸮Y⸮Y⸮⸮⸮5⸮Y3⸮⸮Y⸮⸮⸮Y35⸮Y3⸮⸮⸮Y3⸮5⸮⸮⸮Y35⸮Y35⸮Y⸮⸮⸮Y⸮⸮⸮Y⸮⸮⸮Y3⸮⸮Y3⸮⸮35⸮Y35⸮Y⸮⸮⸮Y⸮⸮Y Y35

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

    一个简单的问题:1)您是否已验证发送器和接收器的波特率配置相同?  接收器和终端监视器之间的波特率如何?  2) 2)曼彻斯特数据在哪里解码?  它是否在接收 Arduino 中解码、然后重新传输到基于 PC 的串行终端?  您是否设置了接收 Arduino 以正确解码曼彻斯特数据?  我自己不使用 Arduino、因此我不擅长使用 Arduino、但我假设这是曼彻斯特数据、您使用软件"端口"来发送/接收数据、因为我认为 Atmel 芯片上的硬件 UART 无法对这种类型的数据进行编码/解码。  您是否已为适当的时钟速度配置了库、它是否与您的硬件运行速度相匹配?  (这甚至可以在和 Arduino 上配置吗?)  您是否有其他一些可能会阻止您的接收例程并阻止其正确接收数据的循环/代码?  您可能会尝试在发送器上引入字符之间的延迟、以便接收器有时间捕获、处理数据并将其传输到 PC。  这有望使接收器与发送器保持同步。  如果它甚至错过了一位、但数据不断传入、您会看到垃圾。  这就是串行消息通常以数据包形式包装的原因、以便发送器和接收器可以尝试保持同步。

    3) 3) 您是否检查了接收器处的电源轨是否稳定?  使用 O 示波器检查它们、因为 DMM 无法捕获电源轨中的快速突降。  提供图解。  请记住、在使用 PoE 等分布式电源系统时、电源现在在交流频率下具有高输出阻抗。  这意味着在接收器侧正确使用去耦电容器和分布式大容量电容对于恢复低电源交流输出阻抗并消除接收器侧的 HF 电源纹波非常重要。  接收器上的显著纹波可能会干扰 RS485收发器和/或 Arduino。

    4)您还能否提供离开发送器并进入接收器的串行数据(X、Y 和 A、B 端子)的示波器图。  信号完整性问题可能是问题的原因、而范围图将有助于诊断。

    肖恩

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

    您好、Divyyshu、

    我同意 Shawn 的上述出色反馈。  您可以考虑的一个快速测试是绕过交流耦合电容、并将差分发送器输出直接连接到差分接收器输入。  如果通信在那里正常工作、您至少会知道没有软件配置问题。  在这种情况下、两端的示波器截图对于帮助调试非常有用。  我提到这一点是因为本参考设计中使用交流耦合电容会限制可实现的最小数据速率。  最佳结果通常为1Mbps 或更高; 根据您的代码、可能会使用9600 bps 的波特率。  曼彻斯特编码的使用肯定有助于确保平均直流平衡、但仍有一个限制、即信号在每个曼彻斯特"位"内衰减过多。

    最大

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

    你(们)好

    控制器的 TX 和 RX 的波特率相同。 串行终端和计算机也是如此。

    2.如果我无法获得发送器类型的终端中的内容、如何对其进行解码。 它在发送0时显示垃圾

     

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

    1) 1)波特率匹配是很好的。  务必先询问/检查基础知识。

    2) 2) 我假设您的系统的方框图与以下内容类似:

    当发送器使用曼彻斯特编码格式化数据时、它使用特殊符号来表示二进制0或1。  它使用位周期中心从高电平到低电平的转换来指示1、使用位周期中间从低电平到高电平的转换来指示0。  接收器必须对该编码进行反转(解码)、才能提取发送的原始信息。

    在您提供的示例代码中、您使用 man.transmit ("0")从主程序发送数据。  我假设该函数接受您传递给它的参数、并使用曼彻斯特编码一次将其移出一位。  在接收器上,应该有一个等效类型函数 man.receive();或类似函数 ,用于监视引脚的转换并将数据解码回常规二进制文件。 (我不知道正确的语法是什么、因为我从未使用过 Arduino 库。  您应该参考提供的 API 文档以获得正确的语法和函数名称。)  如果不首先通过曼彻斯特解码器运行 RX 数据、则无法将 TIDA-00057中的 RX 数据传递到 PC。

    要解决您的问题、我们需要分解整个问题。  首先、我们在哪里能够获得 RS485总线输出和输入波形的 O 示波器捕捉?  一旦我们验证硬件通道正常、我们就可以继续调查软件类型问题。  由于在发送器和接收器上都使用了交流端接方案、Max 在所需的最小波特率方面取得了一些出色的成就。  因此、如果您在 RX 侧看到失真或波形发生显著变化、只需尝试提高发送器和接收器之间的波特率、然后查看数据是否开始变得更好。  同样、我建议降低消息速率、以便接收器有机会处理数据并重新传输数据。  由于没有可用于软件定义串行端口的硬件 FIFO、因此您的接收器只能在开始丢失位(或字节或字、甚至是整个数据包)之前执行大量操作。  尝试在发送每个字符后插入1秒延迟、以查看这是否有用。  (您可以定制延迟、以便在工作后加快传输速率。)

    肖恩

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

    你(们)好

    我当前正在发送数据、但在没有 TI 电路的情况下我可以接收数据、但当我放置 TIDA00527时、我在下面给出了一些问题、 信号 Tx 非常好、但 A、B 中存在失真。  

    e2e.ti.com/.../Powerover_5F00_RS485.zip

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

    你(们)好

    我当前正在发送数据、但在没有 TI 电路的情况下我可以接收数据、但当我放置 TIDA00527时、我在下面给出了一些问题、 信号 Tx 非常好、但 A、B 中存在失真。  

    e2e.ti.com/.../3056.Powerover_5F00_RS485.zip

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

    您好、Divyyshu、

    我们将在此处将反馈整合到您的另一个主题中:

    https://e2e.ti.com/support/tools/sim-hw-system-design/f/234/t/812997

    最大

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

    你(们)好

    最好等待你的回复