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