gpt4 book ai didi

serial-port - Arduino 序列号 : inverted 7E1. 可能吗?

转载 作者:行者123 更新时间:2023-12-02 02:10:31 25 4
gpt4 key购买 nike

我正在尝试与 SDI-12 进行连续对话设备,它需要以 1200 波特串行传输 7 个数据位、奇偶校验位和一个停止位 (7E1)。

来自数据表:

SDI-12 communication sends characters at 1200 bits per second. Each character has 1 start bit, 7 data bits (LSB first), 1 even parity bit, and 1 stop bit (Active low or inverted logic levels):

All SDI-12 commands and response must adhere to the following format on the data line. Both the command and response are preceded by an address and terminated by a carriage return line feed combination.

Serial 或 SoftwareSerial 库可以做到这一点吗?我试图避免使用额外的硬件(除了 3.3 V 的电平转换器),但如果这是唯一的方法,我会这样做。

我看到SoftwareSerial可以倒转,Serial可以7E1,但我找不到两者是否都可以。

我可以访问 Arduino Mega (R2) 和 Arduino Uno (R3).

这是我要与之通信的设备:http://www.decagon.com/products/sensors/soil-moisture-sensors/gs3-soil-moisture-temperature-and-ec/在这里,http://www.decagon.com/assets/Uploads/GS3-Integrators-Guide.pdf是解释协议(protocol)的文件。第6页谈到了它对SDI的实现。

最佳答案

我不熟悉 Arduino,但是 SDI-12 物理层与标准 TTL 电平相反 - 可能有两个原因:

  1. 由于空闲电压为 0V,因此待机功耗较低(由于典型 SDI-12 传感器中的标称下拉电阻)。
  2. 它有助于使用标准 RS-232 串行端口进行简单的总线“嗅探”。

缺少 5V IO 引脚的位冲击 - 是的,如果使用标准微 Controller UART,您将需要一个外部反相器(或 2 个)和一个三态缓冲器。可能需要电平转换,具体取决于您的硬件。

不喜欢维基百科条目 - SDI-12 使用完全标准的 UART 位时序(非常类似于 RS-232),只是信号电平不同 (0 - 5V);见第 2 点。但是,有特定的中断顺序和严格的时序要求,这使得固件开发更加困难。

如果您认真对待 SDI-12 固件开发,您可能想要投资 SDI-12 Verifier .彻底研究 specification是必不可少的。

关于serial-port - Arduino 序列号 : inverted 7E1. 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com