色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

驅動LSM6DS3TR-C實現高效運動檢測與數據采集(1)----獲取ID

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2023-11-13 15:45 ? 次閱讀

概述

本文將介紹如何驅動和利用LSM6DS3TR-C傳感器,實現精確的運動感應功能。LSM6DS3TR-C是一款先進的6軸慣性測量單元(IMU),集成了三軸加速度計和三軸陀螺儀,可用于測量和檢測設備的加速度、姿態和運動。

本文將提供LSM6DS3TR-C的基本介紹,包括其技術規格和主要特性。接下來,我們將詳細討論如何驅動LSM6DS3TR-C傳感器,包括硬件連接和軟件配置。我們將介紹常見的驅動方法和庫,以幫助讀者快速上手并實現基本的運動感應功能。

通過閱讀本文,讀者將獲得全面的指導,以驅動和利用LSM6DS3TR-C傳感器,實現準確、可靠的運動感應功能。

最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請:6_15061293 。
參考文檔:
[https://github.com/STMicroelectronics/STMems_Standard_C_drivers/tree/master/lsm6ds3tr-c_STdC]

[https://github.com/STMicroelectronics/STMems_Standard_C_drivers/blob/master/lsm6ds3tr-c_STdC/examples/lsm6ds3tr_c_read_data_polling.c]

在這里插入圖片描述

視頻教學

[https://www.bilibili.com/video/BV19P411Q7fP/

樣品申請

[https://www.wjx.top/vm/OhcKxJk.aspx#]

完整代碼下載

[https://download.csdn.net/download/qq_24312945/87921267]

通信模式

對于LSM6DS3TR-C,有兩種模式mode1和mode2,這兩種模式都可以使用SPI或者IIC進行通訊。
其中mode2可以通過IIC控制其他的從設備傳感器。

在這里插入圖片描述

管腳定義

在這里插入圖片描述

在這里插入圖片描述

IIC通信模式

上圖可以得知,在使用IIC通訊模式的時候,SA0是用來控制IIC的地址位的。
對應的IIC接口如下所示。
主要使用的管腳為CS、SCL、SDA、SA0。

在這里插入圖片描述

對于IIC的地址,可以通過SDO/SA0引腳修改。SDO/SA0引腳可以用來修改設備地址的最低有效位。如果SDO/SA0引腳連接到電源電壓,LSb(最低有效位)為'1'(地址1101011b);否則,如果SDO/SA0引腳連接到地線,LSb的值為'0'(地址1101010b)。

在這里插入圖片描述

具體地址如下所示。

在這里插入圖片描述

速率

該模塊支持的速度為普通模式(100k)和快速模式(400k)。

在這里插入圖片描述

LSM6DS3TR-C在Mode 1下參考圖

在這里插入圖片描述

生成STM32CUBEMX

用STM32CUBEMX生成例程,這里使用MCU為STM32G030C8。
配置時鐘樹,配置時鐘為64M。

在這里插入圖片描述

串口配置

查看原理圖,PA9和PA10設置為開發板的串口。

在這里插入圖片描述

配置串口。

在這里插入圖片描述

IIC配置

在這里插入圖片描述

配置IIC為快速模式,速度為400k。

在這里插入圖片描述

串口重定向

打開魔術棒,勾選MicroLIB

在這里插入圖片描述

在main.c中,添加頭文件,若不添加會出現 identifier "FILE" is undefined報錯。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函數聲明和串口重定向:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){
	HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
	return ch;
}
/* USER CODE END PFP */

IIC讀函數

參考例程序中對應的驅動程序為platform_read(),如下所示。

在這里插入圖片描述

由上面表格可以得知,地址為 0x6A(?0110 1010?),如果是讀操作,那么具體的地址為D5(1101 0101)。

#define LSM6DS3TRC_I2CADDR 0x6A
/***************************************************************************************************************
LSM6DS3TRC Read Command
****************************************************************************************************************/
void LSM6DS3TRC_ReadCommand(uint8_t reg_addr, uint8_t *rev_data, uint8_t length)
{
	if (lsm6ds3trc_mode == LSM6DS3TRC_MODE_I2C)
	{
		HAL_I2C_Mem_Read(&hi2c1, LSM6DS3TRC_I2CADDR < < 0x01, reg_addr, 1, rev_data, length, 100);
	}

}

IIC寫函數

參考例程序中對應的驅動程序為platform_write(),如下所示。

在這里插入圖片描述

由上面表格可以得知,地址為 0x6A(?0110 1010?),如果是寫操作,那么具體的地址為D4(1101 0100)。

#define LSM6DS3TRC_I2CADDR 0x6A
/***************************************************************************************************************
LSM6DS3TRC Write Command
****************************************************************************************************************/
void LSM6DS3TRC_WriteCommand(uint8_t reg_addr, uint8_t *send_data, uint16_t length)
{
	if (lsm6ds3trc_mode == LSM6DS3TRC_MODE_I2C)
		HAL_I2C_Mem_Write(&hi2c1, LSM6DS3TRC_I2CADDR < < 0x01, reg_addr, 1, send_data, length, 100);

}

參考程序初始化

在這里插入圖片描述

獲取ID

參考例程序中對應的獲取ID驅動程序,如下所示。

在這里插入圖片描述

可以通過獲取WHO_AM_I(0Fh)地址的值來判斷是否為LSM6DS3TR-C,如果正確,那么讀取的值應該為6A(?01101010?)。

在這里插入圖片描述

讀取函數如下所示。

#define LSM6DS3TRC_WHO_AM_I		0x0F
/***************************************************************************************************************
LSM6DS3TRC Get id
****************************************************************************************************************/
bool LSM6DS3TRC_GetChipID(void)
{
	uint8_t buf = 0;

	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_WHO_AM_I, &buf, 1);
	if (buf == 0x6a)
		return true;
	else
		return false;
}

具體波形如下所示。

在這里插入圖片描述

系統復位

系統復位可以操作寄存器CTRL3_C (12h)。

在這里插入圖片描述

由下面的文檔說明可以得知,重置的話可以將BOOT置為1,之后等待15ms,如果設置為高性能模式的話,需要將CTRL3_C寄存器的SW_RESET位設為1,等待50微秒(或等到CTRL3_C寄存器的SW_RESET位返回0),為了避免沖突,重啟和軟件重置不能同時執行(不要同時將CTRL3_C寄存器的BOOT位和SW_RESET位設為1)。上述流程必須按順序執行,所以需要多次操作CTRL3_C (12h)。

在這里插入圖片描述

參考例程序中對應的復位驅動程序和等待復位成功函數,如下所示。

在這里插入圖片描述

復位代碼如下所示。

#define LSM6DS3TRC_CTRL3_C		0x12
/***************************************************************************************************************
LSM6DS3TRC reboot and reset register
****************************************************************************************************************/
void LSM6DS3TRC_Reset(void)
{
	uint8_t buf[1] = {0};
	//reboot modules
	buf[0] = 0x80;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL3_C, buf, 1);//BOOT- >1
	HAL_Delay(15);

	//reset register
	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL3_C, buf, 1);//讀取SW_RESET 狀態
	buf[0] |= 0x01;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL3_C, buf, 1);//將CTRL3_C寄存器的SW_RESET位設為1 
	while (buf[0] & 0x01)
		LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL3_C, buf, 1);//等到CTRL3_C寄存器的SW_RESET位返回0
}

