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)不再提示

如何通過SPI方式讀取BMI088傳感器數(shù)據(jù)

454398 ? 來源:一板網(wǎng) ? 作者:天南地北客 ? 2020-10-28 16:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

BMI088傳感器是一款六軸傳感器模塊,內(nèi)部帶有一個16位的加速度傳感器模塊和一個16位的陀螺儀模塊。該傳感器支持SPI和I2C接口。在本篇文章中,我們將使用NUCLEO-G070RB開發(fā)板通過SPI方式讀取BMI088傳感器的數(shù)據(jù),并通過串口打印輸出。

所需的組件

● NUCLEO-G070RB開發(fā)板

● YBX-BMI088(SPI)加速度傳感器模塊(淘寶鏈接)

● 連接跳線

● Micro USB線纜

連接方式

以下是NUCLEO-G070RB開發(fā)板與BMI088模塊的連接方式:

BMI088模塊連接到NUCLEO-G070RB的SPI1接口,對應(yīng)的引腳分別是PA5(SCK)、PA6(MISO)和PA7(MOSI),加速度計的片選引腳CS1連接到PB0,陀螺儀的片選引腳CS2連接到PB3。BMI088模塊的VCC連接到+5V引腳,GND引腳連接到NUCLEO-G070RB的任意GND引腳。

代碼

首先我們使用STM32CubeMX工具生成工程文件,根據(jù)硬件連接方式選擇引腳的功能,然后啟用SPI1通訊。SPI1選擇全雙工主機模式(Full-Duplex Master),硬件NSS信號選擇Disable。在參數(shù)設(shè)置中,數(shù)據(jù)位大小選擇8位,MSB優(yōu)先。選擇合適的分頻系數(shù)。在無法進(jìn)行通訊的情況下,可以適當(dāng)降低SPI1外設(shè)的頻率。

生成KEIL工程后,接下來我們需要將BOSCH官方提供的BMI088驅(qū)動集成到工程里面。

首先,將 bmi085.c、bmi085.h、bmi088.c、bmi088.h、bmi08a.c、bmi08g.c、bmi08x_defs.h以及bmi08x.h文件復(fù)制到工程所在的目錄,然后添加到工程中。在bmi08x_defs.h使能以下宏定義來啟用BMI088功能。

#ifndef BMI08X_ENABLE_BMI088

#define BMI08X_ENABLE_BMI088 1

#endif

在main.c文件中包含以下頭文件:

#include “bmi08x.h”

#include “bmi088.h”

然后定義一個bmi08x結(jié)構(gòu)體,該結(jié)構(gòu)體定義了使用的是I2C還是SPI接口,以及讀寫操作所需的函數(shù)指針。

struct bmi08x_dev dev = {

.accel_id = CSB1_Pin,

.gyro_id = CSB2_Pin,

.intf = BMI08X_SPI_INTF,

.read = &stm32_spi_read,//user_spi_read,

.write = &stm32_spi_write,//user_spi_write,

.delay_ms = &HAL_Delay//user_delay_milli_sec

};

接下來,初始化BMI088傳感器,設(shè)置加速計和陀螺儀的量程、帶寬和工作模式等。然后使用以下函數(shù)讀取BMI088的傳感器數(shù)據(jù):

/* Read the sensor data into the sensor data instance */

rslt = bmi08a_get_data(&user_accel_bmi088, &dev);

/* Read the sensor data into the sensor data instance */

rslt = bmi08g_get_data(&user_gyro_bmi088, &dev);

將傳感器數(shù)據(jù)打印輸出至串口:

printf(“x:%d”,user_accel_bmi088.x);

printf(“\t”);

printf(“y:%d”,user_accel_bmi088.y);

printf(“\t”);

printf(“z:%d”,user_accel_bmi088.z);

printf(“\t”);

printf(“x:%d”,user_gyro_bmi088.x);

printf(“\t”);

printf(“y:%d”,user_gyro_bmi088.y);

printf(“\t”);

printf(“z:%d”,user_gyro_bmi088.z);

