標(biāo)題: MMA8451中文資料手冊(cè)下載 [打印本頁]

作者: 629soft    時(shí)間: 2018-10-27 08:44
標(biāo)題: MMA8451中文資料手冊(cè)下載
這是我最近找到的三軸加速度MMA8451的中文手冊(cè)和操作流程,現(xiàn)在發(fā)上來分享給大家

MMA8451三軸加速度傳感器,16引腳,QFN封裝,數(shù)字I2C輸出,8位/14位精度可選,量程2g/4g/8g可選,電源供電1.95v~3.6v可選。輸出數(shù)據(jù)速率從1.56到800Hz。有兩個(gè)可編程的中斷引腳,7個(gè)中斷源?蓹z測(cè)自由落體、運(yùn)動(dòng)、脈沖、振動(dòng)等、傾角等。
32個(gè)采樣FIFO,每次采樣都通過高通濾波后傳入FIFO。
典型應(yīng)用有:電子羅盤,靜態(tài)姿態(tài)、運(yùn)動(dòng)檢測(cè),筆記本電子書等便攜設(shè)備的翻滾、自由落體檢測(cè),實(shí)時(shí)的方向檢測(cè)可用于虛擬現(xiàn)實(shí)設(shè)備或3d游戲中的位置檢測(cè),便攜設(shè)備的節(jié)能應(yīng)用中的運(yùn)動(dòng)檢測(cè)等等。
芯片外形
              不同姿態(tài)下X、Y、Z三軸對(duì)應(yīng)的重力輸出
