ホーム › フォーラム › Texas Instruments › マイコン › C2000 › I2Cの送信完了、受信完了 このトピックには4件の返信が含まれ、2人の参加者がいます。6 年、 1 ヶ月前に Yojiro さんが最後の更新を行いました。 5件の投稿を表示中 - 1 - 5件目 (全5件中) 投稿者 投稿 2018年10月25日 3:48 PM #3904 返信 mickey.mouse参加者 I2Cの送信完了、受信完了 デバイス型番:F28075 controlSUITEに有りますI2Cサンプルコードをモディファイして評価をしていますが、 ソフト的に送信後に継の送信をすると、続くフレームが送信されない問題が出ました。 そこで、I2caRegs.I2CSTR BBビットを監視すればよいと考え試してみましたが、 上手くいきませんでした。 送信後にステータスレジスタを読みましたが、基本的に0x0400から変わらず なにかよい方法がありますか、 サンプルコードの設定自身が連続送信に無かなないのでしょうか、 よろしくお願いします。 2018年10月26日 12:18 PM #3935 返信 mickey.mouse参加者 その後、EEPROMのチップが書き込み中であるため、チップビジーで有ることがわかりました。 この場合、サブアドレスを贈るとNACKが返されますが、このナックを割り込みで判定できると思い I2CIER NACKを有効にしたところI2CISRCが3で検出されました。 思惑としては、2であると予想していました。 コメントお願いします。 2018年10月26日 2:51 PM #3937 返信 mickey.mouse参加者 先ほどの投稿で割込み要因のNACKは、再コンパイルして正しく検出されていることはわかりました。 NACKが検出された時の対処ですが、 I2caRegs.I2CMDR.bit.STP = 1; ストップコンディションの生成 I2caRegs.I2CSTR.all = I2C_CLR_NACK_BIT; ステータスクリア I2caRegs.I2CFFTX.bit.TXFFRST =1; 送信FIFOをクリア で宜しいでしょうか、 2018年10月26日 2:57 PM #3938 返信 Yojiro従業員 お使いのサンプルコードでは、ARDYINT(Register-access ready condition)を有効にしており、ARDYINTはNACINTよりも優先度が高いため、ARDYINTがNACKINTに先立ち検出されます。 ARDYINTの処理ではNACKの受信判定を行っており、NACK受信時にはNACKINTフラグをクリアするとともにSTOP conditionを送信するように処理されております。 ここでNACINTフラグがクリアされるため、割り込みハンドラでI2CISRCを読み出しても、’2’が読み出せることはございません。 NACK受信を上位アプリで検出したい場合は、この割り込みハンドラのNACK検出時に何らかの変数・フラグへNACK検出状態をセットして上位アプリで参照するなど、ソフトウェアの追加をお願いいたします。 2018年10月26日 4:10 PM #3940 返信 Yojiro従業員 NACKが検出されたときの処理ですが、ご検討頂いている処理で問題ございません。 投稿者 投稿 5件の投稿を表示中 - 1 - 5件目 (全5件中)