lsm6dsox — LSM6DSOX 6-axlig IMU¶
Drivrutin för ST:s iNEMO 6-axliga tröghetsmätningsenhet LSM6DSOX (3-axlig accelerometer plus 3-axligt gyroskop) över I2C eller SPI. Utöver den grundläggande IMU-utmatningen exponerar drivrutinen de inbyggda funktionerna på chipet: en konfigurerbar stegräknare (pedometer) och Machine Learning Core (MLC), som kan programmeras via UCF-filer exporterade från ST:s Unico-GUI-verktyg.
Exempel:
import time
from machine import I2C
from lsm6dsox import LSM6DSOX
# Use the I2C bus the LSM6DSOX is wired to on your board.
lsm = LSM6DSOX(I2C(1))
# SPI alternative (replace cs= with your board's chip-select pin):
# from machine import SPI, Pin
# lsm = LSM6DSOX(SPI(1), cs=Pin("CS"))
while True:
print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.accel()))
print("Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.gyro()))
time.sleep_ms(100)
Klasser¶
- class lsm6dsox.LSM6DSOX(bus: machine.I2C | machine.SPI, cs: machine.Pin | None = None, address: int = 0x6A, gyro_odr: float = 104, accel_odr: float = 104, gyro_scale: int = 2000, accel_scale: int = 4, ucf: str | None = None)¶
Skapar en
LSM6DSOX-instans. Busstypen detekteras automatiskt: ombusexponerarreadfrom_membehandlas den som enmachine.I2C, annars behandlas den som enmachine.SPIochcsmåste anges. Chipet mjukåterställs, det begärda ODR och skalan programmeras, och en MLC UCF-fil laddas om den anges.busAntingen en konfigurerad
machine.I2C- ellermachine.SPI-buss.csChip-select-
machine.Pinsom används i SPI-läge. Krävs närbusär en SPI-instans, ignoreras annars.address7-bitars I2C-adress för enheten. Är som standard
0x6A; vissa kort drar SDO-stiftet högt vilket väljer0x6B.gyro_odrGyroskopets utdatahastighet i Hz. Måste vara en av
0(av),1.6,3.33,6.66,12.5,26,52,104,208,416eller888.accel_odrAccelerometerns utdatahastighet i Hz. Samma uppsättning värden som
gyro_odr.gyro_scaleGyroskopets fullskaleområde i grader per sekund. Måste vara en av
250,500,1000eller2000.accel_scaleAccelerometerns fullskaleområde i g. Måste vara en av
2,4,8eller16.ucfValfri sökväg till en
.ucf-registerdumpfil från ST Unico-GUI. Om den anges tolkas filen och tillämpas på MLC under konstruktionen viaload_mlc().
- reset() None¶
Utför en mjukvaruåterställning via
CTRL3_Coch blockerar tills återställningsbiten nollställs. GenererarOSErrorom enheten inte återkommer inom tio försök.
- set_mem_bank(bank: int) None¶
Växlar registerbanken FUNC_CFG. Används internt för att komma åt registersidorna för inbyggda funktioner och sensorhubben; behövs sällan av applikationskod.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Aktiverar eller inaktiverar blocket för inbyggda funktioner. När
enableärTrueskrivs den två byte storaemb_ab-tupeln tillEMB_FUNC_EN_A/EMB_FUNC_EN_B. NärFalseläses de aktuella värdena, aktiveringsbitarna för MLC/pedometer nollställs, och de tidigare värdena returneras så att de kan återställas senare.
- load_mlc(ucf: str) None¶
Tillämpar ett MLC UCF-program från filen på sökvägen
ucf. Drivrutinen går igenom filen rad för rad, utför varjeAc <reg> <val>-skrivning, aktiverar sedan BDU, dirigerar MLC-händelser till avbrottsstift 1 och slår på de inbyggda funktionerna igen.
- mlc_output() bytes | None¶
Om nya MLC-resultat är tillgängliga (biten
MLC_STATUSär satt) returneras innehållet i de åtta registrenMLC0_SRC..MLC7_SRCsom ett bytes-liknande objekt. Annars returnerasNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Konfigurerar den inbyggda stegräknaren.
enableAktiverar eller inaktiverar stegdetektering på blocket för inbyggda funktioner.
debounceVärde för stegavstudsning som skrivs in i
PEDO_DEB_STEPS_CONF.int1_enableOm
Truedirigeras stegräknarhändelser tillINT1-stiftet.int2_enableOm
Truedirigeras stegräknarhändelser tillINT2-stiftet.