ホーム フォーラム Texas Instruments マイコン C2000 I2Cの送信完了、受信完了

このトピックには4件の返信が含まれ、2人の参加者がいます。6 年、 1 ヶ月前Yojiro Yojiro さんが最後の更新を行いました。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #3904 返信

    mickey.mouse
    参加者

    I2Cの送信完了、受信完了

    デバイス型番:F28075

    controlSUITEに有りますI2Cサンプルコードをモディファイして評価をしていますが、
    ソフト的に送信後に継の送信をすると、続くフレームが送信されない問題が出ました。
    そこで、I2caRegs.I2CSTR BBビットを監視すればよいと考え試してみましたが、
    上手くいきませんでした。
     送信後にステータスレジスタを読みましたが、基本的に0x0400から変わらず
    なにかよい方法がありますか、
     サンプルコードの設定自身が連続送信に無かなないのでしょうか、

    よろしくお願いします。

    #3935 返信

    mickey.mouse
    参加者

    その後、EEPROMのチップが書き込み中であるため、チップビジーで有ることがわかりました。
    この場合、サブアドレスを贈るとNACKが返されますが、このナックを割り込みで判定できると思い
    I2CIER NACKを有効にしたところI2CISRCが3で検出されました。
    思惑としては、2であると予想していました。

    コメントお願いします。

    #3937 返信

    mickey.mouse
    参加者

    先ほどの投稿で割込み要因のNACKは、再コンパイルして正しく検出されていることはわかりました。
    NACKが検出された時の対処ですが、

    I2caRegs.I2CMDR.bit.STP = 1;   ストップコンディションの生成
    I2caRegs.I2CSTR.all = I2C_CLR_NACK_BIT; ステータスクリア
    I2caRegs.I2CFFTX.bit.TXFFRST =1;     送信FIFOをクリア

    で宜しいでしょうか、

    #3938 返信
    Yojiro
    Yojiro
    従業員

    お使いのサンプルコードでは、ARDYINT(Register-access ready condition)を有効にしており、ARDYINTはNACINTよりも優先度が高いため、ARDYINTがNACKINTに先立ち検出されます。

    ARDYINTの処理ではNACKの受信判定を行っており、NACK受信時にはNACKINTフラグをクリアするとともにSTOP conditionを送信するように処理されております。

    ここでNACINTフラグがクリアされるため、割り込みハンドラでI2CISRCを読み出しても、’2’が読み出せることはございません。
    NACK受信を上位アプリで検出したい場合は、この割り込みハンドラのNACK検出時に何らかの変数・フラグへNACK検出状態をセットして上位アプリで参照するなど、ソフトウェアの追加をお願いいたします。

     

    #3940 返信
    Yojiro
    Yojiro
    従業員

    NACKが検出されたときの処理ですが、ご検討頂いている処理で問題ございません。

5件の投稿を表示中 - 1 - 5件目 (全5件中)