2

デフォルトで 400KHz で動作する Snowball ボードで I2C を使用していますが、これを 100KHz に減らしたいと考えています。

で定義された api を使用し、次のように構成します。

m_fd = open(m_filename.c_str(), O_RDWR);

if (ioctl(m_fd, I2C_SLAVE_FORCE, m_addr) < 0) 
{
    throw I2cError(DeviceConfigFail);
}

速度を標準モードに変更する方法を知っている人はいますか。

ありがとう

4

2 に答える 2

1

ドライバーの「struct i2c_gpio_platform_data」で I2C SCL 周波数を変更できます。

    static struct i2c_gpio_platform_data xyz_i2c_gpio_data = {
    .sda_pin = GPIO_XYZ_SDA,
    .scl_pin = GPIO_XYZ_SCL,
    .udelay = 5, //@udelay: signal toggle delay. SCL frequency is (500 / udelay) kHz
    ....
};

「udelay」を変更すると、「xyz」i2c デバイスのクロック周波数が変更されます。

于 2013-03-12T07:06:28.667 に答える
0

I2C Frequency対応するペリフェラルのドライバー ソース ファイルを変更する必要がSlave deviceあります (つまり、I2C を介して通信している相手。例: EEPROM/Cameraなど)。

そのドライバーのソースコードで定義されているマクロが見つかる場合があります...次のように:

#define EEPROM_I2C_FREQ 400000 //400KHz

次のように変更します。

#define EEPROM_I2C_FREQ 100000 //100KHz

その対応するドライバーのみ、I2C 周波数/速度が変更されます。

于 2013-03-12T05:24:44.107 に答える