[Armadillo:07676] Re: i2cdev ドライバの使用方法

email@hidden
2011年 11月 1日 (火) 13:09:49 JST


お世話になります。小林です。
回答ありがとうございます。

> ioctl()が成功しているのでマルチプレクサ等の
> 初期設定は正常に行われていると思われます。
> char  buf[3];
> buf[0]      = 1;
> buf[1]      = 0;
> buf[2]      = 0;
>
> fd = open("/dev/i2c-2", O_RDWR);
> ioctl(fd, I2C_SLAVE, 0x0C);
> write(fd, (const void *)buf, 3);
>
> 上記の、提示していただいたコードに、close(fd)が
> ないですけれど、現在使用しているコードにはclose(fd)が
> ちゃんとかかれていますか?

close(fd)は正常時、異常時共に実行しています。
提示コードに省略してしまい申し訳ありません。


> >>> writeがリモートI/Oエラーにならずに成功することもあります。
> >>> こちらのハードの問題の可能性もありますので、ハード側を調べてみます。
> >> 失敗したり成功したりというのは、ハード側要因の可能性大ですね。
> >> 図2.14 I2C接続A/Dコンバーター回路図
> >> のように、
> >> SCL, SDAラインはちゃんとプルアップされています?
> >
> > ハード的に33Kでプルアップされていました。
> >
> > ソフトの設定で気になるところがあります。
> >
> > (1)現状、「IMX25RM_Rev1.pdf」の「Table 505: Register:
> > IOMUXC_SW_PAD_CTL_PAD_GPIO_A」
> >     を参考にbootloaderの中で以下を設定しています。
> >
> > static struct iomux_info gpio_pins[] = {
> >       ・
> >       ・
> >       ・
> >        { MX25_PIN_GPIO_A,      MUX_ALT4, MUX_ALT4, 0x0040, 0x0040 },
//
> > pin48
> >        { MX25_PIN_GPIO_B,      MUX_ALT4, MUX_ALT4, 0x0040, 0x0040 },
//
> > pin49
> >
> > 上記は以下(デフォルト)から変更しています。
> >
> >        { MX25_PIN_GPIO_A, MUX_ALT0, MUX_ALT0, 0x00e0, 0x00e0 },
> >        { MX25_PIN_GPIO_B, MUX_ALT0, MUX_ALT0, 0x00e0, 0x00e0 },
> >
> > 何か問題ありますでしょうか。
> >
> > (2)また、以下のコードがありますが、i2c3用を作成する必要がありますでしょ
う
> > か。
> >
> > struct iomux_info i2c1_pins[] = {
> >        { MX25_PIN_I2C1_CLK, SION(MUX_ALT0), MUX_ALT5, 0x0028, 0x0028 },
> >        { MX25_PIN_I2C1_DAT, SION(MUX_ALT0), MUX_ALT5, 0x0028, 0x0028 },
> >        { },
> > };
> >
> > 以上、よろしくお願いいたします。
> >




armadillo メーリングリストの案内