91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32F103驅(qū)動QMI8658A輸出加速度陀螺儀數(shù)據(jù)

jf_88434166 ? 來源:jf_88434166 ? 作者:jf_88434166 ? 2026-02-27 09:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

簡介

QMI8658A 是上海矽睿(QST)推出的一款高性能 6 軸慣性測量單元(IMU)芯片,集成了一個 3-軸加速度計和一個 3-軸陀螺儀,用于精確感知和追蹤設(shè)備的運(yùn)動與姿態(tài)。它支持 I3C、I2C 和 SPI 通信接口,具有 低噪聲、高分辨率(16 位)、寬動態(tài)范圍和低功耗 的特點(diǎn),并內(nèi)置了 FIFO 緩存及溫度傳感器,適合智能穿戴、無人機(jī)、機(jī)器人、AR/VR、游戲控制器及其他需要運(yùn)動檢測的消費(fèi)電子與工業(yè)應(yīng)用。

在這里插入圖片描述

QMI8658A和QMI8658C區(qū)別

QMI8658系列有兩個版本的芯片,QMI8658A是低噪音版本,QMI8658C是標(biāo)準(zhǔn)版本。

芯片QMI8658AQMI8658C
傳感器類型6軸(3軸加速度+3軸陀螺儀)6軸(3軸加速度+3軸陀螺儀)
陀螺儀量程±16/32/64/128/256/512/1024/2048°/s±16/32/64/128/256/512/1024/2048°/s
加速度量程±2/4/8/16 g±2/4/8/16 g
最大輸出速率1000Hz1000Hz
內(nèi)置DSP有 運(yùn)動協(xié)處理器,用于基本動作檢測和功能(如步數(shù)、Tap/動作事件)等有高級DSP協(xié)處理器(AttitudeEngine),并可進(jìn)行復(fù)雜運(yùn)動編碼和傳感器融合
姿態(tài)融合算法無內(nèi)建高級 9D 融合算法支持 XKF3 9D 融合算法(需外接磁力計)
FIFO容量1536字節(jié)1536字節(jié)
通訊協(xié)議I3C, I2C , 3-wire or 4-wire SPII3C, I2C3-wire or 4-wire SPI
陀螺儀噪聲(典型)13 mdps/√Hz15 mdps/√Hz
加速度計噪聲(典型)150 μg/√Hz200 μg/√Hz

選型推薦:
如果你需要更低傳感器本底噪聲(更優(yōu)的原始陀螺/加速度噪聲)并側(cè)重于低功耗動作檢測與原始傳感器數(shù)據(jù)處理,QMI8658A 更合適。
如果你需要板級/系統(tǒng)級的姿態(tài)輸出(內(nèi)置高性能傳感器融合、AttitudeEngine 與指定的方向精度),并想減少主機(jī)處理負(fù)擔(dān),QMI8658C 是更好的選擇。

QMI8658A引腳定義

上面表格是芯片支持的通訊協(xié)議,這里使用的是模塊進(jìn)行測試,模塊的CS引腳已經(jīng)拉高到3.3V,所以只能用IIC進(jìn)行測試,沒法使用SPI通訊。

引腳引腳定義
VCC供電電壓3.3/5V
GND供電地
SCL串行時鐘
SDA串行數(shù)據(jù)線
XDA接從器件SDA,無從器件不接(或接VDDIO,GND)
XCL接從器件SCL,無從器件不接(或接VDDIO,GND)
ADO模塊默認(rèn)下拉接地( AD0=0,IIC地址:0x6B;AD0=1,IIC地址:0x6A )
INT接的是芯片的INT1,INT2上拉到3.3V

以下是IIC的接線圖,這里模塊的布線已經(jīng)把外圍電路處理好了,所以可以直接使用IIC進(jìn)行通訊。
在這里插入圖片描述

QMI8658A寄存器

這里提供了兩個通用寄存器存放芯片ID以及版本ID。
1.地址00H的ID寄存器,讀取數(shù)據(jù)為0x05才是正常。
2.地址01H的Revision ID寄存器,讀取數(shù)據(jù)為0x7c才是正常。(這里版本號要看對應(yīng)手冊,目前官網(wǎng)更新最新的是D版本的手冊是0x7c,有一些舊的手冊版本號是0x68,這個要根據(jù)自己購買的產(chǎn)品確認(rèn)好)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

