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
    从信号上看,少了一个主设备的停止信号。看上去与从设备的工作模式有关系。
相关推荐
雅斯驰2 小时前
AES-128加密+滚动码认证:ATA5702W如何防御中继攻击与信号重放
运维·单片机·嵌入式硬件·物联网·自动化
iCxhust3 小时前
微机原理课程设计大综合---计数器
汇编·单片机·嵌入式硬件·课程设计·微机原理
搁浅小泽4 小时前
PCBA焊点的检测方法
单片机·嵌入式硬件·可靠性工程师
Deitymoon6 小时前
STM32——PWM控制舵机
stm32·单片机·嵌入式硬件
菜鸟的日志7 小时前
【嵌入系统】嵌入式学习笔记(一)
windows·笔记·嵌入式硬件·学习·ubuntu·操作系统
电子科技圈8 小时前
四大“门派”围攻边缘及端侧AI SoC市场“光明顶”
人工智能·嵌入式硬件·mcu·物联网·网络安全·音视频·语音识别
CHINA红旗下8 小时前
串口的使用
stm32·单片机·嵌入式硬件
踏着七彩祥云的小丑8 小时前
嵌入式测试学习第2天:欧姆定律 + 功率计算 + 电路单位换算
单片机·嵌入式硬件
BT-BOX9 小时前
Multisim 14.3 安装与汉化指南(附下载链接)
嵌入式硬件·物联网
不断提高9 小时前
别再写 while(1) 死循环了,嵌入式开发该换个活法
c语言·嵌入式硬件·嵌入式·状态模式