Armadilloフォーラム

Armadillo420でのDS2482の使用方法について

k-fukui

2019年10月7日 14時19分

いつもお世話になっております。福井と申します。

現在、Armadillo420を使用して、DS2482-800へのREAD/WRITEを試みておりますが、
1-Wireの読み出しができないため、具体的な方法をお教え頂けませんでしょうか。
シェルスクリプト、C言語のどちらの手段でも問題ございません。

尚、Linuxカーネルは2.6系を使用しており、接続は、CON11を使用しております。

参考)
1.コンフィギレーションとして、以下のものは有効にしおりす。
Device Driver
I2C support
I2C Device Interface
I2C Hardware Bus Support
MXC I2C Support
Dallas's 1-wire support
1-wire Bus Masters
DS2482

2.i2s-toolsを使用して、スレーブアドレスを読み出すことはできております。

コメント

佐藤です。

RTC(s35390a)での例となりますが、
arch/arm/mach-mx25/armadillo400.c にあります、以下のような定義を DS2482 についても行う必要があるかと思いますが、
行っておりますでしょうか。

static struct i2c_board_info armadillo460_ext_i2c_board_info[] __initdata = { 
    {
        .type = "s35390a",
        .addr = 0x30,
        .platform_data = &armadillo460_s35390a_plat_data,
    },
};

# 現在主流となっている Device Tree によるデバイスの追加を、Cで実装するイメージです。

福井です。
返信有難うございます。

platform_dataの登録は行っておりませんが、
下記のような設定は行っております。

static struct i2c_board_info armadillo400_i2c2_board_info[] __initdata = {
.type = "ds2482",
.addr = 0x18,
},
};

上記設定により、下記コマンドを発行すると「ds2482」が見えているため、
登録自体はできているのではないかと想定しております。
 cat /sys/devices/platform/i2c-adapter/i2c-1/1-0018/name

佐藤です。

以下のコンフィグレーションを、お使いになられたい 1-wire デバイスに応じて有効にする必要があるかと思います。

Dallas's 1-wire support
1-wire Slaves
< > Thermal family implementation
< > Simple 64bit memory family implementation
< > Battery Level sensing support (DS2751)
< > 4kb EEPROM family support (DS2433)

福井です。

返信有難うございます。
今回、DS2482を通じて温度センサーからの情報を取得するため、
ご教示頂きました内容から下記の設定を致しましたが、
温度を取得できるようなファイルが出力されていない状態です。
まだ、何か不足していると思うのですが、わかっておりません。
大変恐れ入りますが、ご教示願います。

Dallas's 1-wire support
1-wire Slaves
<*> Thermal family implementation

佐藤です。

/sys 以下に w1_slave というファイルが存在しているかどうか検索し、存在していれば、cat で読めるかと思います。

[a420]# cd /sys
[a420]# find * -name w1_slave

福井です。

早速の返信有難うございます。
ご教示頂きました検索をしたところ、「w1_slave」が存在しておりませんでした。
何か設定が不足しているのかと思うのですが、わかっておりません。
ご教示願います。

また、今回DS2482-800というデバイスで、8CH分の1-WIRE接続ができるようなIFを持っております。
CHの切り替え方法も同時にご教示頂けませんでしょうか。

佐藤です。

drivers/w1/w1.c ファイルの先頭に #define DEBUG と追加してビルドすると、デバッグログが出力されるようになりますので、確認してみてもらえますでしょうか。
dmesg の出力内容に、「Reconnecting slaves in ~~~ into new family ~~.」という個所があるかご確認ください。

福井です。

ご返信有難うございます。

デバッグログ確認致しました。
「Reconnecting slaves in ~~~ into new family ~~.」
がございませんでした。
やはり何か設定が不足しているかと思います。

以上、宜しくお願い致します。

佐藤です。

dmesg の表示内容と、以下のコマンドを実行した結果をそれぞれアップロードしていただけますでしょうか。

[a420]# zcat /proc/config.gz

佐藤です。

確認ですが、DS2482 は CON11 に接続しているということであってますでしょうか。

福井です。

大変申し訳ございません。
「CON11」は誤りで、正しくは「CON14」
になります。

佐藤です。

/sys 以下に名前に w1 が付くディレクトリやファイルはありますでしょうか。

[a420]# cd /sys
[a420]# find * -name "*w1*"

福井です。

以下、実行結果になります。

bus/w1
bus/w1/drivers/w1_master_driver
bus/w1/drivers/w1_slave_driver
class/tty/ptyw1
class/tty/ttyw1
devices/virtual/tty/ptyw1
devices/virtual/tty/ttyw1

佐藤です。

原因を調べるためには、drivers/w1/w1.c に printk() 等のログを埋め込んで確認するのが良いかと思います。
w1_reconnect_slaves() などに埋め込んで確認してみてもらえますでしょうか。

福井です。

ログを入れて確認したところ、コネクトがうまく動作していないことが分かりました。
DS2482ドライバを入れ替えたところ、動作致しました。

ご対応有難うございました。