代碼驅(qū)動

接線

STM32F103C8T6QMI8658OLED
PB10--SCL
PB11--SDA
PB8SCL--
PB9SDA--
3.3VVCCVCC
GNDGNDGND

代碼

mian.c

uint8_t ID,R_ID;                        //定義用于存放ID號的變量
int16_t AX, AY, AZ, GX, GY, GZ;			//定義用于存放各個數(shù)據(jù)的變量
int main(void)
{
	/*模塊初始化*/
	OLED_Init();		//OLED初始化
	qmi8658_init();		//QMI8658初始化
    
	/*顯示ID號*/
	OLED_ShowString(1, 1, "ID:");		    //顯示靜態(tài)字符串
	ID = QMI8658_GetID();				    //獲取QMI8658的ID號
	OLED_ShowHexNum(1, 4, ID, 2);		    //OLED顯示ID號
	
    /*顯示REVISION_ID號*/
	OLED_ShowString(1, 8, "R_ID:");		    //顯示靜態(tài)字符串
	R_ID = QMI8658_GetRID();				//獲取QMI8658的ID號
	OLED_ShowHexNum(1, 13, R_ID, 2);		//OLED顯示ID號
    Delay_ms(2000);
    
    /*顯示加速度和陀螺儀數(shù)據(jù)*/
    OLED_ShowString(1, 1, "Acc   ");
    OLED_ShowString(1, 8, "Gyro   ");
    
	while (1)
	{
		QMI8658_GetData(&AX, &AY, &AZ, &GX, &GY, &GZ);		//獲取QMI8658的數(shù)據(jù)
		OLED_ShowSignedNum(2, 1, AX, 5);					//OLED顯示數(shù)據(jù)
		OLED_ShowSignedNum(3, 1, AY, 5);
		OLED_ShowSignedNum(4, 1, AZ, 5);
		OLED_ShowSignedNum(2, 8, GX, 5);
		OLED_ShowSignedNum(3, 8, GY, 5);
		OLED_ShowSignedNum(4, 8, GZ, 5);
	}
}

QMI8658.c

#include "stm32f10x.h"
#include "math.h"
#include "MyI2C.h"
#include "qmi8658.h"
#include "Delay.h"

/* 全局變量緩存區(qū) */
qmi8658_state g_imu;

/**
  * 函    數(shù):QMI8658寫寄存器
  * 參    數(shù):RegAddress 寄存器地址,范圍:參考QMI8658手冊的寄存器描述
  * 參    數(shù):Data 要寫入寄存器的數(shù)據(jù),范圍:0x00~0xFF
  * 返 回 值:無
  */
void qmi8658_write_one_byte(uint8_t RegAddress, uint8_t Data)
{
	MyI2C_Start();						//I2C起始
	MyI2C_SendByte((QMI8658_ADDRESS < 1) | 0x00);	//發(fā)送從機(jī)地址,讀寫位為0,表示即將寫入
	MyI2C_ReceiveAck();					//接收應(yīng)答
	MyI2C_SendByte(RegAddress);			//發(fā)送寄存器地址
	MyI2C_ReceiveAck();					//接收應(yīng)答
	MyI2C_SendByte(Data);				//發(fā)送要寫入寄存器的數(shù)據(jù)
	MyI2C_ReceiveAck();					//接收應(yīng)答
	MyI2C_Stop();						//I2C終止
}

/**
  * 函    數(shù):QMI8658讀寄存器
  * 參    數(shù):RegAddress 寄存器地址,范圍:參考QMI8658手冊的寄存器描述
  * 返 回 值:讀取寄存器的數(shù)據(jù),范圍:0x00~0xFF
  */
uint8_t qmi8658_read_one_byte(uint8_t RegAddress)
{
	uint8_t Data;
	
	MyI2C_Start();						//I2C起始
	MyI2C_SendByte((QMI8658_ADDRESS < 1) | 0x00);	//發(fā)送從機(jī)地址,讀寫位為0,表示即將寫入
	MyI2C_ReceiveAck();					//接收應(yīng)答
	MyI2C_SendByte(RegAddress);			//發(fā)送寄存器地址
	MyI2C_ReceiveAck();					//接收應(yīng)答
	
	MyI2C_Start();						//I2C重復(fù)起始
	MyI2C_SendByte((QMI8658_ADDRESS < 1) | 0x01);	//發(fā)送從機(jī)地址,讀寫位為1,表示即將讀取
	MyI2C_ReceiveAck();					//接收應(yīng)答
	Data = MyI2C_ReceiveByte();			//接收指定寄存器的數(shù)據(jù)
	MyI2C_SendAck(1);					//發(fā)送應(yīng)答,給從機(jī)非應(yīng)答,終止從機(jī)的數(shù)據(jù)輸出
	MyI2C_Stop();						//I2C終止
	
	return Data;
}