典型連接
引腳定義如下:
引腳編號(hào)
引腳名稱
引腳描述
引腳狀態(tài)
1
VDDIO
內(nèi)部電源供電(1.62~3.6v)
輸入
2
BYP
旁路電容
輸入
3
NC
懸空引腳
開路
4
SCL
I2C串行時(shí)鐘
漏極開路
5
GND
接地
輸入
6
SDA
I2C串行數(shù)據(jù)
漏極開路
7
SA0
I2C最低有效位地址
輸入
8
NC
懸空引腳
開路
9
INT2
中斷請(qǐng)求引腳2
輸出
10
GND
接地
輸入
11
INT1
中斷請(qǐng)求引腳1
輸出
12
GND
接地
輸入
13
NC
懸空引腳
開路
14
VDD
電源(1.95~3.6v)
輸入
15
NC
懸空引腳
開路
16
NC
懸空引腳
開路
靈敏度由count/g表示,2g量程下,可達(dá)4096/g,4g量程下,可達(dá)2048/g,8g量程下,可達(dá)1024/g
MMA8451狀態(tài)轉(zhuǎn)換圖
MMA8451內(nèi)部框圖,分為數(shù)字部分和模擬部分
在OFF模式下,數(shù)字部分和模擬部分都不工作
在STANDBY模式下,IIC通信照常進(jìn)行,但模擬模塊被禁止,內(nèi)部時(shí)鐘停止
在ACTIVE模式下(WAKE或SLEEP),IIC通信照常進(jìn)行,數(shù)字和模擬模塊都正常工作
I2C串行通信
MMA8451使用I2C串行通信和外部交換數(shù)據(jù),MMA8451可通過中斷信號(hào)指示新的采樣序列可用,也可通過設(shè)置使用中斷信號(hào)指示設(shè)備的移動(dòng)、自由落體、瞬變、方向、單/雙擊。
I2C總線使用三根信號(hào)線進(jìn)行通信,分別是SCL、SDA和SA0,外部上拉電阻需要將SDA和SCL接到VDDIO上,當(dāng)總線空閑時(shí),這兩根線表現(xiàn)為高電平狀態(tài)。MMA8451的I2C接口可工作在快速模式400KHz或普通模式100KHz。
總線傳輸開始由START信號(hào)觸發(fā),START信號(hào)定義為,當(dāng)數(shù)據(jù)線從高電平跳變到低電平,而時(shí)鐘線SCL仍然保持高電平。由主機(jī)發(fā)送START信號(hào)過后,I2C總線被認(rèn)為從空閑(free)狀態(tài)進(jìn)入忙(busy)狀態(tài)。緊接著START信號(hào)后主機(jī)發(fā)送的字節(jié),前7位用于指示從機(jī)地址,第8位用于指示數(shù)據(jù)方向是讀出(1數(shù)據(jù)從從機(jī)到主機(jī))還是寫入(0數(shù)據(jù)從主機(jī)到從機(jī))。地址發(fā)送完畢后,總線上的所有從機(jī)將自己的地址和總線上接收到的地址進(jìn)行比較,地址匹配的設(shè)備即為主機(jī)選中設(shè)備。第9個(gè)脈沖為應(yīng)答響應(yīng),發(fā)送設(shè)備必須在這個(gè)ACK周期內(nèi)釋放數(shù)據(jù)線,而接收設(shè)備則需要在ACK周期的時(shí)鐘高電平期間將數(shù)據(jù)線拉低。
SCL 線是高電平時(shí),SDA 線由低電平向高電平切換,這個(gè)情況表示停止條件。停止條件將終止發(fā)送器的發(fā)送。
主機(jī)也可重復(fù)發(fā)出起始(START)條件,對(duì)于MMA8451,重復(fù)的起始條件可用于讀取一些特殊的寄存器。
MMA8451的地址被設(shè)置為0x1c或0x1d,可用引腳7(SA0)的高低電平來選擇。當(dāng)SA0為高電平時(shí),0x1d地址被選中有效,當(dāng)SA0為低電平時(shí),0x1c地址被選中有效。
重點(diǎn)概念:
START條件:時(shí)鐘線SCL為高電平期間,數(shù)據(jù)線從高電平跳變到低電平
START代碼,使用IO口模擬IIC
/*******************************************
I2C START信號(hào)
時(shí)鐘脈沖高電平期間,數(shù)據(jù)線負(fù)跳變
********************************************/
void IIC_start(void)
{
  IIC_SCL=0;//時(shí)鐘線低
  IIC_SDA=1;//數(shù)據(jù)線高
  _asm(nop);
  IIC_SCL=1;//時(shí)鐘線高
  _asm(nop);
  IIC_SDA=0;//數(shù)據(jù)線從高跳變到低
  _asm(nop);
  IIC_SCL=0;//時(shí)鐘線低
}
STOP條件: 時(shí)鐘線SCL為高電平期間,數(shù)據(jù)線從低電平跳變到高電平
/*******************************************
I2C STOP信號(hào)
時(shí)鐘脈沖高電平期間,數(shù)據(jù)線正跳變
********************************************/
void IIC_stop(void)
{
IIC_SCL=0;//時(shí)鐘線低
  _asm(nop);
IIC_SDA=0;//數(shù)據(jù)線低
  _asm(nop);
IIC_SCL=1; //時(shí)鐘線高
  _asm(nop);
IIC_SDA=1;//數(shù)據(jù)線正跳變
_asm(nop);
IIC_SCL=0;//時(shí)鐘線低
}
ACK:確認(rèn),由地址匹配成功的從機(jī)在第9個(gè)脈沖周期內(nèi)發(fā)出,這時(shí)主機(jī)釋放數(shù)據(jù)線,從機(jī)在時(shí)鐘高電平期間將數(shù)據(jù)線置為低電平。
MMA8451的I2C操作:
主機(jī)發(fā)送START,緊接著主機(jī)給出7位地址(0x1d或0x1c),并置第8位為0,表示數(shù)據(jù)從主機(jī)到從機(jī)。從機(jī)匹配地址后,返回確認(rèn)ACK信號(hào),接著主機(jī)傳輸8位寄存器地址,從機(jī)返回確認(rèn)ACK。主機(jī)再次發(fā)出START,并給出7位從機(jī)地址,并置第8位為1,表示數(shù)據(jù)從從機(jī)到主機(jī),從機(jī)確認(rèn)后返回8位寄存器數(shù)據(jù)。主機(jī)不確認(rèn),并發(fā)出STOP。
注意:除了START,STOP,ACK以外,其它數(shù)據(jù)在時(shí)鐘高電平期間必須維持不變。
單個(gè)字節(jié)讀時(shí)序
主機(jī)發(fā)送八位數(shù)據(jù)或地址代碼如下(使用IO口模擬)
//*************************************************
//字節(jié)發(fā)送程序
//發(fā)送c(可以是數(shù)據(jù)也可是地址),送完后接收從應(yīng)答
//不考慮從應(yīng)答位
void send_byte(unsigned char c)
{
unsigned char i;
for(i=0;i<8;i++)
{
IIC_SCL=0;
if((c<<i) & 0x80)IIC_SDA=1; //發(fā)送1
else IIC_SDA=0;  //發(fā)送0
_asm(nop);
IIC_SCL=1;//時(shí)鐘高電平
_asm(nop);
IIC_SCL=0;//時(shí)鐘低電平
}
_asm(nop);//第9個(gè)脈沖
IIC_SDA=1; //發(fā)送完8bit,釋放總線準(zhǔn)備接收應(yīng)答位
_asm(nop);
IIC_SCL=1;
_asm(nop); //sda上數(shù)據(jù)即是從應(yīng)答位
IIC_SCL=0; //不考慮從應(yīng)答位,但要控制好時(shí)序
}
**注意:發(fā)送設(shè)備地址時(shí),MMA8451地址為0011100(0x1c,SA0=0)或0011101(0x1d,SA0=1),可將SA0引腳直接接地或接高電平,以接高電平為例,地址為7位,高位在前,地位在后,第8位為數(shù)據(jù)方向選擇,若后續(xù)數(shù)據(jù)為主機(jī)到從機(jī),則為0,若后續(xù)數(shù)據(jù)為從機(jī)到主機(jī),則為1。
以單個(gè)字節(jié)讀為例,地址設(shè)為0x1d,見時(shí)序圖,START信號(hào)過后,則應(yīng)發(fā)送00111010,即0x3A
可先如下定義,#define MMA8451_ADD   0X3A
第二次發(fā)送地址,則后續(xù)數(shù)據(jù)為從機(jī)到主機(jī),第8位為1,可發(fā)送MMA8451_ADD+1即可


