bmi088-linux驅動(I2C)

電氣特性:
在正常工作時,gyro 工作電流為5mA,acc 工作電流為150uA。
SPI 時鐘和數據電平范圍 0 -3.6

結構框圖如下:
在這里插入圖片描述
硬件連接圖如下:
在這里插入圖片描述note:
1. 通過PS引腳選擇通訊協議,上拉引腳則選擇的是I2C接口,(CSB1是給SPI片選使用的)。如下圖:
在這里插入圖片描述
2. 上電后陀螺儀在正常模式,加速度傳感器 處于抑制模式。改變加速度傳感器模式:

  • 上電sensor
  • 等1ms
  • 寫4 到寄存器to ACC_PWR_CTR
  • 等450 ms
  1. 數據寬度:陀螺儀和加速度計都是16bit ,temp sensor是11bit,都是有符號數據。

  2. 傳感器信號都會經過一個低通濾波器,所以需要設置一個采樣頻率和截止頻率。截止頻率就是能夠通過的最大頻率,采樣頻率一般為最大頻率的2.56 (截止頻率(fc)=采樣頻率(fs) / 2.56)。

  3. 我試過軟復位ACC和GORY。但是好像導致I2C總線故障了。是不是需要在 power save mode 下進行,待驗證。(已驗證,確實需要)

  4. FIFO部分:

  • 可以配置INT 引腳作為中斷信號輸入,這個信號由外部提供。當這個信號有效時,數據記錄至FIFO。
  • 可以配置INT引腳作為輸出引腳,當FIFO滿或者超過設置水紋,產生輸出信號。

I2C讀數據,定義buf[6],buf[0] ->0x12 … buf[5]->0x17
在這里插入圖片描述I2C寫數據:
在這里插入圖片描述

I2C調試注意事項:

  1. 時鐘信號只有在發送數據時才會產生。無數據發送時,SDA和SCL高電平。
  2. I2C時鐘信號頻率默認為400Kbps。設置過小可能頻率達不到要求。
    在這里插入圖片描述3. 當i2c時鐘頻率設置為400k,應用層設置為10ms讀取數據時。
    讀取數據信號圖:
    在這里插入圖片描述連續讀取GYRO和ACC時鐘如下:
    在這里插入圖片描述
    數據線如下:
    在這里插入圖片描述
    可以看出兩次數據讀取時間間隔如下:4*60us = 2.4ms

設備樹設置如下:

&i2c4 {status = "okay";clock-frequency = <400000>;BMI088: bmi088@18 {status = "okay";compatible = "iking,bmi088";reg = <0x18>;accelerometer {status = "okay";compatible = "iking,bmi088-accelerometer";chip-address = <0x18>;};gyroscope {status = "okay";compatible = "iking,bmi088-gyroscope";chip-address = <0x68>;};};
};

驅動和應用代碼上傳至:
https://download.csdn.net/download/qq_28219531/89306464

調試時注意:

  1. 如果讀取芯片ID失敗,可能端口配置問題。沒配置或者配置沖突。可以使用示波器看時鐘線有沒有信號,頻率是多少。
  2. 調試過程中出現了
    i2c_designware 8280000.i2c4: i2c_dw_handle_tx_abort: lost arbitration
    從信號上看,少了一個主設備的停止信號。看上去與從設備的工作模式有關系。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12032.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12032.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12032.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

系統定期執行命令的方法

系統定期執行命令的方法 一、進入超級用戶下 執行命令&#xff1a;sudo su 二、添加要執行的命令 例子&#xff1a;每天0點執行一次myapp.sh命令 先后輸入&#xff1a;crontab -e、 1、 回車 設置每天0點執行一次myapp.sh操作&#xff0c;需要寫絕對路徑 含義&#xff1…

離線修復.dll,Microsoft Visual C++

