衡阳派盒市场营销有限公司

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

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

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

三軸加速度計(jì)LIS2DUX12開發(fā)(1)----輪詢獲取加速度數(shù)據(jù)

嵌入式單片機(jī)MCU開發(fā) ? 來源:嵌入式單片機(jī)MCU開發(fā) ? 作者:嵌入式單片機(jī)MCU開 ? 2024-05-17 15:22 ? 次閱讀

概述

最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請(qǐng):615061293 。

本文將介紹如何驅(qū)動(dòng)和利用LIS2DUX12傳感器,實(shí)現(xiàn)精確的運(yùn)動(dòng)感應(yīng)功能。
LIS2DUX12是一款數(shù)字式智能3軸線性加速度計(jì),其MEMSASIC旨在將盡可能低的電流消耗與豐富的特性(如常開抗混疊濾波、有限狀態(tài)機(jī) (FSM)、具有自適應(yīng)自配置 (ASC) 的機(jī)器學(xué)習(xí)內(nèi)核 (MLC))相結(jié)合。
FSM和MLC(帶有ASC)為LIS2DUX12提供了始終可用的出色邊緣處理能力。LIS2DUX12 MIPI I3C?從接口嵌入式128級(jí)FIFO緩沖區(qū)構(gòu)成了一系列功能,這讓該加速度計(jì)在物料清單、處理能力和功耗上成為系統(tǒng)集成方面的參考。
LIS2DUX12具有±2g/±4g/±8g/±16g的用戶可選滿量程,并且可通過1.6 Hz到800 Hz的輸出數(shù)據(jù)速率測量加速度。
LIS2DUX12包含專用內(nèi)部引擎,用于處理運(yùn)動(dòng)和加速度檢測,包括自由落體、喚醒、單/雙/三擊識(shí)別、活動(dòng)/休止,以及6D/4D方向。
LIS2DUX12采用纖薄的小型塑料平面網(wǎng)格陣列封裝(LGA),可確保在更大的溫度范圍(-40°C至+85°C)內(nèi)正常工作。

硬件準(zhǔn)備

首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是自己繪制的開發(fā)板,需要的可以進(jìn)行申請(qǐng)。 主控為STM32U073CC,加速度計(jì)為LIS2DUX12

視頻教學(xué)

