DavidZH 发表于 2024-5-19 21:44

【Beetle ESP32 C6 Mini 】外设之 i2c 驱动HMC3588L

<div class='showpostmsg'><p>从Beetle ESP32 C6 Mini&nbsp; 引脚分布可知, I2C 的外设包括一组I2C 和一组低功耗I2C, SPI 包括除了片选之外的一组SPI;</p>

<p>对于管脚如下:</p>

<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SDA-&gt;GPIO19</p>

<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SCL-&gt;GPIO20</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>手上有一款I2C 接口的HMC3588L 的模块;</p>

<p>实物图像如下:</p>

<p>&nbsp; &nbsp;&nbsp; &nbsp;</p>

<p>&nbsp;</p>

<p>HMC5883是霍尼韦尔公司生产的一款地磁场检测芯片是一款表面贴装的集成了信号处理电路的三轴磁性传感器,应用场景主要包括罗盘、导航、无人机、机器人和手持设备等一些高精度的场合。详细功能可以参考规格书;</p>

<p>硬件连接如下:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>编写相关代码:</p>

<pre>
<code>#include &lt;Arduino.h&gt;
#include &lt;Wire.h&gt;
#include &lt;SPI.h&gt;



#defineHMC3588Address 0x1E



void setup() {
Serial.begin(115200);
Wire.begin();

SPI.begin(7);    //初始化SPI CS on GPIO7

Wire.beginTransmission(HMC3588Address);
Wire.write(0x02);
Wire.write(0x00);
Wire.endTransmission();

}

void loop() {
   int x,y,z;

   Wire.beginTransmission(HMC3588Address);
   Wire.write(0x03);
   Wire.endTransmission();

   Wire.requestFrom(HMC3588Address, 6);
   if(6&lt;=Wire.available())
   {
      x = Wire.read()&lt;&lt;8;
      x |= Wire.read();
      z = Wire.read()&lt;&lt;8;
      z |= Wire.read();
      y = Wire.read()&lt;&lt;8;
      y |= Wire.read();

   }


    Serial.print("x: ");
    Serial.print(x);
    Serial.print("y: ");
    Serial.print(y);
    Serial.print("z: ");
    Serial.print(z);
    Serial.print("\r\n");
    delay(200);
}
</code></pre>

<p>测试输出相关数据:</p>

<p> &nbsp;</p>

<p>总结:</p>

<p>&nbsp; &nbsp; &nbsp; 是否需要低功耗I2C 取决于产品设计需求;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2024-5-20 07:28

<p>是否需要低功耗I2C 取决于产品设计需求,这个是重点</p>

littleshrimp 发表于 2024-7-20 18:56

<p>三个轴都同时接近满量程?</p>
页: [1]
查看完整版本: 【Beetle ESP32 C6 Mini 】外设之 i2c 驱动HMC3588L