printf(“\t”);

rslt = bmi08a_get_sensor_temperature(&dev,&bmi08x_sensor_temp);

if (rslt == BMI08X_OK)

{

printf(“Temp:%.3f”, bmi08x_sensor_temp/1000.0);

}

else

{

printf(“BMI088 Get Sensor Temperature Error\n”);

}

printf(“\n”);

輸出結(jié)果

將程序下載到NUCLEO-G070開發(fā)板中,運行程序,串口監(jiān)視器將顯示接收到的數(shù)據(jù):

編輯:hfy

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

    關(guān)注

    2576

    文章

    55062

    瀏覽量

    791513
  • 陀螺儀
    +關(guān)注

    關(guān)注

    44

    文章

    889

    瀏覽量

    101666
  • 加速度傳感器
    +關(guān)注

    關(guān)注

    12

    文章

    492

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    BLDC無位置傳感器控制方式介紹

    BLDC根據(jù)轉(zhuǎn)子的位置進(jìn)行換向控制,而轉(zhuǎn)子位置要靠位置傳感器獲取,那么這期就為大家介紹BLDC的無位置傳感器控制方式
    的頭像 發(fā)表于 12-30 07:55 ?1.1w次閱讀
    BLDC無位置<b class='flag-5'>傳感器</b>控制<b class='flag-5'>方式</b>介紹

    壓力傳感器數(shù)據(jù)刷新速度參數(shù)如何解讀?

    壓力傳感器數(shù)據(jù)刷新速度參數(shù),通常指的是其輸出數(shù)據(jù)率或響應(yīng)時間,它代表了傳感器每秒能提供多少次有效的壓力測量讀數(shù)。1.主要表達(dá)方式及含義參數(shù)
    的頭像 發(fā)表于 12-29 12:02 ?341次閱讀
    壓力<b class='flag-5'>傳感器</b>的<b class='flag-5'>數(shù)據(jù)</b>刷新速度參數(shù)如何解讀?

    常見SPI溫度傳感器芯片有哪些?(什么是SPI溫度傳感器芯片?)

    SPI(Serial Peripheral Interface)是一種同步串行通信接口,具備全雙工、高速率的特點。基于SPI的溫度傳感器芯片可直接與MCU通信,輸出數(shù)字溫度值,無需復(fù)雜的外部電路,大幅簡化系統(tǒng)設(shè)計。這類芯片通常具
    的頭像 發(fā)表于 12-01 16:21 ?560次閱讀
    常見<b class='flag-5'>SPI</b>溫度<b class='flag-5'>傳感器</b>芯片有哪些?(什么是<b class='flag-5'>SPI</b>溫度<b class='flag-5'>傳感器</b>芯片?)

    ADC 實戰(zhàn):如何精準(zhǔn)讀取傳感器信號

    關(guān)鍵因素。今天,我們就從原理到實戰(zhàn),帶你搞懂ADC,幫你精準(zhǔn)讀取傳感器信號。一、ADC基礎(chǔ)回顧ADC(Analog-to-DigitalConverter)是將連
    的頭像 發(fā)表于 11-24 19:04 ?496次閱讀
    ADC 實戰(zhàn):如何精準(zhǔn)<b class='flag-5'>讀取</b><b class='flag-5'>傳感器</b>信號

    設(shè)備的狀態(tài)監(jiān)測可以通過哪些方式實現(xiàn)?

    狀態(tài)監(jiān)測:直接感知核心組件工況 內(nèi)置傳感器監(jiān)測關(guān)鍵部件 核心部件:主控芯片、通信模塊(4G/5G / 光纖)、電源模塊、存儲介質(zhì)(SSD/Flash)。 監(jiān)測方式通過內(nèi)置溫度傳感器
    的頭像 發(fā)表于 11-07 09:44 ?911次閱讀

    傳感器如何實現(xiàn)數(shù)據(jù)采集聯(lián)網(wǎng)通信

    傳感器實現(xiàn)數(shù)據(jù)采集與聯(lián)網(wǎng)通信是一個涉及硬件設(shè)計、協(xié)議選擇、數(shù)據(jù)處理和云平臺集成的系統(tǒng)化過程。其核心目標(biāo)是將傳感器采集的物理量(如溫度、濕度、壓力等)轉(zhuǎn)換為數(shù)字信號,并
    的頭像 發(fā)表于 09-23 17:30 ?1150次閱讀

    雷達(dá)傳感器和紅外傳感器的區(qū)別

    雷達(dá)傳感器和紅外傳感器都可以進(jìn)行測距,能夠輔助設(shè)備進(jìn)行“感知世界”的行為,雖然說功能看起來是一樣的,但是實現(xiàn)的方式卻是大有不同,紅外測距是通過發(fā)射紅外線,雷達(dá)測距是
    的頭像 發(fā)表于 08-28 17:48 ?1059次閱讀

    TLE9879 SSC模塊與傳感器進(jìn)行三線SPI通信問題求解

    我咨詢一下,我在用TLE9879芯片SSC模塊與MT6501傳感器進(jìn)行SPI通信時,我現(xiàn)在遇到了一個問題: 在發(fā)出讀取指令和寄存地址后,MTSR發(fā)常高進(jìn)行
    發(fā)表于 07-15 07:42

    使用stm32u575rg通過spi讀取外置adc的數(shù)據(jù),如何設(shè)置才能讓spi不需要中斷重啟持續(xù)讀取數(shù)據(jù)?

    我打算使用stm32u575rg通過spi讀取外置adc的數(shù)據(jù)通過lptim2的ch2提供外置ad的觸發(fā)信號,ch1提供觸發(fā)信號給
    發(fā)表于 07-10 08:22

    零知開源——STM32F1驅(qū)動BMP581壓強傳感器使用SPI實現(xiàn)ST7789顯示的環(huán)境監(jiān)測系統(tǒng)

    ;); drawStaticElements(); } 2.3 讀取傳感器數(shù)據(jù) loop函數(shù)循環(huán)獲取實時的大氣壓強和溫度數(shù)據(jù),并通過經(jīng)驗
    發(fā)表于 07-03 17:26

    FreeRTOS讀取ADS1299數(shù)據(jù)有誤

    您好,請問,用stm32的FreeRTOS的隊列對ADS1299傳感器讀取數(shù)據(jù),已設(shè)置采樣率為2khz 在采集任務(wù)中:通過spi
    發(fā)表于 05-05 22:48

    stm32f103用freertos對一個采樣率為1kHz的傳感器,進(jìn)行采樣,數(shù)據(jù)出差

    您好,請問,用FreeRTOS的隊列對采樣率1khz的傳感器讀取數(shù)據(jù), 在采集任務(wù)中:通過spi讀取
    發(fā)表于 05-05 22:44

    ADXL355從停止模式進(jìn)入測量模式后,第一次讀取加速度數(shù)據(jù)值為0是怎么回事?

    使用ADXL355讀取數(shù)據(jù)通過配置0X2D寄存傳感器從停止模式進(jìn)入測量模式,當(dāng)DRDY產(chǎn)生數(shù)據(jù)
    發(fā)表于 04-16 07:01

    如何讀取LPC55S28溫度傳感器

    我正在嘗試讀取芯片溫度傳感器。 我嘗試使用 LPADC 組件來讀取傳感器。我意識到我必須禁用掉電、啟用 kclock_adc0 并為其附加一個時鐘,以便計算 ADC 的模擬值。 由于某
    發(fā)表于 04-04 06:46

    使用Hal庫的SPI讀取磁邊傳感器導(dǎo)致STM32G4無法運行怎么解決?

    使用 HAL庫 STM32G431 + SPI讀取磁邊傳感器系統(tǒng)運行一會直接卡死,使用調(diào)試功能最后發(fā)現(xiàn)卡死在if ((__HAL_SPI_GET_FLAG(hspi,
    發(fā)表于 03-14 08:24