micropython吧 关注:223贴子:197
  • 2回复贴,共1

【STMF407 Discovery】三轴加速度传感器的研究,MicroPython开发

只看楼主收藏回复


就是这玩意。把micropython移植到上面。STMF407 Discovery ,意法半导体生产的STM32开发板。自带一个加速段传感器SIL302DL。我的PCB版本是MB997A,带的是SIL302DL三轴加速度传感器,如果是MB997B,带的是LIS3DSH。使用差不多,板子默认使用SPI接口驱动SIL302DL。
官方自带的MicroPython固件不带这个传感器的驱动,需要自己编译的时候加上staccel.py。
我把编译好的上传到百度网盘,需要的自取

还编译进了ssd1306 OLED 屏的驱动。
未完待续........


1楼2019-10-24 21:57回复
    传感器的方向定义:

    使用rshell 连上开发板测试。
    ~$ rshell --buffer-size=30 -p /dev/ttyS4
    /home/xdl> repl
    MicroPython v1.11-427-gd5cbee3cf-dirty on 2019-10-24; F4DISC with STM32F407
    Type "help()" for more information.
    >>>
    >>> import staccel
    >>> accel=staccel.STAccel() # 初始化一个实例
    >>> accel. # 可使用的方法和属性
    __class__ __init__ __module__ __qualname__
    __dict__ x y spi
    convert_raw_to_g read_bytes write_bytes
    read_id z xyz cs_pin
    who_am_i sensitivity
    >>> accel.who_am_i # 返回加速度传感器的寄存器ID地址
    59
    >>> bin(59)
    '0b111011'
    对比LIS302DL数据手册上的Who_Am_I地址

    相同说明能够正常使用。。。
    分别获取X,Y,Z方向上的加速度值
    >>> accel.x()
    0.288
    >>> accel.y()
    -0.036
    >>> accel.z()
    0.81
    >>> accel.xyz() # 返回三个方向上加速度的三元组
    (-0.306, 0.306, 1.008)


    2楼2019-10-24 22:17
    回复
      2025-05-14 02:06:03
      广告
      官方的staccel驱动默认设置了采样率是100Hz,即一秒采集100次数据,检测范围是+-2g,(g就是重力加速度=9.8m/s^2)
      查看SPI属性可以看到
      >>> accel.spi
      SPI(1, SPI.MASTER, baudrate=328125, prescaler=256, polarity=0, phase=1, bits=8)
      SPI的时钟极性polarity=0,时钟相位phase=1,使用的是SPI的模式1

      预分频器是256,传输的位数为8bit
      开发板时钟频率
      >>> import pyb
      >>> pyb.freq()
      (168000000, 168000000, 42000000, 84000000)
      为168MHz
      。。。。。。。
      参考:LIS302DL数据手册 http://www.hqchip.com/ic/LIS302DL
      SPI:http://docs.micropython.org/en/latest/library/pyb.SPI.html#pyb-spi


      3楼2019-10-24 23:04
      回复