Atmel AVR32 U3 から Energy Micro EFM32GG Cortex-M3 デバイスに I2C ドライバーを移植しています。ドライバは Atmel BSP を使用して I2C バスと通信し、スレーブ デバイスのアドレス、レジスタ アドレス、およびデータを提供します。
Energy Micro BSP は、レジスタ アドレスを実装していません。私の質問は、標準の I2C プロトコルに従って、送信されるデータの最初のバイトとしてレジスタ アドレスを追加することはできますか?
Atmel AVR32 U3 から Energy Micro EFM32GG Cortex-M3 デバイスに I2C ドライバーを移植しています。ドライバは Atmel BSP を使用して I2C バスと通信し、スレーブ デバイスのアドレス、レジスタ アドレス、およびデータを提供します。
Energy Micro BSP は、レジスタ アドレスを実装していません。私の質問は、標準の I2C プロトコルに従って、送信されるデータの最初のバイトとしてレジスタ アドレスを追加することはできますか?
I 2 Cプロトコルは標準化されていますが、I 2 C周辺機器は、異なるベンダー間で同一(または類似)であるとは言えません。Atmel実装からAPIを保持することは有用かもしれませんが(アプリケーションコードの移植性のために)、基本的な実装を完全に変更する必要があります。
ご使用の部品のリファレンスマニュアルには、 I2Cペリフェラルのレジスタインターフェイスとハードウェア操作について詳しく説明されています。I 2 Cプロトコル自体による類似性を除いて、対応するAtmelペリフェラルとはほとんど関係がないことがわかります。さらに、DMAの実装はパーツ間で異なるため、ドライバーも異なります。
Energy Microには、Cソースコードを使用したI2C操作に関するアプリケーションノートがあります。それはおそらくあなたが始めるべきところです。