y-otuki 2015年3月2日 22時19分 Armadillo840を使用しています。 製品マニュアルの「8.3.18.I2C」にI2C0の最大転送レートが400kbpsと記載されているのですが。 100kHzでしか通信してくれません。 ご存じの方がおられましたら、ご教授お願いします。 以上 コメントを投稿するにはログインまたは登録をしてください コメント at_takashi.sasayama 2015年3月4日 14時50分 笹山です。 > 製品マニュアルの「8.3.18.I2C」にI2C0の最大転送レートが400kbpsと記載されているのですが。 > 100kHzでしか通信してくれません。 Armadillo-840 で i2c転送レートを 400kHz に設定するには、 以下の変更を行ってみてください。 この例では、i2c0 と i2c1 を両方とも、100kHz から 400kHz へ変更しています。 ■変更対象のファイル atmark-dist/linux-3.x/arch/arm/mach-shmobile/setup-r8a7740.c #include <linux/dma-mapping.h> +#include <linux/i2c/i2c-sh_mobile.h> /* 追加します */ #include <mach/dma-register.h> : /* 575行目付近 */ +static struct i2c_sh_mobile_platform_data i2c0_platform_data = { + .bus_speed = 400000, +}; + +static struct i2c_sh_mobile_platform_data i2c1_platform_data = { + .bus_speed = 400000, +}; + static struct platform_device i2c0_device = { .name = "i2c-sh_mobile", .id = 0, .resource = i2c0_resources, .num_resources = ARRAY_SIZE(i2c0_resources), + .dev = { + .platform_data = &i2c0_platform_data, + }, }; static struct platform_device i2c1_device = { .id = 1, .resource = i2c1_resources, .num_resources = ARRAY_SIZE(i2c1_resources), + .dev = { + .platform_data = &i2c1_platform_data, + }, }; 添付ファイルは上記の変更をパッチにしたものです。 atmark-dist/linux-3.x に格納後、以下のコマンドで適用できます。 atde5:~/atmark-dist/linux-3.x$ patch -p0 < linux-3.4-at11-i2c-400khz.patch ファイル ファイルの説明 linux-3.4-at11-i2c-400khz.patch linux-3.4-at11用 i2c0 コメントを投稿するにはログインまたは登録をしてください y-otuki 2015年3月5日 11時37分 笹山さま ご教授、ありがとうございます。 無事、400kHzでI2CのEEPROMを操作することが出来ました。 コメントを投稿するにはログインまたは登録をしてください
at_takashi.sasayama 2015年3月4日 14時50分 笹山です。 > 製品マニュアルの「8.3.18.I2C」にI2C0の最大転送レートが400kbpsと記載されているのですが。 > 100kHzでしか通信してくれません。 Armadillo-840 で i2c転送レートを 400kHz に設定するには、 以下の変更を行ってみてください。 この例では、i2c0 と i2c1 を両方とも、100kHz から 400kHz へ変更しています。 ■変更対象のファイル atmark-dist/linux-3.x/arch/arm/mach-shmobile/setup-r8a7740.c #include <linux/dma-mapping.h> +#include <linux/i2c/i2c-sh_mobile.h> /* 追加します */ #include <mach/dma-register.h> : /* 575行目付近 */ +static struct i2c_sh_mobile_platform_data i2c0_platform_data = { + .bus_speed = 400000, +}; + +static struct i2c_sh_mobile_platform_data i2c1_platform_data = { + .bus_speed = 400000, +}; + static struct platform_device i2c0_device = { .name = "i2c-sh_mobile", .id = 0, .resource = i2c0_resources, .num_resources = ARRAY_SIZE(i2c0_resources), + .dev = { + .platform_data = &i2c0_platform_data, + }, }; static struct platform_device i2c1_device = { .id = 1, .resource = i2c1_resources, .num_resources = ARRAY_SIZE(i2c1_resources), + .dev = { + .platform_data = &i2c1_platform_data, + }, }; 添付ファイルは上記の変更をパッチにしたものです。 atmark-dist/linux-3.x に格納後、以下のコマンドで適用できます。 atde5:~/atmark-dist/linux-3.x$ patch -p0 < linux-3.4-at11-i2c-400khz.patch ファイル ファイルの説明 linux-3.4-at11-i2c-400khz.patch linux-3.4-at11用 i2c0 コメントを投稿するにはログインまたは登録をしてください
y-otuki 2015年3月5日 11時37分 笹山さま ご教授、ありがとうございます。 無事、400kHzでI2CのEEPROMを操作することが出来ました。 コメントを投稿するにはログインまたは登録をしてください
at_takashi.sasayama
2015年3月4日 14時50分
笹山です。
> 製品マニュアルの「8.3.18.I2C」にI2C0の最大転送レートが400kbpsと記載されているのですが。
> 100kHzでしか通信してくれません。
Armadillo-840 で i2c転送レートを 400kHz に設定するには、
以下の変更を行ってみてください。
この例では、i2c0 と i2c1 を両方とも、100kHz から 400kHz へ変更しています。
■変更対象のファイル
atmark-dist/linux-3.x/arch/arm/mach-shmobile/setup-r8a7740.c
添付ファイルは上記の変更をパッチにしたものです。
atmark-dist/linux-3.x に格納後、以下のコマンドで適用できます。