在安裝mysql時遇到下面的問題&#xff0c;如果是有網絡的情況下微軟管網下載安裝就行了&#xff0c;用的服務器不允許連接互聯網。 后面經過尋找&#xff0c;找到了一個修復工具&#xff0c;可一次修復所有的問題&#xff0c;特別好用分享給寶子們。 下載鏈接&#xff1a;http…

樹莓派 4B putty遠程連接登錄顯示拒絕訪問,密碼修改

putty顯示拒絕訪問 可能是樹莓派的ip沒有找到正確的 在下載系統鏡像的時候&#xff0c;會提示設置wifi 這里設置的WiFi和密碼需記住&#xff0c;主機名也需記住 可以在手機打開熱點&#xff08;將熱點的賬號和密碼改為跟你設置的wifi一樣的&#xff09; 可以在手機后臺查看…

頁面埋點H5 大數據uniapp 按需要更改代碼就行

邏輯思路 跳轉頁面前&#xff0c;記錄當前頁面的信息停留的時長以及各種信息&#xff0c;然后等走的時候再將記錄的信息發送出去 1.記錄當前頁面信息的函數 // 埋點通用接口 // triggerType: 必傳 類型 entryStr(進入) || leaveStr(離開) || String:自定義事件描述 // pageU…

微信小程序支付教程

微信小程序支付教程 Person&#xff1a; 微信小程序支付有幾種版本&#xff0c;分別是什么&#xff0c;寫一個詳細教程介紹下 ChatGPT&#xff1a; 微信小程序支付主要有兩種版本&#xff0c;分別為&#xff1a;JSSDK版本&#xff08;v1.0&#xff09;和WeixinJSBridge版本&…

超寬輸送帶耐熱性能怎么樣

超寬輸送帶耐熱性能解析 隨著工業領域的不斷發展和技術革新&#xff0c;超寬輸送帶的應用越來越廣泛。這種輸送帶在冶金、建筑、化工等多個行業中發揮著至關重要的作用&#xff0c;特別是在高溫環境下&#xff0c;其耐熱性能更是備受關注。那么&#xff0c;超寬輸送帶的耐熱性…

解釋下泛型擦除

在Java中&#xff0c;泛型擦除&#xff08;Type Erasure&#xff09;是Java泛型實現的一個重要概念。由于Java的泛型是在編譯時實現的&#xff08;稱為編譯時類型檢查&#xff09;&#xff0c;而在運行時&#xff0c;Java虛擬機&#xff08;JVM&#xff09;并不支持泛型&#x…

HDFS小文件優化方法

1、HDFS小文件弊端 HDFS上每個文件都要在namenode上建立一個索引&#xff0c;這個索引的大小約為150byte&#xff0c;這樣當小文件比較多的時 候 &#xff0c;就會產生很多的索引文件&#xff0c;一方面會大量占用namenode的內存空間 &#xff0c;另一方面就是索引文件過大是的…

Linux —— 線程控制

Linux —— 線程控制 創建多個線程線程的優缺點優點缺點 pthread_self進程和線程的關系pthread_exit 線程等待pthread_ join線程的返回值線程分離pthread_detach 線程取消pthread_cancel pthread_t 的理解 我們今天接著來學習線程&#xff1a; 創建多個線程 我們可以結合以前…

【離散數學】偏序關系中蓋住關系的求取及格論中有補格的判定(c語言實現)

實驗要求 求n的因子函數 我們將n的因子存入數組中&#xff0c;n的因子就是可以整除n的數&#xff0c;所以我們通過一個for循環來求。返回因子個數。 //求n的因子,返回因子個數 int factors(int arr[], int n) {int j 0;for (int i 1; i < n; i){if (n % i 0){arr[j] i…

C++反向迭代器

C反向迭代器 反向迭代器是用正向迭代器適配實現的&#xff0c;本質是寫一個反向迭代器的類模板&#xff0c;給編譯器傳不同的容器的正向迭代器實例化&#xff0c;編譯器去實例化出各種類模板對應的反向迭代器。 #pragma once namespace my_reverse_iterator {template<cla…

