Armadilloフォーラム

I2Cの送受信データ長について

ohshimayyyy

2017年1月19日 9時46分

お世話になります。
大島と申します。

標記の件、現在GPIOをI2Cとして使用しております。

・現状
Armadillo-810をマスターとし
マスターとスレーブのデータ長は揃えています。
I2Cのデータ長を32byteや64byteで送受信を試みたのですが
下記のメッセージが出力され、Nakと言われてしまいます。
----------------------------------------
i2c i2c-4: sendbytes: NAK bailout.
----------------------------------------

確認したところ、データ長が20byteまでであれば
正常に送受信できるようです。

下記URLのような内容も確認しました。

・ご質問
デフォルトで、I2Cのデータ長は20byteまでなのでしょうか?
その場合、I2Cのデータ長を変更することは可能でしょうか?
その可否と手法をご教示いただきたいです。

ご対応の程、宜しくお願い致します。

コメント

at_takashi.sasayama

2017年1月19日 13時47分

笹山です。

> I2Cのデータ長を32byteや64byteで送受信を試みたのですが
> 下記のメッセージが出力され、Nakと言われてしまいます。
> ----------------------------------------
> i2c i2c-4: sendbytes: NAK bailout.
> ----------------------------------------

本メッセージですが、マスターからのデータ送信時に、
スレーブデバイスからNAKが返ってきた際に出力されるようです。

> ・ご質問
> デフォルトで、I2Cのデータ長は20byteまでなのでしょうか?
> その場合、I2Cのデータ長を変更することは可能でしょうか?
> その可否と手法をご教示いただきたいです。

ソースを見る限り、Linuxカーネル側にそのような制約は無い様に見受けられます。
まずはスレーブデバイス側にそのような制約が無いか、
確認してみてはいただけないでしょうか?

ohshimayyyy

2017年1月19日 14時20分

お世話になります。
大島と申します。

下記の件、ご対応いただき、有難う御座います。

> > I2Cのデータ長を32byteや64byteで送受信を試みたのですが
> >下記のメッセージが出力され、Nakと言われてしまいます。
> > ----------------------------------------
> > i2c i2c-4: sendbytes: NAK bailout.
> > ----------------------------------------
>
> 本メッセージですが、マスターからのデータ送信時に、
> スレーブデバイスからNAKが返ってきた際に出力されるようです。

スレーブデバイスから、NAKを返している旨
スレーブデバイス側のプログラムを再確認してみます。

> > ・ご質問
> >デフォルトで、I2Cのデータ長は20byteまでなのでしょうか?
> >その場合、I2Cのデータ長を変更することは可能でしょうか?
> > その可否と手法をご教示いただきたいです。
>
> ソースを見る限り、Linuxカーネル側にそのような制約は無い様に見受けられます。
> まずはスレーブデバイス側にそのような制約が無いか、
> 確認してみてはいただけないでしょうか?

スレーブデバイス側のデータシートには
送受信のデータ長を制約している記述はなかったのですが
再確認してみます。

また何か情報がありましたら、ご報告します。
有難う御座いました。