FM3 I2Cノイズについて

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
YaNi_3193241
Level 5
Level 5
Distributor - TED (Japan)
100 sign-ins 10 likes received 10 likes given

件名: 問合(CY9BF218TPMC-GK7CGE1)
    
内容: 従来から本IC(元富士通製)を使用していますが、後継機種の評価において
ノイズを想定し、ハード的に、I2Cの信号(SCLまたはSDA)を一瞬SWでGNDとショートすると、
正常に通信リトライしないことが判明しました。
    
I2Cの信号が一瞬異常になった場合(ノイズを想定)に、通信リトライできない原因として、何が考えられますか。
また、対処方法を教えてください。
詳細は添付ファイルをご確認ください。

0 件の賞賛
1 解決策

今回の両事象(SCLをGNDにショート、SDAをGNDにショート)と下記レジスタ値になっているという事なので、マイコンはMasterとして送受信終了(Stop condition)を待っている状態に陥っていると考えます。

IBCR.MMS=1、IBCR.ACT=0 --> The master mode operation is waited.

IBSR.BB=1 --> The bus is in transmission and reception state.

これはスイッチでGNDにショートさせているため、どのSlaveもStop Conditionを発行していないからです。

また、IBCR.BER=0 --> No errorの為、バスの異常も検知できておりません。(バスとしては正常状態)

よって、今回の事象が発生した際、対応策はWDTでTime outを設定し、Time out時にI2Cをリスタートすることが考えられます。

以上です。

元の投稿で解決策を見る

0 件の賞賛
7 返答(返信)
Takashi_M
Moderator
Moderator
Moderator
1000 replies posted 500 solutions authored 750 replies posted

ファイルが添付されていないようです。
再度添付して頂けないでしょうか?

0 件の賞賛
lock attach
Attachments are accessible only for community members.
YaNi_3193241
Level 5
Level 5
Distributor - TED (Japan)
100 sign-ins 10 likes received 10 likes given

返信遅くなりまして申し訳ございません。

ファイルを添付させていただきます。

0 件の賞賛

今回の両事象(SCLをGNDにショート、SDAをGNDにショート)と下記レジスタ値になっているという事なので、マイコンはMasterとして送受信終了(Stop condition)を待っている状態に陥っていると考えます。

IBCR.MMS=1、IBCR.ACT=0 --> The master mode operation is waited.

IBSR.BB=1 --> The bus is in transmission and reception state.

これはスイッチでGNDにショートさせているため、どのSlaveもStop Conditionを発行していないからです。

また、IBCR.BER=0 --> No errorの為、バスの異常も検知できておりません。(バスとしては正常状態)

よって、今回の事象が発生した際、対応策はWDTでTime outを設定し、Time out時にI2Cをリスタートすることが考えられます。

以上です。

0 件の賞賛
YaNi_3193241
Level 5
Level 5
Distributor - TED (Japan)
100 sign-ins 10 likes received 10 likes given

ご回答いただいた内容について、
「対応策はWDTでTime outを設定し、Time out時にI2Cをリスタートする」とありますが、リスタートとは、具体的に、どのレジスタを再セットしたらいいのか知りたいです。

恐れ入りますが、ご教授お願いします

0 件の賞賛

I2Cのリスタートについては、I2CDisable/Enable (ISMK:EN=0)になるかと考えますが、

32-Bit Microcontroller FM3 Peripheral Manual Communication Macro Part (Doc. No. 002-04843 Rev. *C)

https://www.cypress.com/file/510031/download

のCHAPTER 1-5: I2C Interface (I2C Communications Control Interface)を確認の上、必要に応じて初期化してください。

以上です。

 

0 件の賞賛
YaNi_3193241
Level 5
Level 5
Distributor - TED (Japan)
100 sign-ins 10 likes received 10 likes given

確認致しました。
ISMK:ENレジスタだけを0→1にしても、完全復活しません。

■SCLをショートさせた場合
ENレジスタだけを0→1にして、通信を再開させても、通信異常になります。
再度、ENレジスタだけを0→1にして、通信を再開させると、通信できました。

■SDAをショートさせた場合
ENレジスタだけを0→1にして、通信を再開させても、通信異常になります。
再度、ENレジスタだけを0→1にして、通信を再開させても、通信異常になります。

但し、全てのレジスタを設定し直すと、通信再開し、完全復活します。
ENレジスタ以外に、どのレジスタが効いているのか分かりましたら、
ご教授お願いします。

0 件の賞賛
Takashi_M
Moderator
Moderator
Moderator
1000 replies posted 500 solutions authored 750 replies posted

SDAをショートさせた場合ですが、どのレジスタ訊いているか判断できません。

今回SDAがショートしてしまった場合にはI2Cを初期化する事を推奨します。

0 件の賞賛