RM3100 I2C STM32 ドライバ(C実装)

Library

概要

本リポジトリは、RM3100磁気センサー(地磁気センサ)をSTM32マイコンからI2C経由で扱うためのC言語ドライバ実装です。ヘッダ(RM3100.H)と実装(RM3100.C)、およびREADMEとライセンスが含まれるシンプルな構成で、センサの初期化、レジスタ読み書き、磁場データの取得と基本的な変換処理を行う関数群が提供されていることが想定されます。STM32のHALやLL、あるいは独自のI2Cレイヤへ容易に移植できる設計で、組み込み開発やセンサ統合の出発点として便利です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 4
  • メインの言語: C

主な特徴

  • STM32向けにCで実装されたRM3100用のシンプルI2Cドライバ
  • 初期化、レジスタ読書き、生データ読み出しと変換関数を収録
  • 小さなファイル数で容易に組み込み・移植可能
  • ライセンスファイルが含まれ、用途に合わせて確認可能

技術的なポイント

このドライバはセンサとの低レベルI2C通信を抽象化し、上位アプリケーションが「初期化→測定要求→データ取得→変換」という典型的なフローで磁気データを扱えるように設計されています。RM3100は複数バイトの生データ(各軸の生値)を持つため、バイト順や符号拡張の扱いが重要です。ドライバ側ではI2Cのリード/ライト関数をまとめ、必要な遅延(測定完了待ち)やステータスチェックを入れることで通信の安定性を確保します。

STM32環境への統合は、ファイル内で直接HAL_I2C_xxxを呼ぶ実装か、もしくは抽象化されたコールバック関数(i2c_read, i2c_write)を通す実装のどちらかになります。前者は手早く使えますが移植性が低く、後者はプロジェクト固有のI2Cレイヤへ簡単に接続できます。エラーハンドリングはリトライやタイムアウトを設けること、I2Cバスの競合回避(セマフォやミューテックス)が重要です。生データをSI単位(ガウス/テスラ)に変換するには、RM3100の感度係数やモード(分解能、オーバーサンプリング)の情報に基づくスケーリングが必要で、ドライバ内で係数定義を用意しておくと便利です。

また、サンプリング周期や連続測定/単発測定のモード選択、測定時のノイズ対策(平均化・フィルタ)とキャリブレーション手順(オフセット除去、スケール補正)も運用面での重要ポイントです。割り込みやDRDYピンを活用する実装に拡張すればCPU負荷を低減できますが、その場合はGPIO割り込み処理とI2C読み出しの同期管理が必要になります。ドライバは小規模ながら、実運用に耐えるようエラーチェック、タイムアウト、移植性を意識した作りが求められます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • RM3100.C: file
  • RM3100.H: file

まとめ

シンプルで移植しやすく、STM32ベースの磁気センサ統合に適した出発点となるドライバです(約50字)。

リポジトリ情報:

READMEの抜粋:

RM3100_I2C_STM32_driver_C

RM3100_I2C_STM32_driver 使用C语言实现 …