[https://www.bilibili.com/video/BV1sr421G7ED/]

樣品申請(qǐng)

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

源碼下載

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

通信模式

對(duì)于LIS2DW12,可以使用SPI或者IIC進(jìn)行通訊。 最小系統(tǒng)圖如下所示。

在CS管腳為1的時(shí)候,為IIC模式

本文使用的板子原理圖如下所示。

管腳定義

IIC通信模式

在使用IIC通訊模式的時(shí)候,SA0是用來控制IIC的地址位的。
對(duì)于IIC的地址,可以通過SDO/SA0引腳修改。SDO/SA0引腳可以用來修改設(shè)備地址的最低有效位。如果SDO/SA0引腳連接到電源電壓,LSb(最低有效位)為’1’(地址0011001b);否則,如果SDO/SA0引腳連接到地線,LSb的值為’0’(地址0011000b)。

對(duì)應(yīng)的IIC接口如下所示。 主要使用的管腳為CS、SCL、SDA、SA0。

速率

該模塊支持的速度為普通模式(100k)到快速模式+(1M)。

生成STM32CUBEMX

用STM32CUBEMX生成例程,這里使用MCU為STM32U073CC。 配置時(shí)鐘樹,配置時(shí)鐘為48M。

串口配置

查看原理圖,PA9和PA10設(shè)置為開發(fā)板的串口。

配置串口。

IIC配置

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

CS和SA0設(shè)置

串口重定向

打開魔術(shù)棒,勾選MicroLIB

在main.c中,添加頭文件,若不添加會(huì)出現(xiàn) identifier "FILE" is undefined報(bào)錯(cuò)。

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

函數(shù)聲明和串口重定向:

/* 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 */

參考程序

[https://github.com/STMicroelectronics/lis2dux12-pid]

初始換管腳

由于需要向LIS2DUX12_I2C_ADD_L寫入以及為IIC模式。

所以使能CS為高電平,配置為IIC模式。 配置SA0為低電平。

HAL_GPIO_WritePin(GPIOC, CS_Pin, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOC, SA0_Pin, GPIO_PIN_SET);

獲取ID

我們可以向WHO_AM_I (0Fh)獲取固定值,判斷是否為0x47。

lis2dux12_device_id_get為獲取函數(shù)。

對(duì)應(yīng)的獲取ID驅(qū)動(dòng)程序,如下所示。

printf("HELLOn");

    HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);            
    HAL_GPIO_WritePin(SA0_GPIO_Port, SA0_Pin, GPIO_PIN_RESET);            



  lis2dux12_status_t status;
  stmdev_ctx_t dev_ctx;
  uint8_t id;
  lis2dux12_md_t md;

  /* Initialize mems driver interface */
  dev_ctx.write_reg = platform_write;
  dev_ctx.read_reg = platform_read;
  dev_ctx.mdelay = platform_delay;
  dev_ctx.handle = &SENSOR_BUS;



  /* Wait sensor boot time */
  platform_delay(BOOT_TIME);

  lis2dux12_exit_deep_power_down(&dev_ctx);

  /* Check device ID */
  lis2dux12_device_id_get(&dev_ctx, &id);
    printf("LIS2DUX12_ID=0x%x,id=0x%xn",LIS2DUX12_ID,id);
  if (id != LIS2DUX12_ID)
    while(1);

復(fù)位操作

可以向CTRL1 (10h)的SW_RESET寄存器寫入1進(jìn)行復(fù)位。

lis2dux12_init_set為重置函數(shù)。 對(duì)應(yīng)的驅(qū)動(dòng)程序,如下所示。

/* Restore default configuration */
  lis2dux12_init_set(&dev_ctx, LIS2DUX12_RESET);
  do {
    lis2dux12_status_get(&dev_ctx, &status);
  } while (status.sw_reset);

BDU設(shè)置

在很多傳感器中,數(shù)據(jù)通常被存儲(chǔ)在輸出寄存器中,這些寄存器分為兩部分:MSB和LSB。這兩部分共同表示一個(gè)完整的數(shù)據(jù)值。例如,在一個(gè)加速度計(jì)中,MSB和LSB可能共同表示一個(gè)加速度的測量值。
連續(xù)更新模式(BDU = ‘0’):在默認(rèn)模式下,輸出寄存器的值會(huì)持續(xù)不斷地被更新。這意味著在你讀取MSB和LSB的時(shí)候,寄存器中的數(shù)據(jù)可能會(huì)因?yàn)樾碌臏y量數(shù)據(jù)而更新。這可能導(dǎo)致一個(gè)問題:當(dāng)你讀取MSB時(shí),如果寄存器更新了,接下來讀取的LSB可能就是新的測量值的一部分,而不是與MSB相對(duì)應(yīng)的值。這樣,你得到的就是一個(gè)“拼湊”的數(shù)據(jù),它可能無法準(zhǔn)確代表任何實(shí)際的測量時(shí)刻。
塊數(shù)據(jù)更新(BDU)模式(BDU = ‘1’):當(dāng)激活BDU功能時(shí),輸出寄存器中的內(nèi)容不會(huì)在讀取MSB和LSB之間更新。這就意味著一旦開始讀取數(shù)據(jù)(無論是先讀MSB還是LSB),寄存器中的那一組數(shù)據(jù)就被“鎖定”,直到兩部分都被讀取完畢。這樣可以確保你讀取的MSB和LSB是同一測量時(shí)刻的數(shù)據(jù),避免了讀取到代表不同采樣時(shí)刻的數(shù)據(jù)。
簡而言之,BDU位的作用是確保在讀取數(shù)據(jù)時(shí),輸出寄存器的內(nèi)容保持穩(wěn)定,從而避免讀取到拼湊或錯(cuò)誤的數(shù)據(jù)。這對(duì)于需要高精度和穩(wěn)定性的應(yīng)用尤為重要。
可以向CTRL4 (13h)的BDU寄存器寫入1進(jìn)行開啟。

對(duì)應(yīng)的驅(qū)動(dòng)程序,如下所示。

/* Set bdu and if_inc recommended for driver usage */
  lis2dux12_init_set(&dev_ctx, LIS2DUX12_SENSOR_ONLY_ON);

設(shè)置傳感器的量程