多字節(jié)讀和單字節(jié)讀基本相同,如果讀完單字節(jié)后,主機(jī)不發(fā)送NAK和STOP,并對(duì)從機(jī)響應(yīng)AK,則從機(jī)設(shè)備會(huì)自動(dòng)將主機(jī)發(fā)送的寄存器地址加1,并發(fā)送對(duì)應(yīng)的寄存器內(nèi)容,直到主機(jī)響應(yīng)NAK和STOP。

主機(jī)響應(yīng)AK或NAK程序代碼如下
//************************************************
//主應(yīng)答(包含ack:SDA=0和no_ack:SDA=1)
//入口參數(shù):ack_main:1,應(yīng)答ack,0,無需應(yīng)答nak
//注:ack:scl高電平期間,數(shù)據(jù)線低
//    nak:scl高電平期間,數(shù)據(jù)線高
void IIC_ack_main(unsigned char ack_main)
{
IIC_SCL=0;
if(ack_main)IIC_SDA=0; //ack主應(yīng)答
else IIC_SDA=1; //no_ack無需應(yīng)答
_asm(nop);
IIC_SCL=1;
_asm(nop);
IIC_SCL=0;
}

單個(gè)字節(jié)寫入和單個(gè)字節(jié)讀略有不同,區(qū)別在于發(fā)送為寄存器地址后,主機(jī)不再重復(fù)發(fā)送START信號(hào)和設(shè)備地址,而是直接給出寫入的數(shù)據(jù)。代碼如下:
多個(gè)字節(jié)寫和單個(gè)字節(jié)寫類似,只要主機(jī)發(fā)送STOP信號(hào),則可以連續(xù)寫入,寫入的寄存器地址自動(dòng)增加。

MMA8451寄存器:
7
6
5
4
3
2
1
0
ASLP_RATE1
ASLP_RATE0
DR2
DR1
DR0
LNOISE
F_READ
ACTIVE
ASLP_RATE[1:0]:設(shè)置睡眠模式采樣頻率,默認(rèn)00
DR[2:0]:數(shù)據(jù)速率選擇。默認(rèn)為000,800Hz
DR2
DR1
DR0
數(shù)據(jù)速率Hz
周期ms
0
0
0
800
1.25
0
0
1
400
2.5
0
1
0
200
5
0
1
1
100
10
1
0
0
50
20
1
0
1
12.5
80
1
1
0
6.25
160
1
1
1
1.56
640
注意:當(dāng)設(shè)備在睡眠模式下,數(shù)據(jù)輸出速率以ASLP_RATE[1:0]為準(zhǔn),DR設(shè)置速率無效。
LNOISE:

7
6
5
4
3
2
1
0
0
0
0
HPF_OUT
0
0
FS1
FS0
HPF_OUT:高通濾波器數(shù)據(jù)輸出使能。
HPF_OUT=1:使能;
HPF_OUT=0:禁止。
FS1:FS0:XYZ量程設(shè)置。
如下表所示:

FS1
FS0
量程
0
0
2g
0
1
4g
1
0
8g
1
1
保留


完整的Word格式文檔51黑下載地址:
MMA8451中文參考資料.doc (264 KB, 下載次數(shù): 27)




作者: admin    時(shí)間: 2018-11-1 15:47
好資料,51黑有你更精彩!!!
作者: admin    時(shí)間: 2018-11-1 15:47
好資料,51黑有你更精彩!!!
作者: 張福喜    時(shí)間: 2018-11-1 19:54
好資料,謝謝分享。
作者: 假期碼頭    時(shí)間: 2019-3-3 23:33

好資料,謝謝分享。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1