RT-Thread+STM32L475VET6——icm20608传感器


文章目录

  • 前言
  • 一、板载资源
  • 二、具体步骤
    • 1.打开CubeMX进行配置
      • [1.1 使用外部高速时钟,并修改时钟树](#1.1 使用外部高速时钟,并修改时钟树)
      • [1.2 打开I2C3,参数默认即可(I2C根据自己需求调整)](#1.2 打开I2C3,参数默认即可(I2C根据自己需求调整))
      • [1.3 打开串口](#1.3 打开串口)
      • [1.4 生成工程](#1.4 生成工程)
    • [2. 添加icm20608软件包](#2. 添加icm20608软件包)
    • [3. 使能传感器,打开动态链接库](#3. 使能传感器,打开动态链接库)
    • [4. 配置I2C](#4. 配置I2C)
      • [4.1 使能I2C](#4.1 使能I2C)
      • [4.2 声明I2C](#4.2 声明I2C)
      • [4.3 添加I2C对应引脚](#4.3 添加I2C对应引脚)
    • [5. 烧录,下载](#5. 烧录,下载)

前言

本文采用开发板为STM32L475VET6(潘多拉开发板),使用RT_Thread Studio基于芯片开发模式,系统版本为4.0.3,完成icm20608传感器实验,实现加速度和陀螺仪数据的采集


一、板载资源

icm20608传感器采用I2C协议,本文采用软件模拟I2C

查阅数据手册:开发板使用的是 PC0 模拟时钟线SCL、PC1 模拟数据线 SDA,

二、具体步骤

1.打开CubeMX进行配置

1.1 使用外部高速时钟,并修改时钟树


1.2 打开I2C3,参数默认即可(I2C根据自己需求调整)

1.3 打开串口

1.4 生成工程

2. 添加icm20608软件包

3. 使能传感器,打开动态链接库

4. 配置I2C

打开borad.h,按照官方步骤配置

4.1 使能I2C

4.2 声明I2C

4.3 添加I2C对应引脚

5. 烧录,下载

测试代码

c 复制代码
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <icm20608.h>

int main(void)
{
    icm20608_device_t dev;
    rt_err_t result;
    dev=icm20608_init("i2c3");
    if(dev!=RT_NULL){
        rt_kprintf("icm20608 init success!");
    }else {
        rt_kprintf("icm20608 init fialure!");
    }

    // icm20608较准
    result=icm20608_calib_level(dev, 10);
    if(result==RT_EOK) //较准成功
    {
        rt_kprintf("calibation success!\r\n");
        rt_kprintf("accel_offset: X%6d  Y%6d  Z%6d\r\n", dev->accel_offset.x, dev->accel_offset.y, dev->accel_offset.z);
        rt_kprintf("gyro_offset : X%6d  Y%6d  Z%6d\r\n", dev->gyro_offset.x, dev->gyro_offset.y, dev->gyro_offset.z);
    }
    else
    {
        rt_kprintf("cablibation failure!\r\n");
    }

    //icm20608开始采集数据
    while (1)
    {
        rt_int16_t accel_x, accel_y, accel_z;
        rt_int16_t gyros_x, gyros_y, gyros_z;

        /* 读取三轴加速度 */
        result = icm20608_get_accel(dev, &accel_x, &accel_y, &accel_z);
        if (result == RT_EOK)
        {
            rt_kprintf("current accelerometer: accel_x%6d, accel_y%6d, accel_z%6d\r\n", accel_x, accel_y, accel_z);
        }
        else
        {
            rt_kprintf("The sensor does not work\r\n");
            break;
        }

        /* 读取三轴陀螺仪 */
        result = icm20608_get_gyro(dev, &gyros_x, &gyros_y, &gyros_z);
        if (result == RT_EOK)
        {
            rt_kprintf("current gyroscope    : gyros_x%6d, gyros_y%6d, gyros_z%6d\r\n", gyros_x, gyros_y, gyros_z);
        }
        else
        {
            rt_kprintf("The sensor does not work\r\n");
            break;
        }
        rt_thread_mdelay(1000);

    }

    return RT_EOK;
}

相关推荐
雅斯驰12 小时前
AES-128加密+滚动码认证:ATA5702W如何防御中继攻击与信号重放
运维·单片机·嵌入式硬件·物联网·自动化
iCxhust12 小时前
微机原理课程设计大综合---计数器
汇编·单片机·嵌入式硬件·课程设计·微机原理
搁浅小泽14 小时前
PCBA焊点的检测方法
单片机·嵌入式硬件·可靠性工程师
朴人15 小时前
【stm32无感FOC理论与实践:滑模观测器】【01 观测反电动势】
stm32·foc·永磁同步电机·无刷电机·pmsm·无感
Deitymoon16 小时前
STM32——PWM控制舵机
stm32·单片机·嵌入式硬件
菜鸟的日志16 小时前
【嵌入系统】嵌入式学习笔记(一)
windows·笔记·嵌入式硬件·学习·ubuntu·操作系统
电子科技圈17 小时前
四大“门派”围攻边缘及端侧AI SoC市场“光明顶”
人工智能·嵌入式硬件·mcu·物联网·网络安全·音视频·语音识别
CHINA红旗下17 小时前
串口的使用
stm32·单片机·嵌入式硬件
踏着七彩祥云的小丑18 小时前
嵌入式测试学习第2天:欧姆定律 + 功率计算 + 电路单位换算
单片机·嵌入式硬件
BT-BOX18 小时前
Multisim 14.3 安装与汉化指南(附下载链接)
嵌入式硬件·物联网