FS[1:0] - 全量程選擇:這兩個(gè)位用于設(shè)置傳感器的量程。量程決定了傳感器可以測量的最大加速度值。例如,量程可以設(shè)置為±2g、±4g、±8g或±16g。這允許用戶根據(jù)應(yīng)用的特定需求調(diào)整傳感器的靈敏度。

對(duì)應(yīng)的驅(qū)動(dòng)程序,如下所示。

/* Set Output Data Rate */
  md.fs =  LIS2DUX12_4g;
  md.odr = LIS2DUX12_25Hz_LP;
  lis2dux12_mode_set(&dev_ctx, &md);

輪詢獲取加速度

檢查新數(shù)據(jù)是否可用:
lis2dux12_status_get(&dev_ctx, &status);這個(gè)函數(shù)調(diào)用檢查加速度計(jì)是否有新的數(shù)據(jù)可讀。如果有新數(shù)據(jù),status.drdy變量將被設(shè)置為非零值。
主要為讀取STATUS (25h)的DRDY位。

如果status.drdy是非零的,說明有新的加速度數(shù)據(jù)可讀。

lis2dux12_xl_data_get(&dev_ctx, &md, &data_xl);這個(gè)函數(shù)調(diào)用實(shí)際讀取加速度計(jì)的原始數(shù)據(jù),并存儲(chǔ)在 data_xl 數(shù)組中。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

   /* Read output only if new values are available */
    lis2dux12_status_get(&dev_ctx, &status);
    if (status.drdy) {
      lis2dux12_xl_data_get(&dev_ctx, &md, &data_xl);

      /* print Accel data  */
      printf("Acceleration [mg]:%4.2ft%4.2ft%4.2frn",
              data_xl.mg[0], data_xl.mg[1], data_xl.mg[2]);


      lis2dux12_outt_data_get(&dev_ctx, &md, &data_temp);

      /* print Temp data  */
      printf("Temp[degC]:%3.2frn",
              data_temp.heat.deg_c);


    }        

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

演示

