これもGenericを選んでいるせいかもしれない。
Arduinoはwire.hで何も書かずに使用されるポートがD15,D14で決まっているようだが、Nucleoではデフォルトポートが違うようだ。
generic stm32のサンプルファイルの中にあるi2c_scanner.inoを開くと、下記のよう記述がある
I2C-1 standard pins: PB7(sda) PB6(scl)
Use it by "Wire" without pin declaration
Wire.begin();
I2C-1 alternative pins: PB9(sda) PB8(scl)
Remap the first I2C before call begin()
Wire.setSDA(PB9);
Wire.setSCL(PB8);
Wire.begin();PB6はD10に割り振られているがPB7は、外部コネクタに出ているため、そこに接続して使用したものの通信信号が出てこなかった。そこで、デフォルトに合わせるため、Wire.begin()の前に
Wire.setSDA(PB9);
Wire.setSCL(PB8);を書いたところ、D14,D15から信号が出るようになった。
コメントを追加