cancel
Showing results for 
Search instead for 
Did you mean: 

FM0+, FM3 & FM4 MCU

YaNi_3193241
Valued Contributor

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

0 Likes
1 Solution
TakashiM_61
Moderator
Moderator

今回の両事象(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をリスタートすることが考えられます。

以上です。

View solution in original post

0 Likes
7 Replies
TakashiM_61
Moderator
Moderator

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

0 Likes
YaNi_3193241
Valued Contributor

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

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

0 Likes
TakashiM_61
Moderator
Moderator

今回の両事象(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をリスタートすることが考えられます。

以上です。

View solution in original post

0 Likes
YaNi_3193241
Valued Contributor

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

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

0 Likes
TakashiM_61
Moderator
Moderator

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 Likes
YaNi_3193241
Valued Contributor

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

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

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

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

0 Likes
TakashiM_61
Moderator
Moderator

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

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

0 Likes
Top labels