審核編輯 黃宇

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

    關(guān)注

    2553

    文章

    51387

    瀏覽量

    756551
  • 加速度計(jì)
    +關(guān)注

    關(guān)注

    6

    文章

    704

    瀏覽量

    46020
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    284

    瀏覽量

    14999
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AI增強(qiáng)型智能加速度計(jì)

    。 以下是本周新品情報(bào),請(qǐng)及時(shí)查收: 第代MEMS技術(shù) STMicroelectronics LIS2DUX12LIS2DUXS12 AI增強(qiáng)型智能加速度計(jì) 貿(mào)澤電子即日起
    的頭像 發(fā)表于 07-12 08:10 ?857次閱讀
    AI增強(qiáng)型智能<b class='flag-5'>加速度計(jì)</b>

    加速度計(jì)LIS2DW12開發(fā)(2)----基于中斷信號(hào)獲取加速度數(shù)據(jù)

    本文將介紹實(shí)時(shí)獲取和處理加速度數(shù)據(jù)。程序的核心流程包括初始化硬件接口、配置加速度計(jì)的參數(shù),以及通過輪詢檢查中斷信號(hào)來不斷讀取加速度數(shù)據(jù)
    的頭像 發(fā)表于 12-18 10:46 ?1381次閱讀
    <b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DW12</b><b class='flag-5'>開發(fā)</b>(<b class='flag-5'>2</b>)----基于中斷信號(hào)<b class='flag-5'>獲取</b><b class='flag-5'>加速度數(shù)據(jù)</b>

    e2studio開發(fā)加速度計(jì)LIS2DW12(2)----基于中斷信號(hào)獲取加速度數(shù)據(jù)

    本文將介紹實(shí)時(shí)獲取和處理加速度數(shù)據(jù)。程序的核心流程包括初始化硬件接口、配置加速度計(jì)的參數(shù),以及通過輪詢檢查中斷信號(hào)來不斷讀取加速度數(shù)據(jù)
    的頭像 發(fā)表于 05-17 14:42 ?923次閱讀
    e<b class='flag-5'>2</b>studio<b class='flag-5'>開發(fā)</b><b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DW12</b>(<b class='flag-5'>2</b>)----基于中斷信號(hào)<b class='flag-5'>獲取</b><b class='flag-5'>加速度數(shù)據(jù)</b>

    e2studio開發(fā)加速度計(jì)LIS2DW12(4)----測量傾斜度

    本文將介紹如何驅(qū)動(dòng)和利用LIS2DW12加速度計(jì)的傾斜檢測理論和傾斜角測量方法。一般來說,這里描述的程序也可以應(yīng)用于
    的頭像 發(fā)表于 05-17 15:00 ?1341次閱讀
    e<b class='flag-5'>2</b>studio<b class='flag-5'>開發(fā)</b><b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DW12</b>(4)----測量傾斜度

    加速度計(jì)LIS2DUX12開發(fā)(2)----靜態(tài)校準(zhǔn)

    零偏是影響加速度計(jì)輸出精度的重要指標(biāo)之一,零偏可分為靜態(tài)零偏和動(dòng)態(tài)零偏 。靜態(tài)零偏也稱為固定零偏,通常經(jīng)標(biāo)定與補(bǔ)償減小靜態(tài)零偏。動(dòng)態(tài)零偏是由于加速度計(jì)自身的缺陷或環(huán)境因素(如溫度、振動(dòng)、電子干擾等
    的頭像 發(fā)表于 05-17 15:27 ?1331次閱讀
    <b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DUX12</b><b class='flag-5'>開發(fā)</b>(<b class='flag-5'>2</b>)----靜態(tài)校準(zhǔn)

    加速度計(jì)LIS2DUX12開發(fā)(3)----計(jì)步器

    本文將介紹如何驅(qū)動(dòng)和利用LIS2DUX12傳感器,實(shí)現(xiàn)計(jì)步器感應(yīng)功能。 LIS2DUX12是一款數(shù)字式智能3軸線性加速度計(jì),其MEMS和ASIC旨在將盡可能低的電流消耗與豐富的特性(如常開抗混疊
    的頭像 發(fā)表于 05-17 15:36 ?1339次閱讀
    <b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DUX12</b><b class='flag-5'>開發(fā)</b>(3)----計(jì)步器

    e2studio開發(fā)加速度計(jì)LIS2DW12(1)----輪詢獲取加速度數(shù)據(jù)

    本文將介紹如何驅(qū)動(dòng)和利用LIS2DW12傳感器,實(shí)現(xiàn)精確的運(yùn)動(dòng)感應(yīng)功能。 IS2DW12是一款高性能、超低功耗的軸線性加速度計(jì),屬于“femto”系列,利用了成熟的微機(jī)械
    的頭像 發(fā)表于 08-09 14:54 ?1703次閱讀
    e<b class='flag-5'>2</b>studio<b class='flag-5'>開發(fā)</b><b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DW12</b>(<b class='flag-5'>1</b>)----<b class='flag-5'>輪詢</b><b class='flag-5'>獲取</b><b class='flag-5'>加速度數(shù)據(jù)</b>

    加速度計(jì)加速度計(jì)的使用區(qū)別?

    有個(gè)問題請(qǐng)教一下:在靜態(tài)測量的情況下,兩加速度計(jì)在測得X、Y上的加速度后,是不是就可以根據(jù)這兩個(gè)值和重力加速度g算出Z
    發(fā)表于 12-29 06:06

    請(qǐng)問兩加速度計(jì)加速度計(jì)的使用區(qū)別是什么?

    有個(gè)問題請(qǐng)教一下:在靜態(tài)測量的情況下,兩加速度計(jì)在測得X、Y上的加速度后,是不是就可以根據(jù)這兩個(gè)值和重力加速度g算出Z
    發(fā)表于 08-08 09:12

    設(shè)計(jì)具有成本效益的加速度計(jì)

    板)獲取加速度數(shù)據(jù)的示例,但只有少數(shù)項(xiàng)目足以用于地震環(huán)境或建筑監(jiān)測。談到 MEMS 加速度計(jì)傳感器,我們可以找到非常好的用于地震目的的 MEMS 傳感器,但它們非常昂貴(注意你可以以相同的價(jià)格購買專業(yè)
    發(fā)表于 08-23 06:20

    加速度計(jì)、陀螺儀和磁力計(jì)的應(yīng)用原理

    加速度計(jì)是一種慣性傳感器,能夠測量物體的比力,即去掉重力后的整體加速度或者單位質(zhì)量上作用的非引力。當(dāng)加速度計(jì)保持靜止時(shí),
    的頭像 發(fā)表于 10-09 15:43 ?7739次閱讀

    貿(mào)澤開售面向可穿戴和始終感知應(yīng)用的STMicroelectronics LIS2DUX12LIS2DUXS12智能加速度計(jì)

    LIS2DUX12LIS2DUXS12 AI增強(qiáng)型智能加速度計(jì)。這些加速度計(jì)采用STMicroelectronics的第代MEMS技術(shù)
    發(fā)表于 06-02 17:43 ?842次閱讀
    貿(mào)澤開售面向可穿戴和始終感知應(yīng)用的STMicroelectronics <b class='flag-5'>LIS2DUX12</b>和<b class='flag-5'>LIS2DUXS12</b>智能<b class='flag-5'>加速度計(jì)</b>

    e2studio開發(fā)加速度計(jì)LIS2DW12(1)----輪詢獲取加速度數(shù)據(jù)

    本文將介紹如何驅(qū)動(dòng)和利用LIS2DW12傳感器,實(shí)現(xiàn)精確的運(yùn)動(dòng)感應(yīng)功能。 IS2DW12是一款高性能、超低功耗的軸線性加速度計(jì),屬于“femto”系列,利用了成熟的微機(jī)械
    的頭像 發(fā)表于 01-09 16:21 ?768次閱讀
    e<b class='flag-5'>2</b>studio<b class='flag-5'>開發(fā)</b><b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DW12</b>(<b class='flag-5'>1</b>)----<b class='flag-5'>輪詢</b><b class='flag-5'>獲取</b><b class='flag-5'>加速度數(shù)據(jù)</b>

    加速度計(jì)LIS2DW12開發(fā)(4)----測量傾斜度

    本文將介紹如何驅(qū)動(dòng)和利用LIS2DW12加速度計(jì)的傾斜檢測理論和傾斜角測量方法。一般來說,這里描述的程序也可以應(yīng)用于
    的頭像 發(fā)表于 05-16 17:18 ?1246次閱讀
    <b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DW12</b><b class='flag-5'>開發(fā)</b>(4)----測量傾斜度

    e2studio開發(fā)加速度計(jì)LIS2DW12(2)----基于中斷信號(hào)獲取加速度數(shù)據(jù)

    本文將介紹實(shí)時(shí)獲取和處理加速度數(shù)據(jù)。程序的核心流程包括初始化硬件接口、配置加速度計(jì)的參數(shù),以及通過輪詢檢查中斷信號(hào)來不斷讀取加速度數(shù)據(jù)
    的頭像 發(fā)表于 08-09 15:43 ?595次閱讀
    e<b class='flag-5'>2</b>studio<b class='flag-5'>開發(fā)</b><b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b><b class='flag-5'>LIS2DW12</b>(<b class='flag-5'>2</b>)----基于中斷信號(hào)<b class='flag-5'>獲取</b><b class='flag-5'>加速度數(shù)據(jù)</b>
    百家乐| 海南博彩业| 百家乐官网专业赌| 赣州市| 威尼斯人娱乐客户端| 百家乐免费路单| 百家乐官网网站东方果博| 威尼斯人娱乐网开户| 赌百家乐的心得体会| 线上百家乐官网赢钱| 皇冠网投| 大发888 配置要求| 财富百家乐的玩法技巧和规则| 百家乐相对策略| 百家乐官网大西洋| 百家乐官网投注翻倍方法| 巴登娱乐城开户| 至富百家乐的玩法技巧和规则| 金沙百家乐娱乐城场| 百家乐官网赌场导航| 百家乐官网2珠路投注法| 至尊百家乐| 足球皇冠大全| 自贡百家乐官网赌场娱乐网规则| 百家乐官网2号技术打法| 丰合网上娱乐| 爱玩棋牌官方下载| 大发888娱乐城34| 百家乐平注秘籍| 百家乐破解赌戏玩| 百家乐怎么玩最保险| 博联百家乐游戏| 路冲铺面能做生意吗| 百家乐官网庄闲桌| 模拟百家乐官网的玩法技巧和规则| 好用百家乐官网分析软件| 网络百家乐官网可靠吗| 百家乐官网娱乐城彩金| 百家乐官网下注技术| 百家乐官网视频游戏注册| 百家乐官网必胜法hk |