/* 寫多個連續(xù)寄存器(從 reg 開始,寫 len 個字節(jié))
 * reg: 寄存器地址
 * data: 要寫入的字節(jié)
 * data 指向長度至少為 len 的緩沖區(qū)
 * 返回 0 = 成功
 */
uint8_t qmi8568_write_nbytes(uint8_t reg, uint8_t *data, uint16_t len)
{
    uint16_t i;
    MyI2C_Start();                      //I2C起始
    MyI2C_SendByte((QMI8658_ADDRESS < 1) | 0x00);    //發(fā)送從機(jī)地址,讀寫位為0,表示即將寫入
    MyI2C_ReceiveAck();	                //接收應(yīng)答
    MyI2C_SendByte(reg);			    //發(fā)送寄存器地址
    MyI2C_ReceiveAck();	                //接收應(yīng)答

    for (i = 0; i < len; i++) 
    {
        MyI2C_SendByte(data[i]);
        MyI2C_ReceiveAck();
    }

    MyI2C_Stop();
    return 0;
}

/* 連續(xù)讀多個寄存器(從 reg 開始,讀取 len 字節(jié))
 * out_buf: 指向接收緩沖區(qū),至少 len 長
 */
uint8_t qmi8568_read_nbytes(uint8_t reg, uint8_t *out_buf, uint16_t len)
{
    uint16_t i;

    /* 寫寄存器地址 */
    MyI2C_Start();
    MyI2C_SendByte((QMI8658_ADDRESS < 1) | 0x00);
    MyI2C_ReceiveAck();
    MyI2C_SendByte(reg);
    MyI2C_ReceiveAck();
    /* 重復(fù)起始,切換到讀模式 */
    MyI2C_Start();
    MyI2C_SendByte((QMI8658_ADDRESS < 1) | 0x01);
    MyI2C_ReceiveAck();
    /* 依次讀取 len 字節(jié);對最后一個字節(jié)發(fā)送 NACK */
    for (i = 0; i < len; i++) {
        if (i == (len - 1))
        {   out_buf[i] = MyI2C_ReceiveByte(); /* 最后一個字節(jié) NACK */
            MyI2C_SendAck(1);	
        }
        else
        {   out_buf[i] = MyI2C_ReceiveByte(); /* 發(fā)送 ACK,繼續(xù)接收 */
            MyI2C_SendAck(0);
        }
    }
    MyI2C_Stop();
    return 0;
}

/**
  * 函    數(shù):QMI8658獲取ID號
  * 參    數(shù):無
  * 返 回 值:QMI8658的ID號
  */
uint8_t QMI8658_GetID(void)
{
	return qmi8658_read_one_byte(Register_WhoAmI);		//返回WHO_AM_I寄存器的值
}

/**
  * 函    數(shù):QMI8658獲取Revision ID號
  * 參    數(shù):無
  * 返 回 值:QMI8658的Revision ID號
  */
uint8_t QMI8658_GetRID(void)
{
	return qmi8658_read_one_byte(Register_Revision);	//返回Revision寄存器的值
}




/**
 * @brief   陀螺儀校準(zhǔn)
 * @param   無
 * @retval  檢查結(jié)果
 * @arg     0: 校準(zhǔn)成功
 * @arg     1: 校準(zhǔn)失敗
 */
uint8_t qmi8658_calibration(void)
{
    uint8_t sta = 0;
    qmi8658_write_one_byte(Register_Ctrl7, 0x00);   /* 關(guān)閉陀螺儀、加速度計 */
    qmi8658_write_one_byte(Register_Ctrl9, 0xA2);
    Delay_ms(2000);
    sta = qmi8658_read_one_byte(Register_COD_Status);
    if(sta == 0x00)
    {
        return 0;
    }else return 1;
}

