I2Cバスビジー状態になる時がある(RX231/CS+/Config_RIIC0)

いつもお世話になっております。

下記の現象についてご教授ください。

 

【発生現象】

スマートコンフィグレータで生成したConfig_RIIC0でマスターからの送受信をした際にかなり頻度で

送信時に★バスビジー状態となる現象が発生します。

尚、★時にICSR2のSTARTビットをみても0で、Step実行で実行する限りは発生しません。

 

MD_STATUS R_Config_RIIC0_Master_Send(uint16_t adr, uint8_t * const tx_buf, uint16_t tx_num)
{
        :

if (1U == RIIC0.ICCR2.BIT.BBSY)
{
   status = MD_ERROR1;                     ★

 

 

【発生環境】

・CS+

・スマートコンフィグレータ生成のConfig_RIIC0

・SCLは200kHz

・SDA/SCL波形をみる限りBBSYフラグ=1条件であるスタートコンディションおよびIICRST発生はみられません。

・割込要因はALI/STI/SPI/NAKI

※生成された割込ハンドラはr_Config_RIIC0_error_interrupt()/r_Config_RIIC0_transmit_interrupt()/r_Config_RIIC0_transmitend_interrupt()/r_Config_RIIC0_receive_interrupt()

 

【ご質問】

Q1:

waitで回避する事は可能ですが、どの関数にいれるべきか?(割込ハンドラにwaitなどいれたくないのが本音です)

頭を悩ませております。

 

Q2:

他に何をどうやって確認すればよいのか、お恥ずかしながらわかりません。

(http://japan.renesasrulz.com/cafe_rene/f/forum11/1425/r5f61644a-h8sx-iic-busy#pi4368=3

 は拝見しましたがノイズがのってる訳ではないので、同じ現象ではないように思えます)

Parents Reply Children
  • チョコです。

    RXは使ったことないので,波形についてだけコメントさせてもらいます。

    この波形は,正常な波形に見えます。最初の赤で囲んだところがスタート・コンディションです。

    その後,スレーブアドレス0b0101001(7bit)に0x89を書き込んでいます。2つ目の赤で囲んだ

    ところが通信方向を変更するためのリスタートで,その後スレーブアドレス0b0101001(7bit

    から読出しを行っています。

    読み出したデータは0x00で,それに対してマスタがNAK応答して通信を完了しています。

    最後に3つ目の赤で囲んだところがストップ・コンディションで,I2Cバスが解放されて

    いることが読み取れます。

    どう見ても,異常な波形には見えません。

     

  • チョコさん、いつもお世話になっております。

    ご教授有難うございます。
    I2C波形解析機能がないオシロをつかっているので1Bitずつ確認してみましたが正常だと思っており、

    NoMaYさんのご指南である実際にビジーと判定されてるときにI/OポートをHiにした所でトリガーをかけ
    その時のSCL/SDAを捕まえない事にはどうにも先に進めないような気がしておりました。。。。


    ただ8ないし9Bit以降も間髪いれずにクロックをだしているのでどこかにウェイトがあった方がよいのかと思っております。
  • bunbun様、鈴木と申します。
    かなりの頻度で送信した時にバスビジーとなるのでしょうか。
    そうであれば、I2Cに接続した対抗機の処理時間は考慮されているでしょうか
    EEPROM接続であればデバイスによっては、書き込みに最大5msかかることがデータシートに記載されています。書き込み中にデータを送ってもバスビジーが帰ってくることになります。
    対抗機に接続されているデバイスのデータシートを確認してみてください。
    以上、よろしくお願いします。
  • 鈴木様、いつもお世話になっております。

    >かなりの頻度で送信した時にバスビジーとなるのでしょうか。

    はい。
    またStep実行の際は発生しませんのでウェイトをおけばなおるとは思っております。


    >そうであれば、I2Cに接続した対抗機の処理時間は考慮されているでしょうか
    >対抗機に接続されているデバイスのデータシートを確認してみてください。

    1.3msとなっており、ぎりぎりか切ってる可能性があります。
    割込ハンドラ内でウェイトは極力したくないとおもっておりますが
    上位でウェイトをおけそうな箇所を模索してみます。

    ご教授ありがとうございます。