bmm150 --- BMM150 三軸磁力計

適用於 Bosch BMM150 三軸地磁感測器的 I2C 驅動程式。建構時,驅動程式會對裝置執行軟體重設、切換到所要求 ODR 下的正常運作模式,並讀取 Bosch 補償方程式所使用的修正暫存器,以將原始讀數轉換為已校正的磁場值。

備註

此驅動程式不支援 SPI 模式;傳入非 I2C 匯流排會引發 ValueError

範例:

import time
from machine import Pin, I2C
from bmm150 import BMM150

imu = BMM150(I2C(1, scl=Pin("P15"), sda=Pin("P14")))

while True:
    print("magnetometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.magnet()))
    time.sleep_ms(100)

類別

class bmm150.BMM150(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x10, magnet_odr: int = 30)

建構一個 BMM150 實例、對晶片執行軟體重設、驗證其晶片 ID、將其設定為 magnet_odr Hz 下的正常模式,並讀取出廠修正暫存器。

bus

感測器所連接的已設定 machine.I2C 匯流排。

cs

保留供 SPI 模式使用。必須維持為 None;目前尚未實作 SPI,且傳入非 I2C 匯流排會引發 ValueError

address

裝置的 7 位元 I2C 位址。預設為 0x10

magnet_odr

磁力計輸出資料速率,單位為 Hz。必須為 2681015202530 之一;其他數值都會引發 ValueError

magnet_raw() tuple[int, int, int, int]

輪詢資料就緒旗標並回傳原始有號的 (x, y, z, hall) 讀數(以整數表示),其中低於 LSB 的位元已先行移出。若在十次重試內仍無樣本可用,則引發 OSError("Data not ready")

magnet() tuple[float, float, float]

透過 magnet_raw() 讀取一筆新樣本,並回傳已補償的磁場向量 (x, y, z)。補償使用建構時讀取的修正值,並與 Bosch 提供的參考 C 驅動程式一致。