/**
 * @brief   傳感器軟件復(fù)位
 * @param   無
 * @retval  無
 */
void qmi8658_reset(void)
{
    qmi8658_write_one_byte(Register_Reset, 0xB0); /* 復(fù)位QMI8658 */
    Delay_ms(150);
}

/**
 * @brief   讀取初始狀態(tài)寄存器
 * @param   無
 * @retval  讀取結(jié)果
 */
uint8_t qmi8658_read_statusint(void)
{
    return qmi8658_read_one_byte(Register_StatusInt);
}

/**
 * @brief   讀取狀態(tài)寄存器0
 * @param   無
 * @retval  讀取結(jié)果
 */
uint8_t qmi8658_read_status0(void)
{
    return qmi8658_read_one_byte(Register_Status0);
}

/**
 * @brief   讀取狀態(tài)寄存器1
 * @param   無
 * @retval  讀取結(jié)果
 */
uint8_t qmi8658_read_status1(void)
{
    return qmi8658_read_one_byte(Register_Status1);
}

/*****************************************************************************************************************/
/**
 * @brief   配置加速度計參數(shù)
 * @param   range       :量程
 * @param   odr         :odr輸出速率
 * @param   lpfEnable   :低通濾波器 :Qmi8658Lpf_Enable 打開,Qmi8658Lpf_Disable 關(guān)閉
 * @param   stEnable    :陀螺儀自檢 :Qmi8658St_Enable 自檢,Qmi8658St_Disable 不自檢
 * @retval  無
 */
void qmi8658_config_acc(enum qmi8658_accrange range, enum qmi8658_accodr odr, enum qmi8658_LpfConfig lpfEnable, enum qmi8658_StConfig stEnable)
{
    unsigned char ctl_dada;

    switch (range)
    {
        case Qmi8658accrange_2g:
            g_imu.ssvt_a = (1 < < 14);
            break;
        case Qmi8658accrange_4g:
            g_imu.ssvt_a = (1 < < 13);
            break;
        case Qmi8658accrange_8g:
            g_imu.ssvt_a = (1 < < 12);
            break;
        case Qmi8658accrange_16g:
            g_imu.ssvt_a = (1 < < 11);
            break;
        default:
            range = Qmi8658accrange_8g;
            g_imu.ssvt_a = (1 < < 12);
            break;
    }
    if (stEnable == Qmi8658St_Enable)
    {
        ctl_dada = (unsigned char)range | (unsigned char)odr | 0x80;
    } 
    else
    {
        ctl_dada = (unsigned char)range | (unsigned char)odr;
    }
    qmi8658_write_one_byte(Register_Ctrl2, ctl_dada);
    /* set LPF & HPF */
    qmi8568_read_nbytes(Register_Ctrl5, &ctl_dada, 1);
    ctl_dada &= 0xf0;
    if (lpfEnable == Qmi8658Lpf_Enable)
    {
        ctl_dada |= A_LSP_MODE_3;
        ctl_dada |= 0x01;
    }
    else
    {
        ctl_dada &= ~0x01;
    }
    qmi8658_write_one_byte(Register_Ctrl5, ctl_dada);
}

/**
 * @brief   配置陀螺儀參數(shù)
 * @param   range       :量程
 * @param   odr         :odr輸出速率
 * @param   lpfEnable   :低通濾波器 :Qmi8658Lpf_Enable 打開,Qmi8658Lpf_Disable 關(guān)閉
 * @param   stEnable    :陀螺儀自檢 :Qmi8658St_Enable 自檢,Qmi8658St_Disable 不自檢
 * @retval  無
 */
