IMU调试方案

简介: 本文是关于IMU(惯性测量单元)QMI8658C型号的调试方案,包括I2C和SPI通信协议的详细介绍、接线方法、工作原理以及优缺点分析,并提供了相关的数据手册和开发资源链接。

1.IMU

型号 QMI8658C
IMU英文数据手册
参照连线与数据手册使用
类似的惯导模块开发https://www.cnblogs.com/rockyching2009/p/15071669.html
微雪 https://www.waveshare.net/wiki/RP2040-LCD-1.28
micro python :https://docs.micropython.org/en/latest/esp32/tutorial/intro.html
https://github.com/scottshambaugh/mpl\_quaternion\_views

1.I2C协议

一般 I²C 芯片常用的传输格式有下列二种:

(启始)-[控制]-[指令]-[资料]-(结束)
(启始)-[控制0]-[指令]-(r启始)-[控制1]-[资料]-(结束)
I²C-Bus
一个由单一主控端(一个微控制器)及三个从属节点(一个模拟数字转换器)、一个数字模拟转换器以及一另一个微控制器)所构成,并使用了上拉电阻Rp。

I²C只使用两条双向漏极开路(Open Drain)线,其中一条线为传输数据的串行资料线(SDA),另一条线是启动或停止传输以及发送时钟序列的串行时脉(SCL)线,这两条线上都有上拉电阻[2]。I²C允许相当大的工作电压范围,但典型的电压准位为+3.3V或+5v。
i2c阻抗50,usb阻抗100在做信号转换时阻抗不匹配会造成信号极差
相关资料:wiki_I2C

I2C协议下IMU接线

使用模式

按照使用模式,若IMU全程仅作为从设备使用,不作为外部磁力计的主设备,外部传感器总线被禁用,此时为Default Mode,即如下模式
Mode 1: Default mode of operation. In this mode, the QMI8658C is a slave device to a host processor that
communicates to it using one of the following interfaces: I2C, I3C, and SPI (3-wire or 4-wire modes). This slave
relationship to the host is the same for all operating modes. In Mode 1, the secondary interface is not enabled

O SDO/SA0 I2C Slave LSB bit of the device Address (SA0) ? 此处可能有200kΩ的内部上拉电阻
IO SDx VDDIO or GND
IO SCx VDDIO or GND
O INT1 Programmable Interrupt 1 for I2C and SPI 可编程中断口1
I VDDIO Power Supply for IO Pins IO引脚供电入口 3.3V
I GND Ground (0 V supply); is internally No Connect.
I GND Ground (0 V supply)
I VDD Power supply 供电入口3.3V
O INT2 Programmable Interrupt 2(INT2)/ Data Enable (DEN) 可编程中断口2 或 数据使能引脚
I CS I2C/ I3C /SPI-UI selection Pin. 片选引脚 chip select
(If 1: I2C-UI Mode: I2 C/I3C communication enabled, SPI idle mode)
(If 0: SPI-UI mode: I 2 C/I3C disabled)
IO SCL SPI-UI Serial Clock (SPC) (2)(3) SPI串行时钟 此处图纸文字有错漏
IO SDA I2C/I3C-UI Data (SDA) I2C数据接口 SPI四线模式的Data In(SDI)SPI三线模式下的Data IO(SDIO)

2.SPI协议

特别注意:In SPI mode (not in I2 C Mode), there is an internal pull down 200 kΩ resistor.
SCl口与SDA口 SPI模式下有内部下拉电阻200kΩ

串行外设接口(Serial Peripheral Interface Bus,SPI)

SPI协议下IMU接线

使用模式

按照使用模式,若IMU全程仅作为从设备使用,不作为外部磁力计的主设备,外部传感器总线被禁用,此时为Default Mode,即如下模式
Mode 1: Default mode of operation. In this mode, the QMI8658C is a slave device to a host processor that
communicates to it using one of the following interfaces: I2C, I3C, and SPI (3-wire or 4-wire modes). This slave
relationship to the host is the same for all operating modes. In Mode 1, the secondary interface is not enabled

O SDO/SA0 SPI-UI Data Out (SDO) in SPI-UI 4-Wire Mode. SPI data out口 ?此处可能有200kΩ的内部上拉电阻
IO SDx VDDIO or GND
IO SCx VDDIO or GND
O INT1 Programmable Interrupt 1 for I2C and SPI 可编程中断口1
I VDDIO Power Supply for IO Pins IO引脚供电入口 3.3V
I GND Ground (0 V supply); is internally No Connect.
I GND Ground (0 V supply)
I VDD Power supply 供电入口3.3V
O INT2 Programmable Interrupt 2(INT2)/ Data Enable (DEN) 可编程中断口2 或 数据使能引脚
I CS I2C/ I3C /SPI-UI selection Pin. 片选引脚 chip select
(If 1: I2C-UI Mode: I2 C/I3C communication enabled, SPI idle mode)
(If 0: SPI-UI mode: I 2 C/I3C disabled)
IO SCL SPI-UI Serial Clock (SPC) (2)(3) SPI串行时钟 SPI模式有内部下拉电阻200kΩ
IO SDA/SDI/SDIO SPI四线模式的Data In(SDI)SPI三线模式下的Data IO(SDIO)SPI模式有内部下拉电阻200kΩ

