スキップしてメイン コンテンツに移動

投稿

11月, 2020の投稿を表示しています

Nuttx on Nucleo-64にてI2CTOOLを動かしてみる

Nuttxをnucleo-g474上で動作させるようにする作業をやっている所なのですが、今のところ、DMAは動作しませんが、GPIOとADCとSPI(SPISDにてsd cardをmount, RW)はとりあえず動いたよ確認できたので、今度はI2Cの動作を確認するために、NuttxのシステムアプリであるI2CTOOLを動作させることにしました。 その前にまず、I2Cデバイスが必要なのですが、手元に適当なものがなかったので、Arduino Uno R3をi2cスレーブにしてみました。 さらに、動作確認のためすでにサポートされているNucleo-F446REでI2CTOOL(i2cマスターのスキャンツール)を動かしてみたのですが、以下の様な結果となりました。 1. SDA/SCLへのプルアップがないと動作しない。(NuttxのソースコードではGPIOはGPIO_OPENDRAIN) 2. Arduinoのスキャンツール(マスター)を動作させないと、I2CTOOLではスキャンできない。 2. マスターのNucleo-64のSDAとSCLは5Vを3.3KΩでプルアップしたところ、I2CTOOLにてスキャンに成功。 3. USB給電のないArduinoがバス上に接続されていると、スキャンに失敗する。 給電されていないArduinoがあるとスキャンできない点以外はおおむねOKかなという結果でした。 参考までに、Arduino I2C スレーブのコードは以下の通りです。 #include <Wire.h> byte b=0; void setup() { Wire.begin(0xf);// Slave ID #f pinMode(SDA, INPUT); pinMode(SCL, INPUT); Wire.onRequest(requestEvent); } void loop() { } void requestEvent() { Wire.write(b++); } なお、今回はArduinoのIOが5Vなので、SDA/SCLへはNucleo側の5Vを3.3KΩでプルアップした結果ですが、プルアップがないと動作しないところから察するに、プルアップ抵抗値の設定などをきちんとしないといけない様子です。が、とりあえず本