Comments (3)
Hi 依蓉,
關於 slv0 & slv4 的差別可以參考 mpu9250 datasheet"4.14 MPU-9250 Solution Using SPI Interface"
就自己的實驗與理解,對於 single byte 的讀寫 slv4 較為合適,像是設定 mpu9250 裡的磁力計暫存器或是讀取 device id 之類的,對於重複讀取資料則是以 slv0~3 較合適,依所設定的 i2c 資訊與地址,自動器讀取磁力計的暫存器。
所以我是先透過 slv4 (this and this) 來設定磁力計、讀取 id 以及相關的校正參數,這部分只需要做一次,再設定 slv0 (this)來自動讀取磁力計的資料暫存器與狀態暫存器,最後只需要跟加速度與角速度一起讀出即可。
下面是讀取 mpu9250 九軸資料的實現 source code,因為 slv0~3 會透過 i2c 自動將從磁力計的資料讀取並存至暫存器 EXT_SENS_DATA_xx 裡,所以只須從該暫存器讀出,並判斷磁力計數據是否轉換完成(磁力計部分可參考 ak8963 datasheet)
另外關於 spi 讀取多顆 mpu9250 的部分,不同的 mpu9250 會接在相同的 sck, sdo, sdi 上,透過不同的 cs 來選擇要讀寫哪個 mpu9250,每個都是獨立去設定 slv0~4,不同的 mpu9250 間並不互相衝突,自然也就不會有你所說的"若使用Slave 4否適用在SPI讀取多顆MPU9250的情況"的問題了。
建議可以了解一下之前寫的 spi 讀取磁力計資料的程式,已經驗證過沒有問題,希望可以幫助到你 : )
from smartimu.
謝謝您的回答,請問SPI讀取磁力計資料的程式是指這支嗎?
我參考了您的流程實作後的程式碼如this,大致上的流程就是先做完InitialSensor之後,就直接進入ReadAll,num參數均為sensor編號,這邊只用一顆所以均設定為初始值0。
結果發現有以下兩個問題:
- line 178的
if(!(!(response[14] & AK8963_STATUS_DRDY) || (response[14] & AK8963_STATUS_DOR) || (response[21] & AK8963_STATUS_HOFL)))
response為我去讀取ACC~MAG資料的結果,會存在這個buffer內
這段我一直判斷出false,所以無法取得磁力計的資料
我抓了response的結果如下:
- 不只磁力計,加速規和陀螺儀我讀出來的資料也非常不穩定:
以上資料均為MPU9250平放時的結果
請問您有看出什麼樣的問題嗎?謝謝您!
from smartimu.
關於你的兩個問題:
1、直判斷出 false 的情況有可能是因為沒有設定好 slv0 的自動讀取或是磁力計的設定,可以在寫完後,再讀出來確認是否有正確寫入,另外是我比較你和我寫的,發現初始化的 clock source 不同,不知道有沒有差,有點懶得看 datasheet...,還有 delay 的部分(this line 140),速度太快會導致 i2c 還沒有寫完就被中斷掉了,延遲部分感覺問題比較大。
有試過讀取磁力計的 device id 還有之前的問題嗎?
2、磁力計的讀寫應該是影響不到陀螺儀和加速度計的,需要先確定是否在傳輸的部分有問題,可以先關閉 slv0 的自動讀取,再讀看看加速度計和陀螺儀是否還有相同問題。
因為手邊也沒有相同的硬體,很難幫忙除錯,只能比較自己寫的,
另外可以試試從感測器上拉出 AUX_CL 和 AUX_DA 的腳位,勾在示波器上,
確定 i2c 可以自動讀寫以及時脈是否有錯誤。
from smartimu.
Related Issues (7)
- SmartIMU board HOT 1
- TestMagnetometer
- MPU9250磁力計品質 HOT 7
- 一阶龙格库塔与构建增量四元数相乘有什么区别吗 HOT 7
- 板子是怎么画出这种效果的 HOT 3
- MSP430透過SPI讀取MPU9250 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smartimu.