SPI总线规定了4个保留逻辑信号接口:

SCLK(Serial Clock):串列时脉,由主机发出
MOSI(Master Output, Slave Input):主机输出从机输入信号(数据由主机发出)
MISO(Master Input, Slave Output):主机输入从机输出信号(数据由从机发出)
SS(Slave Select):片选信号,由主机发出,一般是低电位有效

SPI设备之间使用全双工模式通信,是一个主机和一个或多个从机的主从模式。主机负责初始化帧,这个数据传输帧可以用于读与写两种操作,片选线路可以从多个从机选择一个来响应主机的请求。
SPI是一种事实标准,也就是说这种规范没有对应的技术标准。因此各个厂家生产的SPI器件配置不一样,不一定有互操作性。
SPI总线的通信操作可以在单个主设备与一或多个从机之间进行。

在只有单一从机的情况下,如果从机允许,SS线可以固定为逻辑低电平。然而有一些从机需要片选讯号的下降沿来触发动作,例如Maxim MAX1242 ADC在高→低转换时才会开始进行模数转换。对于多个从机,每个从机都需要一个独立的SS讯号。

大多数从属设备具有三态逻辑的特性,所以当器件未被选中时,它们的MISO讯号变为高阻抗(逻辑断开)。没有三态输出的器件不能与其他器件共享SPI总线段,但是可以使用外接的三态逻辑缓存来解决这个问题。
在这里插入图片描述

如图1所示,如果一个从芯片或从设备(slave)的SS管脚处于非激活状态(通常是低电平),那么这个从芯片或从设备就相当于一个聋子,不会对任何外来的输入信号做出反应。而如果其中某一从芯片的SS管脚处于激活状态的话,那它就能听到外来的输入信号,就能做出接收或回应。图1中,MISO是从芯片向主芯片传输数据的信道,MOSI是主芯片向从芯片传输数据的信道,SCLK是时钟信道(主芯片->从芯片)。

优点

SPI协议默认是全双工通信。
与漏极开路输出相反,SPI的推挽输出可提供良好的信号完整性和高速度
比I²C或SMBus更高的传输带宽 。 不限于任何最大时钟频率,可实现高速运行

缺点

也需要比I²C更多的IC线路
不支持动态添加节点(热插拔)。

没有从机检测机制,主机无法检测是否与从机断开。
没有错误检测机制,不像I²C在每个字节后有回复信号
没有规定中断,必须通过带外信号来实现中断,或者通过使用类似于USB 1.1和2.0的定期轮询来模拟中断

相关资料:wiki_SPI

微雪IMU设计:相关链接
https://www.waveshare.net/w/upload/6/60/RP2040-LCD-1.28-sch.pdf

目录
相关文章
|
10天前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
12 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
1月前
|
网络协议 NoSQL Anolis
开局一张图,debug全靠瞪|内核问题定位与静态分析实战
本文描述了一个在AnolisOS 8.8操作系统上遇到的内核崩溃问题的调试过程。
|
3月前
|
存储 JSON JavaScript
小程序优化:第三方SDK过大解决方案
小程序开发中,项目目录中存放过大的js包,会被警告影响手机端性能,同时让开发编译启动变得很慢。慢是其次,单是影响性能这一点,就需要解决一下。
|
4月前
|
C++
spdlog 日志库部分源码说明——日志格式设定,DIY你自己喜欢的调试信息,你能调试的远比你想象的还要丰富
spdlog 日志库部分源码说明——日志格式设定,DIY你自己喜欢的调试信息,你能调试的远比你想象的还要丰富
242 6
|
5月前
|
数据安全/隐私保护
PGA调整峰值,IDA分析调整Sa(T,ξ)反应谱
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV
2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV
205 0
|
机器学习/深度学习 传感器 移动开发
【中继优化】基于高效局部地图搜索算法实现无人机通信中继位置优化附matlab代码和复现论文
【中继优化】基于高效局部地图搜索算法实现无人机通信中继位置优化附matlab代码和复现论文
|
消息中间件 Arthas 运维
日志瘦身骚操作:从 5G 优化到 1G,牛逼!!
日志瘦身骚操作:从 5G 优化到 1G,牛逼!!
|
存储 自然语言处理 Java
Elixir 连续运行时代码覆盖率采集方案
## 1. 浅谈代码覆盖率 作为 SET 和 SWE, 我们经常需要编写单元测试或集成测试用例来验证系统/应用的正确性, 但同时我们也常会质疑我们的测试是否充分了. 这时测试覆盖率是可以辅助用来衡量我们测试充分程度的一种手段, 增强发布成功率与信心, 同时给了我们更多可思考的视角. 值的注意的是代码覆盖率高不能说明代码质量高, 但是反过来看, 代码覆盖率低, 代码质量不会高到哪里去. 大部分的编
346 0
Elixir 连续运行时代码覆盖率采集方案
|
算法 Java 微服务
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(上)
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(上)
为什么我建议线上高并发量的日志输出的时候不能带有代码位置(上)