SDI-12示波器输出说明,STM32

问题描述 投票:0回答:1

我正在尝试使用 UART5 和自定义 PCB 中此模块的缓冲区(检查原理图、信号电平转换)在我的 STM32L4 微控制器上实现 SDI-12 协议,以便使我的 UART 到 SDI-12 的单线转换器。但是,我无法与任何 SDI-12 兼容传感器进行通信,并且我认为输出数据存在问题。我找到了一个关于 SDI-12 协议的datasheet,其中显示了发送此命令“0!”时示波器输出的图片(picture_1)。我无法对其进行解码以查看数据表中的 picture_1 中的二进制序列是什么,并且当我尝试从我的实现中发送相同的命令(picture_2)时,结果不一样,除了“break”和“标记”事件。需要这个协议的UART规范是这样的:

1) BaudRate = 1200, 2) 1 stop bit, 3) Even parity, 4) 1 start bit

所以我的问题是:

  1. 数据表示波器输出的二进制序列是什么(图片_1)。我想对其进行解码,以检查输出数据是否按相反顺序排列。
  2. 一些 SDI-12 数据表说数据需要以相反的顺序排列,而其他一些数据表则没有这么说。那么这句话的真实情况是什么呢?
  3. 这篇paper没有指定任何“标记”事件,但是其他人说在“中断”事件之后需要一个“标记”事件。这是真的吗?

Picture_2(这是我的实现的示波器输出,发送此命令“0!”) own_implementation_sdi12_command

这是数据表中的 Picture_1,它与我发送相同的命令。

datasheet_sdi12_command

stm32 protocols uart sdi-12
1个回答
0
投票

我找到了解决方案。 SDI-12协议确实有UART的上述配置。 波特率 = 1200,奇偶校验 = 偶数,停止位 = 1,起始位 = 1。但是,如果您查看 SDI12 数据表,您会注意到该协议使用负逻辑。因此,需要将数据倒序排列,但为了实现数据不倒序,必须改变UART协议默认的空闲线,使起始位由0变为1,然后将数据从0变为1。 “像数据一样反转”,由于 UART TX 空闲线的变化而不是通过实际的数据反转,因此以相反的顺序传输!

© www.soinside.com 2019 - 2024. All rights reserved.