bmi088-linux驱动(I2C)

电气特性:

在正常工作时,gyro 工作电流为5mA,acc 工作电流为150uA。

SPI 时钟和数据电平范围 0 -3.6

结构框图如下:

硬件连接图如下:
note:

  1. 通过PS引脚选择通讯协议,上拉引脚则选择的是I2C接口,(CSB1是给SPI片选使用的)。如下图:

  2. 上电后陀螺仪在正常模式,加速度传感器 处于抑制模式。改变加速度传感器模式:

  • 上电sensor
  • 等1ms
  • 写4 到寄存器to ACC_PWR_CTR
  • 等450 ms
  1. 数据宽度:陀螺仪和加速度计都是16bit ,temp sensor是11bit,都是有符号数据。

  2. 传感器信号都会经过一个低通滤波器,所以需要设置一个采样频率和截止频率。截止频率就是能够通过的最大频率,采样频率一般为最大频率的2.56 (截止频率(fc)=采样频率(fs) / 2.56)。

  3. 我试过软复位ACC和GORY。但是好像导致I2C总线故障了。是不是需要在 power save mode 下进行,待验证。(已验证,确实需要)

  4. FIFO部分:

  • 可以配置INT 引脚作为中断信号输入,这个信号由外部提供。当这个信号有效时,数据记录至FIFO。
  • 可以配置INT引脚作为输出引脚,当FIFO满或者超过设置水纹,产生输出信号。

I2C读数据,定义buf[6],buf[0] ->0x12 ... buf[5]->0x17
I2C写数据:

I2C调试注意事项:

  1. 时钟信号只有在发送数据时才会产生。无数据发送时,SDA和SCL高电平。
  2. I2C时钟信号频率默认为400Kbps。设置过小可能频率达不到要求。
    3. 当i2c时钟频率设置为400k,应用层设置为10ms读取数据时。
    读取数据信号图:
    连续读取GYRO和ACC时钟如下:

    数据线如下:

    可以看出两次数据读取时间间隔如下:4*60us = 2.4ms

设备树设置如下:

bash 复制代码
&i2c4 {
        status = "okay";
        clock-frequency = <400000>;
        BMI088: bmi088@18 {
                status = "okay";
                compatible = "iking,bmi088";
                reg = <0x18>;
                accelerometer {
                        status = "okay";
                        compatible = "iking,bmi088-accelerometer";
                        chip-address = <0x18>;
                };
                gyroscope {
                        status = "okay";
                        compatible = "iking,bmi088-gyroscope";
                        chip-address = <0x68>;
                };
        };
};

驱动和应用代码上传至:

https://download.csdn.net/download/qq_28219531/89306464

调试时注意:

  1. 如果读取芯片ID失败,可能端口配置问题。没配置或者配置冲突。可以使用示波器看时钟线有没有信号,频率是多少。
  2. 调试过程中出现了
    i2c_designware 8280000.i2c4: i2c_dw_handle_tx_abort: lost arbitration
    从信号上看,少了一个主设备的停止信号。看上去与从设备的工作模式有关系。
相关推荐
真的想上岸啊15 分钟前
学习51单片机01(安装开发环境)
嵌入式硬件·学习·51单片机
7yewh1 小时前
MCU程序加密保护(二)ID 验证法 加密与解密
单片机·嵌入式硬件·安全
YOYO--小天1 小时前
RS485和RS232 通信配置
linux·嵌入式硬件
小_楠_天_问1 小时前
第二课:ESP32 使用 PWM 渐变控制——实现模拟呼吸灯或音调变化
c语言·嵌入式硬件·mcu·esp32·arduino·pwm·esp32-s3
欢乐熊嵌入式编程2 小时前
智能手表项目风险评估与应对计划书
嵌入式硬件·物联网·目标跟踪·智能手表
JANYI20183 小时前
TTL、RS-232、RS-485电平转换详解
单片机·嵌入式硬件
平凡灵感码头3 小时前
基于智能家居项目 解析DHT11温湿度传感器
单片机·智能家居
昊昊昊昊昊明5 小时前
十天学会嵌入式技术之51单片机—day-10
单片机·嵌入式硬件·51单片机
赵谨言5 小时前
基于单片机的车灯智能控制系统设计与实现
经验分享·单片机·毕业设计
剑鞘的流苏5 小时前
STM32-USART串口通信(9)
stm32·单片机·嵌入式硬件