尹小舟 发表于 2024-5-18 17:04

FireBeetle 2 ESP32 C6开发板 OneWire与DS18B20

<p>OneWire库是一个流行的Arduino库,允许与 1-Wire设备通信,如温度传感器DS18B20,开关和其他外设。库还抽象了通过单个数据线与这些设备交互所需的低级定时和通信协议。</p>

<p>&nbsp;</p>

<p>接口说明</p>

<p>&nbsp;</p>

<p>OneWire库的基本方法和函数说明。这些函数使得与1-Wire设备(如DS18B20温度传感器)的通信变得简单。以下是对这些函数的更详细的解释和示例。</p>

<h3>示例和详细解释</h3>

<h4>1. 初始化OneWire对象</h4>

<pre>

&nbsp;</pre>

<p>cpp复制代码</p>

<pre>
<code>
#include &lt;OneWire.h&gt;

OneWire myWire(2);
</code></pre>

<ul>
        <li>
        <p><strong>OneWire(pin)</strong>:构造函数,用于创建一个OneWire对象并指定连接到1-Wire总线的数字引脚。</p>
        </li>
</ul>

<h4>2. 搜索设备</h4>

<pre>
<code>byte addr; // 用于存储设备地址的数组
bool found = myWire.search(addr);

if (found) {
    // 打印设备地址
    for (int i = 0; i &lt; 8; i++) {
      if (i &lt; 7) {
            Serial.print(addr, HEX);
            Serial.print("-");
      } else {
            Serial.print(addr, HEX);
      }
    }
    Serial.println();
} else {
    Serial.println("No more devices on 1-Wire bus.");
}</code></pre>

<p>&nbsp;
<h4>3. 重置搜索</h4>
</p>

<p>在搜索完所有设备后,你可能想要重新开始搜索,或者你可能在搜索过程中中断了,并希望从第一个设备开始再次搜索。</p>

<pre>
<code>myWire.reset_search();</code></pre>

<p><span style="font-weight: bold;">4. 重置1-Wire总线</span></p>

<p>在每次与设备通信之前,通常需要先重置总线。</p>

<pre>
myWire.reset();
</pre>

<p><span style="font-weight: bold;">5. 选择设备</span></p>

<p>在重置后,你需要选择要与哪个设备通信。</p>

<pre>
myWire.select(addr); // 使用之前搜索到的设备地址
</pre>

<p><br />
<span style="font-weight: bold;">6. 跳过设备选择(如果你有单一设备)</span></p>

<pre>
myWire.skip(); // 直接访问单一设备,无需搜索
</pre>

<p><br />
<span style="font-weight: bold;">7. 写入和读取数据</span></p>

<pre>
<code>// 写入一个字节
myWire.write(0xAA);

// 读取一个字节
byte receivedByte = myWire.read();

// 使用带有保持电源选项的写入(不常用)
myWire.write(0xBB, 1);</code></pre>

<p><span style="font-weight: bold;">8. 计算CRC校验</span></p>

<p>CRC(循环冗余校验)用于验证数据的完整性。</p>

<pre>
<code>byte dataArray[] = {0x01, 0x02, 0x03, 0x04};
byte crc = myWire.crc8(dataArray, 4); // 计算4个字节数据的CRC</code></pre>

<pre>

<span style="font-weight: bold; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun;">注意事项</span>
</pre>

<ul>
        <li>确保连接了1-Wire设备和电源。</li>
        <li>在与设备通信之前,始终先重置总线。</li>
        <li>如果你正在使用多个设备,确保正确管理它们的地址</li>
</ul>

<p>&nbsp;</p>

<p>&nbsp; 有可能是不支持ESP32 C6,后面尝试使用模拟的方法俩驱动DS18B20</p>

lugl4313820 发表于 2024-5-18 18:44

<p>&nbsp;有可能是不支持ESP32 C6,后面尝试使用模拟的方法俩驱动DS18B20。</p>

<p>建议你可以用逻辑分析仪看看时序怎么样。</p>

chejm 发表于 2024-5-20 15:29

<p>楼主分享的ESP32 C6内容非常详细,对初次接触这方面的菜鸟帮助很大,非常感谢</p>

尹小舟 发表于 2024-5-20 15:53

lugl4313820 发表于 2024-5-18 18:44
&nbsp;有可能是不支持ESP32 C6,后面尝试使用模拟的方法俩驱动DS18B20。

建议你可以用逻辑分析仪看看时序 ...

<p>这个库编译不过,毕竟C6是一颗比较新的芯片,可能没有适配</p>
页: [1]
查看完整版本: FireBeetle 2 ESP32 C6开发板 OneWire与DS18B20