void qmi8658_config_gyro(enum qmi8658_gyrrange range, enum qmi8658_gyrodr odr, enum qmi8658_LpfConfig lpfEnable, enum qmi8658_StConfig stEnable)
{
    /* Set the CTRL3 register to configure dynamic range and ODR */
    unsigned char ctl_dada;

    /* Store the scale factor for use when processing raw data */
    switch (range)
    {
        case Qmi8658gyrrange_16dps:
            g_imu.ssvt_g = 2048;
            break;
        case Qmi8658gyrrange_32dps:
            g_imu.ssvt_g = 1024;
            break;
        case Qmi8658gyrrange_64dps:
            g_imu.ssvt_g = 512;
            break;
        case Qmi8658gyrrange_128dps:
            g_imu.ssvt_g = 256;
            break;
        case Qmi8658gyrrange_256dps:
            g_imu.ssvt_g = 128;
            break;
        case Qmi8658gyrrange_512dps:
            g_imu.ssvt_g = 64;
            break;
        case Qmi8658gyrrange_1024dps:
            g_imu.ssvt_g = 32;
            break;
        case Qmi8658gyrrange_2048dps:
            g_imu.ssvt_g = 16;
            break;
        default:
            range = Qmi8658gyrrange_512dps;
            g_imu.ssvt_g = 64;
            break;
    }

    if (stEnable == Qmi8658St_Enable)
    {
        ctl_dada = (unsigned char)range | (unsigned char)odr | 0x80;
    }   
    else
    {
        ctl_dada = (unsigned char)range | (unsigned char)odr;
    }
    qmi8658_write_one_byte(Register_Ctrl3, ctl_dada);

    /* Conversion from degrees/s to rad/s if necessary */
    /* set LPF & HPF */
    qmi8568_read_nbytes(Register_Ctrl5, &ctl_dada, 1);
    ctl_dada &= 0x0f;
    if (lpfEnable == Qmi8658Lpf_Enable)
    {
        ctl_dada |= G_LSP_MODE_3;
        ctl_dada |= 0x10;
    }
    else
    {
        ctl_dada &= ~0x10;
    }
    qmi8658_write_one_byte(Register_Ctrl5, ctl_dada);
}


/**
 * @brief   使能陀螺儀、加速度計 
 * @param   enableFlags :
 *          QMI8658_DISABLE_ALL  : 都不使能
 *          QMI8658_ACC_ENABLE   : 使能加速度計
 *          QMI8658_GYR_ENABLE   : 使能陀螺儀
 *          QMI8658_ACCGYR_ENABLE: 使能陀螺儀、加速度計
 * @retval  無
 */
void qmi8658_enablesensors(unsigned char enableFlags)
{
#if defined(QMI8658_SYNC_SAMPLE_MODE)
    g_imu.cfg.syncsample = 1;
    qmi8658_enable_ahb_clock(0);
    qmi8658_write_one_byte(Register_Ctrl7, enableFlags | 0x80);
#else
    qmi8658_write_one_byte(Register_Ctrl7, enableFlags);    
#endif
    g_imu.cfg.ensensors = enableFlags & 0x03;

    Delay_ms(2);
}

/**
 * @brief   配置QMI8658陀螺儀和加速度計的量程、輸出頻率參數(shù)等
 * @param   low_power : 0: 正常模式 1:低功耗模式
 * @retval  無
 */
void qmi8658_config_reg(unsigned char low_power)
{
    qmi8658_enablesensors(QMI8658_DISABLE_ALL);
    if (low_power)
    {
        g_imu.cfg.ensensors = QMI8658_ACC_ENABLE;           
        g_imu.cfg.accrange = Qmi8658accrange_8g;
        g_imu.cfg.accodr = Qmi8658accodr_LowPower_21Hz;
        g_imu.cfg.gyrrange = Qmi8658gyrrange_1024dps;
        g_imu.cfg.gyrodr = Qmi8658gyrodr_250Hz;
    }
    else
    {
        g_imu.cfg.ensensors = QMI8658_ACCGYR_ENABLE;    /* 使能陀螺儀、加速度計 */
        g_imu.cfg.accrange = Qmi8658accrange_16g;       /* ±16g */
        g_imu.cfg.accodr = Qmi8658accodr_500Hz;         /* 500Hz采樣 */
        g_imu.cfg.gyrrange = Qmi8658gyrrange_128dps;    /* ±128dps */
        g_imu.cfg.gyrodr = Qmi8658gyrodr_500Hz;         /* 500Hz采樣 */
    }

    if (g_imu.cfg.ensensors & QMI8658_ACC_ENABLE)
    {
        qmi8658_config_acc(g_imu.cfg.accrange, g_imu.cfg.accodr, Qmi8658Lpf_Enable, Qmi8658St_Enable); /* 設(shè)置參數(shù)并開啟加速度計自檢和低通濾波器 */
    }
    if (g_imu.cfg.ensensors & QMI8658_GYR_ENABLE)
    {
        qmi8658_config_gyro(g_imu.cfg.gyrrange, g_imu.cfg.gyrodr, Qmi8658Lpf_Enable, Qmi8658St_Enable);/* 設(shè)置參數(shù)并開啟陀螺儀自檢和低通濾波器 */
    }
}