具體波形如下所示。

在這里插入圖片描述

在這里插入圖片描述

設置BDU

如果讀取加速度計/陀螺儀數據特別慢,建議在CTRL3_C寄存器中將BDU(塊數據更新)位設置為1。建議在CTRL3_C寄存器中將BDU(塊數據更新)位設置為1。

在這里插入圖片描述

在這里插入圖片描述

參考例程序中對應的設置BDU程序函數,如下所示。

在這里插入圖片描述

設置BDU代碼如下所示。

#define LSM6DS3TRC_CTRL3_C		0x12
/***************************************************************************************************************
LSM6DS3TRC Set Block Data Update
****************************************************************************************************************/
void LSM6DS3TRC_Set_BDU(bool flag)
{
	uint8_t buf[1] = {0};
	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL3_C, buf, 1);

	if (flag == true)
	{
		buf[0] |= 0x40;
		LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL3_C, buf, 1);
	}
	else
	{
		buf[0] &= 0xbf;
		LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL3_C, buf, 1);
	}

	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL3_C, buf, 1);
}

具體波形如下所示。

在這里插入圖片描述

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2550

    文章

    51035

    瀏覽量

    753077
  • 陀螺儀
    +關注

    關注

    44

    文章

    783

    瀏覽量

    98665
  • 數據采集
    +關注

    關注

    38

    文章

    6053

    瀏覽量

    113622
  • 運動檢測
    +關注

    關注

    0

    文章

    34

    瀏覽量

    12612
  • stm32cubemx
    +關注

    關注

    5

    文章

    283

    瀏覽量

    14791
