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

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

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

3天內不再提示

如何通過SPI方式讀取BMI088傳感器數據

454398 ? 來源:一板網 ? 作者:天南地北客 ? 2020-10-28 16:13 ? 次閱讀

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

所需的組件

● NUCLEO-G070RB開發板

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

● 連接跳線

● Micro USB線纜

連接方式

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

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

代碼

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

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

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

#ifndef BMI08X_ENABLE_BMI088

#define BMI08X_ENABLE_BMI088 1

#endif

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

#include “bmi08x.h”

#include “bmi088.h”

然后定義一個bmi08x結構體,該結構體定義了使用的是I2C還是SPI接口,以及讀寫操作所需的函數指針。

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傳感器,設置加速計和陀螺儀的量程、帶寬和工作模式等。然后使用以下函數讀取BMI088的傳感器數據:

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

將傳感器數據打印輸出至串口:

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”);

輸出結果

將程序下載到NUCLEO-G070開發板中,運行程序,串口監視器將顯示接收到的數據:

編輯:hfy

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

    關注

    2550

    文章

    51035

    瀏覽量

    753082
  • 陀螺儀
    +關注

    關注

    44

    文章

    783

    瀏覽量

    98667
  • 加速度傳感器

    關注

    12

    文章

    471

    瀏覽量

    55140
收藏 人收藏

    評論

    相關推薦

    ADS1118通過SPI讀取內部溫度傳感器發現讀取的溫度比實際環境溫度要高出4-5℃,是什么原因導致的呢?

    我目前正在使用ADS1118這個芯片,通過SPI讀取內部溫度傳感器發現讀取的溫度比實際環境溫度要高出4-5℃,請問這個可能是什么原因導致的
    發表于 12-20 08:01

    請問ADS8685IPWR如何通過SPI讀取數據

    請問哪個是通過SPI 讀取 數據的寄存?謝謝
    發表于 11-22 06:31

    實現MCU與傳感器的通信方式

    在現代電子系統中,微控制單元(MCU)與傳感器的通信是實現智能控制和數據采集的基礎。隨著技術的發展,MCU與傳感器之間的通信方式也在不斷進
    的頭像 發表于 11-01 13:43 ?330次閱讀

    如何通過tlv320aic3206 spi接口讀取mic接口的數據,然后將讀取到的數據在發給耳機?

    求幫助!!!!我現在使用的音頻芯片是tlv320aic3206,我想通過arm芯片spi接口讀取mic接口的數據,然后將讀取到的
    發表于 10-24 07:36

    傳感器數據怎么傳到云平臺

    傳感器數據傳到云平臺,通常可以通過以下幾種方式實現: 1. 直接連接 網絡接口 :傳感器可以通過
    的頭像 發表于 09-07 10:59 ?1800次閱讀

    LM95071 SPI/MICROWIRE 13位帶符號溫度傳感器數據

    電子發燒友網站提供《LM95071 SPI/MICROWIRE 13位帶符號溫度傳感器數據表.pdf》資料免費下載
    發表于 08-14 10:46 ?0次下載
    LM95071 <b class='flag-5'>SPI</b>/MICROWIRE 13位帶符號溫度<b class='flag-5'>傳感器</b><b class='flag-5'>數據</b>表

    LM74 SPI/Microwire12位溫度傳感器數據

    電子發燒友網站提供《LM74 SPI/Microwire12位溫度傳感器數據表.pdf》資料免費下載
    發表于 08-14 09:50 ?0次下載
    LM74 <b class='flag-5'>SPI</b>/Microwire12位溫度<b class='flag-5'>傳感器</b><b class='flag-5'>數據</b>表

    如何通過電機的霍爾傳感器讀取位置實現位置環控制?

    如何通過電機的霍爾傳感器讀取位置實現位置環控制
    發表于 03-19 08:04

    stm32和傳感器進行通信,為什么返回的數據基本是0呢?

    本人使用的是stm32和傳感器進行通信,再設置好SPI的基礎設置后,去讀取x軸的陀螺儀角速度,為什么返回的數據基本是0呢?
    發表于 01-02 06:10

    用STM32單片機與ADIS16488通過SPI通信,讀取數據時好時壞的原因?

    SPI讀取傳感器的PROD_ID,按照手冊上寫的,如果讀取為0X4068,則代表SPI協議讀取
    發表于 01-01 07:47

    在和ADIS16460慣導SPI通信時,讀取狀態/錯誤的狀態,出現傳感器超出范圍應該怎么解決?

    如圖所示,在和ADIS16460慣導SPI通信時候,讀取狀態/錯誤的狀態,出現傳感器超出范圍,應該怎么解決?目前是product_id、溫度值讀取上來
    發表于 12-28 07:49

    adis16488讀取傳感器數據太快,數據會變0或固定數是什么原因?

    rst,拉高后,等待500ms,讀取模塊id,判斷id正確。不對模塊做任何配置,開一個timer定時讀取10軸傳感器數據。 按照手冊連接的電路,供電3.3v。 請問有可能是什么原因
    發表于 12-28 07:38

    ADIS16488為什么無法讀取數據

    我使用F28335與ADIS16488通過SPI通信,連接圖和官方手冊一樣,供電為3.3V,先去用SPI讀取傳感器的PROD_ID,按照手冊
    發表于 12-28 07:35

    ADXL375為什么無法讀取XYZ數據

    通過FPGA實現SPI 4線方式對芯片進行讀寫,目前可以讀取設備ID,將寄存的配置數據寫入后,
    發表于 12-28 06:33

    通過SPI如何讀取ADE7753的電壓、電流數據

    小白,請教! 通過SPI如何讀取ADE7753的電壓、電流數據?如何轉換數據通過程序實現得到
    發表于 12-27 07:12
    主站蜘蛛池模板: AV无码国产精品午夜A片麻豆| 粗好大用力好深快点漫画| 人妻中文字幕乱人伦在线| 国产午夜精品理论片| 97资源站超碰在线视频| 亚洲 日韩 欧美 另类 蜜桃| 免费毛片网站在线观看| 国产亚洲精品久久无亚洲| asian极品呦女xx农村| 伊人久久大香线蕉综合电影| 视频一区精品自拍亚洲| 捏奶动态图吃奶动态图q| 黄色毛片a| 国产精品免费视频能看| qovd电影| 91popny蜜桃臀| 艳照门在线播放| 校草让我脱了内裤给全班看| 青青草A在在观免费线观看| 久久久性色精品国产免费观看| 国产乱码精品AAAAAAAA| 成人伦理影院| 扒开老师粉嫩的泬10P| 97色伦图片7778久久| 影音先锋色小姐| 亚洲一卡二卡三卡四卡2021麻豆| 天堂色| 轻点灬大ji巴太粗太双性高h| 两个奶头被吃得又翘又痛 | 欧美极限扩肛| 狂野猛交xxxx吃奶| 久久九九免费| 久久综合中文字幕无码| 久久国产欧美| 久久久96| 美女的隐私蜜桃传媒免费看| 久久麻豆国产国产AV| 久久久久久91香蕉国产| 久久99热这里只频精品6| 教室眠催白丝美女校花| 黑人玩弄极品人妻系列|