Renesas Community
Renesas Community
  • User
    Join or sign in
  • Site
  • Search Community
  • User
  • Renesas Engineering Community
  • FAQ
  • HELP
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-ROSE WireとSerial2の同時使用
  • Forums
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • State Not Answered
  • Replies 0 replies
  • Subscribers 438 subscribers
  • Views 792 views
  • Users 0 members are here
  • Serial2
  • Wire
Options
  • Share
  • More
  • Cancel
Related Tags
  • 3D
  • analog
  • B3M
  • DDS-XRCE
  • endif
  • esp8266
  • FIT
  • GR-ROSE
  • ICS
  • include
  • MG996R
  • MIC3
  • microSD
  • MPL3115A2
  • OLED
  • pin
  • PMOD
  • ROS
  • ROS2
  • rosserial
  • RS-485
  • RX65N
  • SDHI
  • serial
  • SmartConfigurator
Related

WireとSerial2の同時使用

Okamiya Yuuki
Okamiya Yuuki over 3 years ago

がじぇるね岡宮です。

WireとSerial2は同じSCIチャネルSCI2を使用しているため、デフォルトでは同時に使用できません。ただ、同時に使用する場合も多々あると思いますので、WireをソフトウェアWireに切り替えできるようにライブラリをアップデートします。更新後のWireライブラリは以下です。

Wire.zip

 

 

ベストテクノロジーさんのGR-ROSE互換ボード「BTE095 FDIV-HC」に搭載されているBosch製IMUのBNO055で動作確認をしました。以前のバージョンにもソフトウェアWireは実装済みでしたが、そのままでは動作しませんでした。リード時のスレーブACK応答時、ACK前後でスレーブがSCLをLOWリリースしてWaitをかけていることが分かり、アップデート後のソフトウェアWireではこの仕様に対応しました。また、メンバ関数としてsetSoftWire(sda, scl)を追加することで、既存のWireサンプルに一行追加するだけで動作できるようにしました。

BNO055のサンプルプログラムをソフトウェアWireで動かすサンプルを以下の通り貼り付けます。デフォルトのサンプルに対して追加したのはWire.setSoftWire(21, 20)の部分です。なお、setFrequency(freq)で周波数を上げることができますが、最大はおよそ220kHzでした。デフォルトでは100kHz程度になります。

#include <Arduino.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>

Adafruit_BNO055 bno = Adafruit_BNO055(55);

void setup(void)
{
Serial.begin(9600);
delay(1000);
Serial.println("Orientation Sensor Test"); Serial.println("");
Wire.setSoftWire(21, 20); // SDA, SCL

/* Initialise the sensor */
if(!bno.begin())
{
/* There was a problem detecting the BNO055 ... check your connections */
Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
while(1);
}

delay(1000);

bno.setExtCrystalUse(true);
}

void loop(void)
{
/* Get a new sensor event */
sensors_event_t event;
bno.getEvent(&event);

/* Display the floating point data */
Serial.print("X: ");
Serial.print(event.orientation.x, 4);
Serial.print("\tY: ");
Serial.print(event.orientation.y, 4);
Serial.print("\tZ: ");
Serial.print(event.orientation.z, 4);
Serial.println("");

delay(100);
}

 

  • Reply
  • Cancel
  • Cancel
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2023 Renesas Electronics Corporation. All rights reserved.