2

プラットフォーム - ARM9

I2C 経由で ARM9 に接続されたサードパーティ デバイスがあります。私の問題は、I2C の読み取り/書き込みがねじれていることです。IRQ ラインがアサートされているように見えますが、読み取るデータがある場合はアサート解除されません。サードパーティ デバイスがアドレス パケットに対して NACK を返すため、読み取りは失敗します。したがって、後続の書き込みはすべて失敗します。

割り込み処理が正常かどうか疑問に思っています。IRQ を処理する ISR では、割り込みを無効にし、割り込みハンドラーの登録を解除してから、I2C バスから読み取るようにタスクに通知します。最後に、割り込みを再度有効にします。

タスクが上記の信号を処理するときに、I2C バスからデータを読み取ろうとしましたが、失敗しました。最後に、読み取りを試みた後は常に ISR を再登録します。読み取り信号の処理中に発生する割り込みの無効化/有効化はありません。

私の質問は、I2C バスの読み取り/書き込み時に割り込みを無効にする必要がありますか?

選択したプログラミング言語は、独自の RTOS を使用した c です。

4

3 に答える 3

1

ほとんどの割り込みは、確認またはクリアする必要があります。割り込みの有効化/無効化、登録/登録解除、および処理について言及しています。割り込みが確認されていること、および/またはクリア/リセットされていることを確認してください。多くの場合、これには割り込み番号またはビットを割り込み保留レジスタに書き戻すことが含まれます。特定の ARM マニュアルまたは RTOS マニュアルを確認してください。

于 2009-03-13T23:40:32.123 に答える
0

ターゲット プラットフォームの割り込みを有効/無効にする必要があるかどうかは、特定のハードウェア/RTOS 実装に依存します。残念ながら、すべての ARM マイクロコントローラー ベンダー (STMicro、Freescale、Oki など) は、I2C ハードウェアを異なる方法で実装する能力を持っており、IRQ をクリアする方法について異なる要件を持っている可能性があります。

ハードウェアのデータシートのコピーを見つけることをお勧めします (および/または特定のハードウェアの部品番号をここに投稿して、ベンダーのドキュメントを提供できるようにします)。

于 2009-03-13T19:01:27.660 に答える