BMA250E是一款針對消費電子類應(yīng)用的低重力、數(shù)字式加速度傳感器,能夠測量三個相互正交的方向上的加速度大小。測量值由傳感器的ASIC電路,通過將采用了差動電容原理的,加速度微機(jī)械感應(yīng)結(jié)構(gòu)的輸出值轉(zhuǎn)換得到。BMA250E的封裝和接口設(shè)計可以滿足大多數(shù)情況下的硬件需求,極微小的引腳加上扁平的外形封裝非常適合于移動平臺的應(yīng)用。
BMA250E提供了1.2V到3.6V的供電電壓范圍,并且可以被編程以優(yōu)化在特定應(yīng)用中的性能和功耗。此外,該傳感器還集成了中斷控制器,從而使得在基于運動測量類的應(yīng)用中不再需要使用微控制器。BMA250E加速度傳感器能夠在手機(jī)、手持設(shè)備、計算機(jī)外設(shè)、人機(jī)界面、虛擬設(shè)備和游戲控制器中檢測傾斜、運動、靜止和振動狀態(tài)。
是一種先進(jìn)的BMA250,超小,三軸,低g加速度傳感器和數(shù)字接口,針對低功耗電子消費品的應(yīng)用程序。這個BMA250允許測量加速度在3個互相垂直的軸,因此感官傾斜,運動,沖擊和振動在手機(jī),手機(jī),計算機(jī)外設(shè),人機(jī)界面,虛擬現(xiàn)實的特性和游戲控制器。
BMA250支持兩種操作模式:
1)流數(shù)據(jù)模式:加速數(shù)據(jù)直接讀出通過傳感器的數(shù)字接口和計算系統(tǒng)μController、應(yīng)用處理器或基帶處理器。
2)中斷發(fā)動機(jī)模式:加速數(shù)據(jù)計算已經(jīng)在BMA250的集成,可編程中斷發(fā)動機(jī)。根據(jù)可編程設(shè)置綜合中斷發(fā)動機(jī)BMA250的信號發(fā)生一定的通過傳感器事件的兩個中斷pin。相應(yīng)的寄存器的BMA250可以很容易地設(shè)置和讀出通過數(shù)字傳感器接口。
BMA250目標(biāo)應(yīng)用程序及特性
顯示切換姿態(tài)(肖像/景觀, 此卡/臉朝下轉(zhuǎn)換) 平檢測
絲錐傳感功能 菜單滾動
游戲
高級電源管理為移動設(shè)備 休克和自由落體檢測 步驟計算
傾斜賠償電子羅盤
I2C和SPI(3線/ 4電線)數(shù)字化串行接口。傳感器參數(shù),如g范圍或低通濾波器的設(shè)置,也可以很容易地中斷引擎設(shè)置程序通過數(shù)字接口。
看bma250E的datasheet快一個星期了,感覺這個datasheet寫的確實不怎么好,沒有bma250那么完整。
從工作模式上說,有六個工作模式,除了normal模式外,還有5個低功耗,但是datasheet里面只有低功耗模式的具體描述,并沒有normal mode的相關(guān)介紹(其實他覺得沒必要吧,所有的功能都在運轉(zhuǎn)沒有什么好說的)。
關(guān)于數(shù)據(jù)采集,除了中斷方式外,肯定還有數(shù)據(jù)流模式,即外部可以通過輪詢的方式訪問3D數(shù)據(jù)。但是呢,datasheet里還是沒有介紹(這個他是不是覺得還沒有必要呢?!我給你提供了中斷接口了還是兩個,你好好用就行了啊)。
另外一個我不得不說的是,中斷引腳,int1和int2,設(shè)置了開漏輸出(open-driver)和推挽輸出(push-pull)(博世想把它做成一款mcu嗎?),我覺得是很沒有必要的(除了我認(rèn)知范圍以外)。
還有一個,就是第11引腳了,datasheet里面說了“In case the I2C interface shall be used, a direct electrical connection between Vddio supply and the PS pin is needed in order to ensure reliable protocol selection. For SPI interface mode the PS pin must be directly connected to GNDio”,那如果PS引腳懸空呢??在bma250里面,這個引腳懸空帶來的是另外一種工作模式,但是在250E里面,并沒有相關(guān)的說明。
分析了一下bma250E的驅(qū)動代碼,是mtk下的,使用I2C接口。我把他移植到了stm32下面,并使用SPI接口,關(guān)閉所有中斷,設(shè)置了工作模式normal mode,采用輪詢的方式訪問數(shù)據(jù)(測試),采集到的數(shù)據(jù)沒有問題。但是在其他板子上,出現(xiàn)了一個問題,那就是一段時間后,數(shù)據(jù)不再變化,好像數(shù)據(jù)寄存器里面的數(shù)據(jù)沒有被更新。
bma250E的初始化代碼:
View Code
首先是SPI接口的初始化,另外軟件復(fù)位,初始化設(shè)備信息,設(shè)置范圍和帶寬,設(shè)置數(shù)據(jù)源和讀方式,設(shè)置工作模式并關(guān)閉所有中斷,最后通過調(diào)用驅(qū)動里的bma250_read_accel_xyz(),得到每個方向軸的加速度數(shù)據(jù)。
關(guān)于加速度數(shù)據(jù)的說明:
2G:256LSB/g
4G:128LSB/g
8G:64LSB/g
16G:32LSB/g
解釋:如果采用2G的范圍,采集到的數(shù)據(jù)x軸方向是256的話,那么在x軸方向,其加速度是1g