九轴IMU自制记录

在这里插入图片描述

一、目前问题:

1、42652IMU读取ID值不正确

目前ID读出:0 正确ID:0X6F

2、磁力计读取ID值不正确

目前ID读出:0 正确ID:0X10

二、原因推测:

1、焊接不良(硬件问题)

2、驱动时序未编写对(软件问题)

三、目前在做的事情:

思路:

先排除软件问题再考虑硬件问题,抓取I2C和SPI通讯的时序,判断是否确实将时序发送了出去,如果时序是正确的,并且我只做读取器件ID的操作,器件只要正常上电,并且我确实向其发送的读取ID时序,不用考虑器件的初始化,我都应该能读到器件的ID,如果仍未读到ID,说明极大可能是硬件问题(焊接问题)

验证:

IIM42652(黄色时钟线,蓝色MOSI数据线):根据配置为SPI模式三,所以时钟空闲为高电平,第二个跳变沿采样,所以由主机发送的寻址信号为01110101,十六进制是0X75,根据官方手册,ID寄存器地址确实是0X75

结论:IIM42652的SPI的发送时序没问题
在这里插入图片描述

IST8308(黄色SCL,蓝色SDA): 时钟高电平时进行取样,故寻址信号为000110001,前七位为地址,第八位为读写位0为写1为读,第九位为应答位,故为寻址地址为0001100即0X0C,第八位为0写信号,第九位为1无应答

结论:跟IST8308的I2C通信时序也没问题,从最后一位应答位为1看得出,器件没有应答,故极大可能是焊接问题。
在这里插入图片描述

四、需要确定的事

IIM42652:

1、根据IIM42652官方手册,四线SPI的通讯模式是模式三,即CPOL = 1, CPHA = 1 ,时钟空闲时是高电平,第二个跳变沿进行采样已经确定配置正确

在这里插入图片描述

2、根据官方时序图,通信采用的是高位在前模式,即RT_SPI_MSB已经确定配置正确

3、根据官方手册,SPI的通讯频率最大24M,我通过示波器实际抓取,我的通讯频率是2.61M确定了在要求范围内

在这里插入图片描述

IST8308:

1、根据官方手册:I2C最大通信频率为400KHZ,实际通信频率通过示波器抓取为53.2KHZ,在条件范围内

相关推荐

  1. 暑假自律日记

    2024-05-11 03:00:02       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 03:00:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 03:00:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 03:00:02       87 阅读
  4. Python语言-面向对象

    2024-05-11 03:00:02       96 阅读

热门阅读

  1. QT--5

    QT--5

    2024-05-11 03:00:02      24 阅读
  2. 网络面试题目

    2024-05-11 03:00:02       29 阅读
  3. MySQL数据库——23.元数据

    2024-05-11 03:00:02       29 阅读
  4. android 获取唯一设备id

    2024-05-11 03:00:02       29 阅读
  5. k8s deployment

    2024-05-11 03:00:02       29 阅读
  6. typescript 命名空间、装饰器

    2024-05-11 03:00:02       36 阅读
  7. warm-up结合CosineAnnealingLR

    2024-05-11 03:00:02       37 阅读
  8. Hive优化(2)——join优化

    2024-05-11 03:00:02       43 阅读
  9. 序列练习.

    2024-05-11 03:00:02       31 阅读