/**
 * @brief   初始化QMI8658
 * @param   無
 * @retval  初始化結(jié)果
 * @arg     0: 成功
 * @arg     1: 失敗
 */
uint8_t qmi8658_init(void)
{
    MyI2C_Init();									//先初始化底層的I2C
    qmi8658_reset();                                /* 復(fù)位傳感器 */
    
    qmi8658_write_one_byte(Register_Ctrl1, 0x60);   /* I2C驅(qū)動 */
    qmi8658_write_one_byte(Register_Ctrl7, 0x00);   /* 關(guān)閉陀螺儀、加速度計 */
    
    qmi8658_config_reg(0);                          /* 配置陀螺儀和加速度計的量程和數(shù)據(jù)輸出速率等參數(shù) */
    qmi8658_enablesensors(g_imu.cfg.ensensors);     /* 使能陀螺儀、加速度計 */

    return 0;
}

/**
  * 函    數(shù):QMI8658獲取數(shù)據(jù)
  * 參    數(shù):AccX AccY AccZ 加速度計X、Y、Z軸的數(shù)據(jù),使用輸出參數(shù)的形式返回,范圍:-32768~32767
  * 參    數(shù):GyroX GyroY GyroZ 陀螺儀X、Y、Z軸的數(shù)據(jù),使用輸出參數(shù)的形式返回,范圍:-32768~32767
  * 返 回 值:無
  */
void QMI8658_GetData(int16_t *AccX, int16_t *AccY, int16_t *AccZ, 
						int16_t *GyroX, int16_t *GyroY, int16_t *GyroZ)
{
	uint8_t DataH, DataL;								//定義數(shù)據(jù)高8位和低8位的變量
	
	DataH = qmi8658_read_one_byte(Register_Ax_H);		//讀取加速度計X軸的高8位數(shù)據(jù)
	DataL = qmi8658_read_one_byte(Register_Ax_L);		//讀取加速度計X軸的低8位數(shù)據(jù)
	*AccX = (DataH < < 8) | DataL;						//數(shù)據(jù)拼接,通過輸出參數(shù)返回
	
	DataH = qmi8658_read_one_byte(Register_Ay_H);		//讀取加速度計Y軸的高8位數(shù)據(jù)
	DataL = qmi8658_read_one_byte(Register_Ay_L);		//讀取加速度計Y軸的低8位數(shù)據(jù)
	*AccY = (DataH < < 8) | DataL;						//數(shù)據(jù)拼接,通過輸出參數(shù)返回
	
	DataH = qmi8658_read_one_byte(Register_Az_H);		//讀取加速度計Z軸的高8位數(shù)據(jù)
	DataL = qmi8658_read_one_byte(Register_Az_L);		//讀取加速度計Z軸的低8位數(shù)據(jù)
	*AccZ = (DataH < < 8) | DataL;						//數(shù)據(jù)拼接,通過輸出參數(shù)返回
	
	DataH = qmi8658_read_one_byte(Register_Gx_H);		//讀取陀螺儀X軸的高8位數(shù)據(jù)
	DataL = qmi8658_read_one_byte(Register_Gx_L);		//讀取陀螺儀X軸的低8位數(shù)據(jù)
	*GyroX = (DataH < < 8) | DataL;						//數(shù)據(jù)拼接,通過輸出參數(shù)返回
	
	DataH = qmi8658_read_one_byte(Register_Gy_H);		//讀取陀螺儀Y軸的高8位數(shù)據(jù)
	DataL = qmi8658_read_one_byte(Register_Gy_L);		//讀取陀螺儀Y軸的低8位數(shù)據(jù)
	*GyroY = (DataH < < 8) | DataL;						//數(shù)據(jù)拼接,通過輸出參數(shù)返回
	
	DataH = qmi8658_read_one_byte(Register_Gz_H);		//讀取陀螺儀Z軸的高8位數(shù)據(jù)
	DataL = qmi8658_read_one_byte(Register_Gz_L);		//讀取陀螺儀Z軸的低8位數(shù)據(jù)
	*GyroZ = (DataH < < 8) | DataL;						//數(shù)據(jù)拼接,通過輸出參數(shù)返回
}