代碼隨想錄算法訓練營第五十三天| 1143.最長公共子序列,1035.不相交的線,53. 最大子序和

目錄 題目鏈接&#xff1a;1143.最長公共子序列 思路 代碼 題目鏈接&#xff1a; 1035.不相交的線 思路 代碼 題目鏈接&#xff1a; 53. 最大子序和 思路 代碼 總結 題目鏈接&#xff1a;1143.最長公共子序列 思路 ①dp數組&#xff0c;dp[i][j]表示[0,i-1]的text1和…

軟件測試面試78問

&#x1f345; 視頻學習&#xff1a;文末有免費的配套視頻可觀看 &#x1f345; 點擊文末小卡片 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 1、問&#xff1a;你在測試中發現了一個bug&#xff0c;但是開發經理認為這不是一個bug&#xf…

關于使用git拉取gitlab倉庫的步驟(解決公鑰問題和pytho版本和repo版本不對應的問題)

先獲取權限&#xff0c;提交ssh-key 虛擬機連接 GitLab并提交代碼_gitlab提交mr-CSDN博客 配置完成上訴步驟之后&#xff0c;執行下列指令進行拉去倉庫的內容 sudo apt install repo export PATHpwd/.repo/repo:$PATH python3 "實際路徑"/repo init -u ssh://gitxx…

智能優化算法 | Matlab實現成長優化算法(Growth Optimizer,GO)(內含完整源碼)

智能優化算法 | Matlab實現成長優化算法(Growth Optimizer,GO)(內含完整源碼) 文章目錄 智能優化算法 | Matlab實現成長優化算法(Growth Optimizer,GO)(內含完整源碼)文章概述源碼設計文章概述 智能優化算法 | Matlab實現成長優化算法(Growth Optimizer,GO)(內含…

Java的類和對象(一)—— 初始類和對象,this關鍵字,構造方法

前言 從這篇文章開始&#xff0c;我們就進入到了JavaSE的核心部分。這篇文章是Java類和對象的第一篇&#xff0c;主要介紹類和對象的概念&#xff0c;this關鍵字以及構造方法~~ 什么是類&#xff1f;什么是對象&#xff1f; 學過C語言的老鐵們&#xff0c;可以類比struct自定義…

【哈希】Leetcode 383. 贖金信【簡單】

贖金信 給你兩個字符串&#xff1a;ransomNote 和 magazine &#xff0c;判斷 ransomNote 能不能由 magazine 里面的字符構成。 如果可以&#xff0c;返回 true &#xff1b;否則返回 false 。 magazine 中的每個字符只能在 ransomNote 中使用一次。 解題思路 可以使用哈希…

matlab進行濾波處理

在MATLAB中進行濾波處理&#xff0c;你可以使用內置的函數或自定義濾波器。以下是一些常見的方法&#xff1a; 1. 使用內置濾波器函數 MATLAB提供了多種內置濾波器函數&#xff0c;如filter&#xff0c;filtfilt&#xff0c;butter&#xff08;用于設計巴特沃斯濾波器&#x…

spark結課之tip2

spark常用方法總結&#xff1a; 一、從內部創建RDD (1).通過并行化集合&#xff08;Parallelized Collections&#xff09;&#xff1a; 可以使用SparkContext的parallelize方法將一個已有的集合轉換為RDD。 基本語法&#xff1a; parallelize(collection, numSlicesNone)…

AI系列:大語言模型的RAG(檢索增強生成)技術(下)-- 使用LlamaIndex

目錄 前言什么是LlamaIndex?LlamaIndex代碼設置embedding模型設置LLM模型索引查詢機 驗證使用感受參考資料 前言 繼上一篇文章AI系列&#xff1a;大語言模型的RAG&#xff08;檢索增強生成&#xff09;技術&#xff08;上&#xff09;&#xff0c;這篇文章主要以LlamaIndex為…