1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めに

こちらの記事で、マルチコアでセンサーをアクセスしてみたんだけど、それに対して、SpresenseのマルチIMUボードはどうなのかな?と思って記事を書きました。

使用したもの

・SpresenseのMainボード

・SPRESENSE向けマルチIMU Add-onボード [CXD5602PWBIMU1J]

・SPRESENSE用3軸加速度・3軸ジャイロ・気圧・温度センサ アドオンボード
※販売終了品です。

ブログ(元ネタ)

この記事は、以下のブログへ過去に投稿したもののまとめです。

マルチIMUとの他のセンサを同時に使う

マルチIMUのボードは、ボードの上面にもコネクタのメスが出ているので、I2Cのようにシーケンシャルにつなぐことが可能なIFであれば、ボードをスタッキングできるという仕様になっています。

ですので、I2Cのボードをこのようにスタッキングしたら使えそうなんですが、

image.png

同時にドライバを見てみると、

例えば、この関数などでは、I2Cによりパラメータを設定しています。

static int cxd5602pwbimu_putregsn(FAR struct cxd5602pwbimu_dev_s *priv,
                                  int slaveid, uint8_t regaddr,
                                  FAR uint8_t *buffer, uint8_t len)
{
  struct i2c_msg_s msg[2];
  int ret;

  msg[0].frequency = priv->i2cfreq;
  msg[0].addr      = priv->i2caddr[slaveid];
  msg[0].flags     = I2C_M_NOSTOP;
  msg[0].buffer    = &regaddr;
  msg[0].length    = 1;

  msg[1].frequency = priv->i2cfreq;
  msg[1].addr      = priv->i2caddr[slaveid];
  msg[1].flags     = 0;
  msg[1].buffer    = buffer;
  msg[1].length    = len;

  ret = I2C_TRANSFER(priv->i2c, msg, 2);
  if (ret < 0)
    {
      snerr("I2C_TRANSFER failed: %d\n", ret);
    }

  return ret;
}

なので、I2Cのセンサーが本当に同時に使えるのか?が気になって試してみました。
そのサンプルがこちらになります。

実は、何の問題もなく呼び出せることがわかりました。
これにより、IMUに加えて、MAGやPressureセンサーもつなぐことができますね。

マルチIMUとの他のセンサをマルチコアで同時に使う

ここまでやって、では、マルチコアで、アクセスできるのか?例えば、SubCore1で、マルチIMUを呼び出し、SubCore2でPressureセンサを呼び出したりできるのか?ということが気になり、やってみました。

このマルチコアからのI2Cの呼び出し自体は、こちらの記事を参照してください。

どうあれ、同じように割り込みを操作して、排他で読み出せばちゃんと読めることが確認できました!

サンプルコードはこちらになります。

所感

マルチコアは楽しいですね。これからもいろいろなことを試してみたいと思います。

マルチIMU自体の記事はこちらになります。

こちらもご参考に。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?