8 years ago.

i2cslaveとi2cmasterの同時利用について

NUCLEO-F401REでマスターからi2cslaveで受信したデータを加工して別のスレーブに送信したいのですが

このように

I2C i2c(D3, D6);        // sda, scl
I2CSlave slave(D14, D15);

宣言した時点で動作しなくなります

接続は マスター(XMOS)からF401REのi2cSlave F401REのi2cマスターからアイソレータ経由でDAC(AKM AK4490)とつながっています

SoftwareI2Cでは問題なく動くのですが動作速度の問題か取りこぼしやフリーズが多発しています。

そもそもこの二つは同時に使用できないのでしょうか?

動作しないコード

#include "mbed.h"

I2C i2c(D3, D6);        // sda, scl
I2CSlave slave(D14, D15);
const int addr = 0x11<<1; // define the I2C Address



int main()
{
    char buf[2];
    int i;
    slave.address(addr);
    i2c.frequency(400000);

    while (1) {
        i = slave.receive();
        switch (i) {
            case I2CSlave::WriteAddressed:
                slave.read(buf, 2);
                i2c.write(addr, buf, 2);
                slave.stop();
                break;
        }
    }
}

Be the first to answer this question.