收藏 人收藏

    評論

    相關推薦

    驅動LSM6DS3TR-C實現高效運動檢測數據采集(6)----FIFO數據讀取與配置

    LSM6DS3TR-C是STMicroelectronics公司推出的iNEMO慣性模塊,集成了三軸加速度計和三軸陀螺儀,具備低功耗、強大的運動檢測功能。該傳感器支持多種操作模式,并內置FIFO
    的頭像 發表于 07-18 10:58 ?1470次閱讀
    <b class='flag-5'>驅動</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實現</b><b class='flag-5'>高效</b><b class='flag-5'>運動檢測</b>與<b class='flag-5'>數據采集</b>(<b class='flag-5'>6</b>)----FIFO<b class='flag-5'>數據</b>讀取與配置

    lsm6ds3tr-c傳感器集合模式無法使用的原因?

    _FUNC_CFG_ACCESS, 0x80, 2);//第一外部I2C從接口的地址,寫0x58,讀0x59bsp_spi_write(LSM6DS3TR_SLV0_ADD, 0x58, 2);//即將寫入_讀取的寄存器
    發表于 03-07 06:26

    LSM6DS3TR-C使用時工作電流比datasheet上大很多是什么原因?

    使用場景是LSM6DS3TR-C通過SPI一拖四連接單片機,一共有四路這樣的一拖四。 測試時發現電流很大,感覺有點不對,編寫程序使LSM6DS3TR-C間隔5s一個一個使能,會發現穩壓源的輸出電流從
    發表于 03-07 08:08

    請問LSM6DS3TRLSM6DS3TR-C兩個型號能否完全兼容?

    LSM6DS3TR停產買不到了,準備切換LSM6DS3TR-C型號使用。 請問兩者有什么差別?能否直接替換?有成功替換案例嗎?
    發表于 03-14 06:40

    LSM6DS3TR-C數據讀取異常是安利的問題?怎么處理?

    我在使用lsm6ds3tr-c 6軸傳感器時發現,讀取的溫度以及角速度值異常,配置為官方lsm6ds3tr_c_read_data_polling.c文件中
    發表于 03-19 08:15

    LSM6DS3TR-C長時間讀取后角速度輸出為0是什么原因造成的?

    LSM6DS3TR-C 長時間讀取后角速度輸出為0
    發表于 03-20 06:28

    LSM6DS3TR-C角速度輸出為0是什么原因導致的?

    LSM6DS3TR-C在長時間休眠后(6小時以上),角速度輸出為0,短時間休眠輸出正常,這是什么問題?
    發表于 03-21 06:27

    LSM6DS3TR-C的FIFO讀取數據出錯是什么原因造成的?怎么解決?

    使用LSM6DS3TR-C的FIFO,先獲取了FIFO的WaterM標志,該標志置位之后再去獲取當前存在FIFO緩存的數據長度,再去讀取FIFO中對應長度的
    發表于 03-27 06:05

    請問LSM6DS3TR-C有沒有windows下的測試工具?

    LSM6DS3TR-C有沒有windows下的測試工具
    發表于 05-20 06:22

    LSM6DS3TR-C的低功耗模式和高性能模式有什么區別

    如果我只在 12.5Hz 下操作加速度計,LSM6DS3TR-C 的低功耗模式和高性能模式有什么區別?
    發表于 12-09 06:47

    MEMS LSM6DSD/LSM6DS3/LSM6DSO是否比LSM6DSR具有更好的“抗沖擊性”?

    DSO數據表中“對機械沖擊的高魯棒性使得LSM6DS3TR-C 系統首選設計師創造和制造可靠的產品..”測試時,我們觀察到 LSM6DSD 和 LSM6DS3 的“抗沖擊性”優于
    發表于 02-02 09:21

    驅動LSM6DS3TR-C實現高效運動檢測數據采集(2)----配置濾波器

    LSM6DS3TR-C中,加速度計和陀螺儀可以獨立地開啟/關閉,并且可以擁有不同的ODR和功耗模式。 LSM6DS3TR-C有三種可用的操作模式: ● 僅加速度計活動,陀螺儀處于斷電狀態 ● 僅陀螺儀活動,加速度計處于斷電狀態 ● 加速度計和陀螺儀傳感器同時活動
    的頭像 發表于 11-14 09:45 ?1021次閱讀
    <b class='flag-5'>驅動</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實現</b><b class='flag-5'>高效</b><b class='flag-5'>運動檢測</b>與<b class='flag-5'>數據采集</b>(2)----配置濾波器

    驅動LSM6DS3TR-C實現高效運動檢測數據采集(3)----獲取傳感器數據

    一旦傳感器被正確初始化,可以通過SPI或I2C接口向傳感器發送讀取命令,并接收傳感器返回的數據。這個讀取過程包括獲取LSM6DS3TR傳感器提供的加速度計和陀螺儀
    的頭像 發表于 11-14 09:59 ?844次閱讀
    <b class='flag-5'>驅動</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實現</b><b class='flag-5'>高效</b><b class='flag-5'>運動檢測</b>與<b class='flag-5'>數據采集</b>(<b class='flag-5'>3</b>)----<b class='flag-5'>獲取</b>傳感器<b class='flag-5'>數據</b>

    驅動LSM6DS3TR-C實現高效運動檢測數據采集(4)----上報匿名上位機實現可視化

    LSM6DS3TR-C是單芯片“3軸陀螺儀 + 3軸加速度計”的慣性 測量單元(IMU), 五種種可選滿量程的陀螺儀(125/250/500/1000/2000 dps)和加速度計(2/4/8/16
    的頭像 發表于 11-14 10:05 ?899次閱讀
    <b class='flag-5'>驅動</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實現</b><b class='flag-5'>高效</b><b class='flag-5'>運動檢測</b>與<b class='flag-5'>數據采集</b>(4)----上報匿名上位機<b class='flag-5'>實現</b>可視化

    驅動LSM6DS3TR-C實現高效運動檢測數據采集(5)----姿態解算

    lsm6ds3trc包含三軸陀螺儀與三軸加速度計。 姿態有多種數學表示方式,常見的是四元數,歐拉角,矩陣和軸角。他們各自有其自身的優點,在不同的領域使用不同的表示方式。在四軸飛行器中使用到了四元數
    的頭像 發表于 11-14 10:11 ?817次閱讀
    <b class='flag-5'>驅動</b><b class='flag-5'>LSM6DS3TR-C</b><b class='flag-5'>實現</b><b class='flag-5'>高效</b><b class='flag-5'>運動檢測</b>與<b class='flag-5'>數據采集</b>(5)----姿態解算
    主站蜘蛛池模板: 日韩在线av免费视久久| 女人把腿张开叫男人桶免费视频| 国内精自品线一区91| 吉吉影音先锋av资源网| 久久理论片| 欧美视频 亚洲视频| 色 花 堂 永久 网站| 亚洲AV精品无码喷水直播间| 亚洲视频在线观看网站| 97在线国内自拍视频| 荡公乱妇HD中文字幕| 国产在线观看码高清视频| 久啪久久全部视频在线| 欧美牲交A欧美牲交| 午夜理论片YY4399影院| 在线一本码道高清| 看看妇女的B免费看| 欧美内射AAAAAAXXXXX| 午夜福利理论片在线播放| 伊人久久大香线蕉综合99| 99精品免费久久久久久久久日本| 古装性艳史电影在线看| 精品国产午夜肉伦伦影院| 男人网站在线| 亚洲爱视频| 99热热在线精品久久| 国产伦精品一区二区免费 | 99精品免费在线观看| 国产 亚洲 中文在线 字幕| 九九国产精品成人AV麻豆| 欧美人妖12p| 亚洲免费黄色| 把极品白丝老师啪到腿软| 国产三级级在线电影| 蜜臀AV人妻久久无码精品麻豆| 软糯白嫩双性受h| 在线毛片片免费观看| 高h辣h双处全是肉一对一| 就去色一色| 邪恶肉肉全彩色无遮琉璃神社| 2022国产麻豆剧传媒剧情|