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