現(xiàn)象

在這里插入圖片描述

總結(jié)

這里顯示的是實(shí)時從寄存器獲取的數(shù)據(jù),如果要更精確的數(shù)據(jù),需要對代碼進(jìn)行加算法去獲取更準(zhǔn)確的數(shù)據(jù)再開發(fā)。
需要代碼的可以在評論區(qū)留言郵箱哦!

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32F103
    +關(guān)注

    關(guān)注

    34

    文章

    495

    瀏覽量

    67675
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    無人機(jī)IMU 雙核心深度解析:加速度計與陀螺儀的分工、價值及融合邏輯

    ER-MIMU-063A的核心是陀螺儀(角速度感知)和加速度計(線速度感知)的組合,二者是互補(bǔ)的物理量測量器件——單獨(dú)使用各有明顯短板,無法
    的頭像 發(fā)表于 02-05 14:25 ?962次閱讀
    無人機(jī)IMU 雙核心深度解析:<b class='flag-5'>加速度</b>計與<b class='flag-5'>陀螺儀</b>的分工、價值及融合邏輯

    國產(chǎn)6軸IMU陀螺儀矽睿代理商

    國產(chǎn)優(yōu)秀陀螺儀傳感器 QMI8658A
    的頭像 發(fā)表于 01-15 10:24 ?1118次閱讀

    STM32H5開發(fā)陀螺儀LSM6DSV16X(1)----輪詢獲取陀螺儀數(shù)據(jù)

    本文將介紹如何通過輪詢(Polling)方式從LSM6DSV16X六軸慣性傳感器中獲取陀螺儀數(shù)據(jù)。輪詢模式是一種常用的傳感器讀取方式,主控MCU定期查詢陀螺儀輸出寄存器,無需依賴中斷機(jī)
    的頭像 發(fā)表于 12-22 17:28 ?5325次閱讀
    <b class='flag-5'>STM32</b>H5開發(fā)<b class='flag-5'>陀螺儀</b>LSM6DSV16X(1)----輪詢獲取<b class='flag-5'>陀螺儀</b><b class='flag-5'>數(shù)據(jù)</b>

    多軸陀螺儀怎么選?

    陀螺儀型號:HLK-AS201-66軸=3軸加速度計+3軸陀螺儀核心優(yōu)勢價格最低:無磁力計和氣壓計,硬件成本最優(yōu)動態(tài)響應(yīng)快:數(shù)據(jù)量小,處理延遲低即插即用:無需磁場校
    的頭像 發(fā)表于 12-22 15:27 ?683次閱讀
    多軸<b class='flag-5'>陀螺儀</b>怎么選?

    什么是光纖陀螺儀?陀螺儀有哪些作用?

    陀螺儀是干什么用的?陀螺儀是用來感知和測量物體旋轉(zhuǎn)的一個傳感器。簡單來說,它可以幫助設(shè)備知道自己當(dāng)前的角度和運(yùn)動方向。通常,我們會在智能手機(jī)、無人機(jī)、VR設(shè)備等科技產(chǎn)品中看到陀螺儀的身影。我第一次
    的頭像 發(fā)表于 08-26 17:36 ?2287次閱讀
    什么是光纖<b class='flag-5'>陀螺儀</b>?<b class='flag-5'>陀螺儀</b>有哪些作用?

    MEMS陀螺儀正在取代光纖陀螺儀

    、處理與輸出。 MEMS陀螺如何“感知”旋轉(zhuǎn)? 別被名字迷惑!現(xiàn)代MEMS陀螺儀并非依靠傳統(tǒng)陀螺的旋轉(zhuǎn)飛輪。其核心原理是科里奧利力。想象一下: 芯片內(nèi)部有微小的振動質(zhì)量塊(“
    的頭像 發(fā)表于 07-08 16:45 ?1060次閱讀

    振動陀螺儀傳感器的工作原理

    陀螺儀傳感器,也稱為角速率傳感器或角速度傳感器,是一種感測角速度的設(shè)備。陀螺儀傳感器種類繁多,比較常見的有機(jī)械陀螺儀,光學(xué)
    的頭像 發(fā)表于 06-16 16:29 ?1287次閱讀
    振動<b class='flag-5'>陀螺儀</b>傳感器的工作原理

    ADXRS622角速度陀螺儀技術(shù)手冊

    ADXRS622是一款功能完備、成本低廉的角速率傳感器(陀螺儀),采用ADI公司的表面微加工工藝制造,單芯片上集成了全部必需的電子器件。該器件制造技術(shù)與高可靠性汽車安全氣囊加速度計所用的大規(guī)模BiMOS工藝相同。
    的頭像 發(fā)表于 05-07 16:38 ?1102次閱讀
    ADXRS622角<b class='flag-5'>速度</b><b class='flag-5'>陀螺儀</b>技術(shù)手冊

    ADXRS620角速度陀螺儀技術(shù)手冊

    ADXRS620是一款功能完備、成本低廉的角速率傳感器(陀螺儀),采用ADI公司的表面微加工工藝制造,單芯片上集成了全部必需的電子器件。該器件制造技術(shù)與高可靠性汽車安全氣囊加速度計所用的大規(guī)模BiMOS工藝相同。
    的頭像 發(fā)表于 05-07 16:05 ?969次閱讀
    ADXRS620角<b class='flag-5'>速度</b><b class='flag-5'>陀螺儀</b>技術(shù)手冊

    ADXRS624角速度陀螺儀技術(shù)手冊

    ADXRS624是一款功能完備、成本低廉的角速率傳感器(陀螺儀),采用ADI公司的表面微加工工藝制造,單芯片上集成了全部必需的電子器件。該器件制造技術(shù)與高可靠性汽車安全氣囊加速度計所用的大規(guī)模BiMOS工藝相同。
    的頭像 發(fā)表于 05-07 15:41 ?1001次閱讀
    ADXRS624角<b class='flag-5'>速度</b><b class='flag-5'>陀螺儀</b>技術(shù)手冊

    ADXRS623角速度陀螺儀技術(shù)手冊

    ADXRS623是一款功能完備、成本低廉的角速率傳感器(陀螺儀),采用ADI公司的表面微加工工藝制造,單芯片上集成了全部必需的電子器件。該器件制造技術(shù)與高可靠性汽車安全氣囊加速度計所用的大規(guī)模BiMOS工藝相同。
    的頭像 發(fā)表于 05-07 15:34 ?1000次閱讀
    ADXRS623角<b class='flag-5'>速度</b><b class='flag-5'>陀螺儀</b>技術(shù)手冊

    ADXRS453高性能數(shù)字輸出陀螺儀技術(shù)手冊

    ADXRS453是面向工業(yè)、儀表儀器和高振動環(huán)境中穩(wěn)定應(yīng)用的角速率傳感器(陀螺儀)。ADXRS453采用先進(jìn)的差分四傳感器設(shè)計,可抑制線性加速度的影響,能夠在惡劣的沖擊和振動環(huán)境中提供高精度速率檢測。
    的頭像 發(fā)表于 05-07 15:15 ?1422次閱讀
    ADXRS453高性能數(shù)字<b class='flag-5'>輸出</b><b class='flag-5'>陀螺儀</b>技術(shù)手冊

    adxl355是不是無法測量向心加速度

    加速度的值非常小遠(yuǎn)遠(yuǎn)小于正常值陀螺儀速度顯示約300度每秒,理論上加速度應(yīng)該是滿量程才對實(shí)際最大才1g
    發(fā)表于 04-16 07:56

    STM32F103×8/STM32F103×B MCU手冊

    參考第2.2節(jié):整個系列的完全兼容性。中密度STM32F103xx數(shù)據(jù)手冊必須與低、中、高密度STM 32 f 10 xx參考手冊一起閱讀。有關(guān)數(shù)據(jù)手冊和參考手冊的設(shè)備勘誤表信息,請參
    發(fā)表于 03-18 16:37 ?0次下載

    ASM330的速度隨機(jī)游走和加速度零偏不穩(wěn)定性參數(shù)如何獲?。?/a>

    我在手冊里只找到了陀螺儀的零偏不穩(wěn)定性和角度隨機(jī)游走,沒有看見速度隨機(jī)游走和加速度零偏不穩(wěn)定性,不知道如何獲取這個參數(shù)
    發(fā)表于 03-07 07:06