bma180手册翻译

来源:互联网 发布:主题壁纸软件 编辑:程序博客网 时间:2024/05/17 00:16


目录

BMA180 数码三轴加速度计...4

1.    特性... 4

1.2描述:...4

1.3量程介绍:...4

2.    最大额定值... 5

3.    框图... 5

4.    工作模式... 5

4.1     标准工作模式... 5

4.2 睡眠模式...6

4.3 唤醒模式...6

5.    数据转换... 6

5.1 加速度数据:...6

6.    内部逻辑功能... 7

6.1低g的中断逻辑:...7

6.2 高重力逻辑:...8

6.3 斜率检测:...8

6.4 敲击检测:...8

7.    全局内存映射... 8

7.1 总体描述:...8

7.2 寄存器:...9

7.3传感器参数可编程校准...9

7.4 EEPROM:...10

7.4.1 EEPROM读:...10

7.4.2  EEPROM写:...10

7.4.3 EEPROM保护:...11

7.4.4 EEPROM内容上传(生产测试之后)...11

7.4.5 ee_w_flag:EEPROM写标志...12

7.5镜像:...12

7.6 常用功能设置:...12

7.6.1量程:...12

7.6.2 bw:13

7.6.3 模式配置:...13

7.6.4 radout_12bit:...14

7.6.5 smp_skip(样本跳跃?):...15

7.6.6 Shadow_dis:15

7.6.7 Dis_reg:15

7.6.8 wake_up:16

7.6.9 wake_up_dur:...16

7.6.10 slope_alert:17

7.6.11 Dis_I2C-禁止I2C:...17

7.6.12 ee_cdl,ee_cd2-用户数据:...17

7.7 中断设定:...18

7.7.1 adv_int:18

7.7.2 new_data_int:19

7.7.3 Lat_int:19

7.7.4 低g中断:...20

7.7.5 high-g interrupt:21

7.7.6 Slope interrupt(任意运动中断)22

7.7.8 Tap sensing(敲击检测)...25

7.8 性能设置:...26

7.8.1 增益微调(灵敏度微调)...26

7.8.2 偏移微调:...27

7.9 控制寄存器描述:...29

7.9.1 reset_int:29

7.9.2 update_image:29

7.9.3 ee_w:29

7.9.4 st1:30

7.9.5 st0:...30

7.9.6 软件复位:...31

7.9.7 sleep:31

7.9.8 dis_wake_up:32

7.9.9 unlock_ee:...32

7.9.10 en_offset_x, offset_y, offset_z:32

7.10 状态寄存器:...32

7.10.1 first_tap sensing:...32

7.10.2S lope alert:33

7.10.3 low_th_int, high_th_int, slope_int_s, tapsens_int:33

7.10.4 low_th_s, high_th_s, slope_s, tapsens_s, offset_st_s:33

7.10.5 offset_st_s:33

7.10.6 x_first_int, y_first_int, z_first_int:...33

7.10.7 Status bits for acceleration or slope sign:...34

7.10.8 ee_write:34

7.11 数据寄存器:...34

7.11.1 temp:34

7.11.2 acc_x, acc_y, acc_z:...35

7.11.3 chip_id:36

8.    I2C及SPI接口... 37

9.    引脚输出... 37

10.           封装... 37

 

 

BMA180 数码三轴加速度计

1. 特性

1.2描述:

一款超高性能的数码三轴加速度计,有着可调节的加速度量程及带宽以及一体的体温计。

 

1.3量程介绍:

1 LSB(ADC) =0.25mg 在2g的量程中,而在1g的量程中,1LSB(ADC)=0.125mg

如1g被划分成8192个等份,所以每一等分约为0.125mg

 1.5g         5460

 2.0          4096

…..

 

1 LSB(TEMP)=0.5 C

温度量程:-40~85C

 

VDD供电电压:2.0-3.6v

数字接口VDDIO电压<=VDD,并且VDD不应该在VDDIO之后供电,1.2~3.6v

量程:1/1.5/2.0/3.0/4.0/8.0/16.0

低功耗650uA 低噪音975uA 睡眠模式 0.5uA

 

低通频宽:10、20、40、75、150、300、600、1200Hz

高通频宽:1Hz

带通频宽:0.2-300

温度传感器频宽275Hz

 

数据输出频率:2400Hz(低噪音) 1200Hz(低功耗)

2. 最大额定值

3. 框图

4. 工作模式

四种工作模式:低噪音、低功耗、睡眠模式、唤醒模式。

 

4.1   标准工作模式

1.     IC可以通过数据接口被寻址,状态寄存器可被读,控制寄存器及EEPROM值可以被读及写;此外,还可以激活一些内部逻辑电路及设置标准触发引脚。

2.     该模式下BMA180提供了4种不同的子模式

1):低功耗模式

2):低噪音模式

3):2个中间模式(超低噪音模式=更低频宽及更低功耗的低噪音模式),       这两种模式下的传感器的性能被限制。

4.2 睡眠模式

睡眠模式可以通过设置特定的控制位激活,睡眠模式下可以减少数据传输。推荐的切换回工作模式的方法有唤醒调用或者重置睡眠模式位清0.

 

睡眠模式在一下情况下可以考虑使用:

a)     :传感器在分时间段使用,激活及禁止的情况就根据它的使用率设定。工作循环周期=切换睡眠及标准模式的时间

b)     :小频宽的应用中,通过频繁的切换睡眠及标准模式可以节省大量的电。

 

循环周期下的电流消耗:略。。

4.3 唤醒模式

1)低功耗下的电流消耗为650uS

2)睡眠模式下<1uA

3)唤醒时间<2ms  启动时间<3.5ms

 

 

 

5. 数据转换

5.1 加速度数据:

加速度数据通过一个14位的ADC转换,14位数据可以LSB(低位存储)及MSB。

数据可以只通过MSB读取(8位)或者LSB和MSB一起(16位数包含有14数据及一个准备好位)

 

加速度值通过一个处在1200Hz的滤波器滤波(在低噪音和低功耗下),同样的所有的数据都可以通过两个数字滤波器处理来减少噪音等级(10-600Hz)并且滤除一些非预期的结果。

 

新数据的可用性通过以下两步检测:

1):LSB数据寄存器的0位标识数据是否已经被读或者数据是否是新

2):中断引脚可以被配置成标识新数据的可用性。数据获取和读取的同步保证了不必要的接口冲突,减少了系统功耗以及接口通信及数据转换之间的串扰

 

数据准备好中断的解释:对于一个频宽为1200Hz,其数据的更新周期需要花费417uS去更新所有的数据寄存器,在最后一个Z轴的数据被转换后中断脚被置高,新数据可以通过接口读出(推荐中断置高之后的20uS之内读出,这正处在下个温度值被转化的期间),被读取之后中断自动重置。

6. 内部逻辑功能

IC通过置中断引脚为高电平来通知主机系统所发生的特定情况(如新数据准备好标识或者加速度临界值)即使接口通信不起作用,这个特性可以被引申用来碧如低g检测、唤醒、及数据准备好。

 

中断行为可以通过一些控制位来编程,这些验证特定事件的标准可以被用来适应用户的应用同时IC输出可以特殊定义。

 

6.1低g的中断逻辑:

对于低重力检测,全轴的加速度数据的绝对值是严格检测的(全球准则),一个低重力的情况是可能发生的当所有的轴都低于最低临界值,如自由落体。中断引脚会被置高吐过临界值超过了一个最小的时间宽度,这个长短时间可编程。

 

低重力中断的功能可以通过一个位于非易失性的存储镜像总的控制位来打开关闭。这个功能可以存储作为IC的默认设置也可以迅速的在镜像中被改变。

 

低重力中断的重置可以通过一系列中断标志的主复位来完成,后者可以通过加速度信号本身翻转(一个可编程的滞留验证)。

 

6.2 高重力逻辑:

检测一个高重力时间一个更高的临界值可以被编程。这个逻辑同样可以通过控制引脚被触发,临界值,大小,重置表现都可以被编程。高低重力标准可以在逻辑上通过一个或运算结合起来。

 

6.3 斜率检测:

任何的运动算法都可以用来检测加速度的变化,因此它提供了一个加速度信号的相对评价标准。这个标准是加速度随着时间推移的梯度标准,可以检测动态的如重击,瞬时平衡如跌落,翻滚。甚至是轻微的变化。

 

6.4 敲击检测:

这个特性跟效率检测/任何运动检测相似,短时间内的两个敲击事件。

 

警报模式:

 

7. 全局内存映射

7.1 总体描述:

BMA180提供三种访问等级

1):可操作寄存器:数据寄存器,控制寄存器,状态寄存器,中断寄存器。通过串行接口直接访问。

2):默认设置寄存器:操作寄存器及加速度的默认值、温度修正值。默认访问阻塞,可通过串口在操作寄存器中设置控制位

3):博世保留寄存器:内部修正寄存器。保留。

 

BMA180的内存是现在不同的物理架构上,BMA80基本上是使用易失性的存储寄存器机型操作,存储器的易失部分可以改变并快速读取。这部分易失性存储器(也称为“image”)是非易失性存储器的副本(EEPROM).

 

EEPROM可用来为传感器的操作设置默认值,EEPROM是间接可写的,其值在上电或者软件重置之后复制到镜像寄存器中。当EEPROM字节的内容被写操作改变后,EEPROM下载到镜像寄存器也同样完成了。每次写操作之后EEPROM必须被软件重置。

 

 

数据寄存器:芯片标识,加速度值,温度

控制寄存器:激活自我测试,软件重启,切换到睡眠模式

状态寄存器:中断状态,自我检测状态

设置寄存器:功能设置(量程,频宽,模式,等等)中断设置

EEPROM:默认功能设置和中断设置,修正值

 

所有的EEPROM寄存器的值被复制到对应的镜像寄存器中

镜像寄存器被用来下砸EEPROM的值,一边用做IC功能,寄存器20H活到3FH直接对应EEPROM的40H到5FH

 

7.2 寄存器:

本传感器中有5中寄存器:测试,控制,镜像,状态,数据。所有的寄存器都是8位,镜像及控制寄存器用户可以直接读写。

 

7.3传感器参数可编程校准

 

存储寄存器计算

加速度值:2的补码?  3x14

温度:2的补码 8

 

7.4 EEPROM:

EEPROM存储器是用来调整模拟参数和设置中断功能,它由16个字组成,每个字16位(即一个字包含2*8位)。其与镜像存储器关系不再赘述。

 

7.4.1 EEPROM读:

直接的EEPROM读无法实现,读地址40H到5FH返回地址20H到3FH的内容。想要读取EEPROM寄存器可通过设置更新位update_image=1来将其值下载到镜像寄存器,从而读出对应的镜像寄存器值。

 

7.4.2  EEPROM写:

写EEPROM默认锁住以防止功能出错,在镜像寄存器的非保护区域设置ee_w为1来解锁写。同读操作,写操作也不是直接的,来源于对应的镜像寄存器的值通过发送写处理到地址40H-5FH将数据写入EEPROM。

 

由于EEPROM字大小为16位,所以处理写偶地址将写到地址A及A+1,而奇地址则被忽略。数据写处理被忽略(SPI)或者省略(I2C)。

 

例如:

SPI写地址50H来开始写操作(寄存器30H对应EEPROM50H,寄存器31H对应EEPROM51H)

EEPROM操作不应发生当一个update_image未断(EEPROM此时处在读模式),这意味着EEPROM的写操作在上电复位、软件复位以及update_image写1后的10ms内同样是禁止的。

EEPROM的写操作可以导致ADC转换结果不可用,因此EEPROM写之后的软件复位是必要的。

 

7.4.3 EEPROM保护:

EEPROM在地址5CH到5FH之间的位在写模式 下被保护,因为它包含有博世传感器的专有信息及设置。此外它还包含有ee_w_flag位用来检测在最终测试(如果用户写任何信息到非保护的EEPROM中)后任何的EEPROM写序列能否发生。

用户是不能写ee_w_flag位的。

而同样的镜像寄存器所对应着EPPROM区域的地址同样被EPPROM机制锁住以避免整体系统的功能异常。

7.4.4 EEPROM内容上传(生产测试之后)

1.     CRC:CRC代码可用来验证博世生产测试之后的校验是否已完成。

2.     CD1,CD2:每个IC的内容都不同,由于用户可以用这些字节来将任何数据存储在非易失性存储中,它的内容不影响ASIC的功能。

3.     模拟微调位(地址5BH到5EH):不同的IC内容不同。

4.     校准数据:数据及地址在下表中总结:

5.     chip_id(地址00h):03h

Register name

default value

offset_x, offset_y, offset_z, offset_t

calibrated value

gain_x, gain_y, gain_z, gain_t

calibrated value

tco_x, tco_y, tco_z

calibrated value

tcs

calibrated value

bw

0100b

range

010b

wake_up_dur

10b

slope_dur, mot_cd_r, ff_cd_r,

offset_finetuning

01b

mode_config

00b

tapsens_dur

100b

adv_int

1b

high_th

01010000b

low_th

00010111b

high_dur

0110010b

low_dur

1010000b

high_int_*, low_int_*,

tapsens_int_*, slope_int_*

1b

所有上表未提及的位默认设置都为0b.

 

 

 

7.4.5 ee_w_flag:EEPROM写标志

只要第一次的EEPROM写地址40h到5Bh操作发生,这个EEPROM位将被置1。任何非保护区域的写操作会导致内部寄存器的更新以及ee_w_flag被置1,由于这个位在EEPROM的保护区域,用户不能写回这个标志到0。

提示:不要将ee_w_flag与ee_w位搞混。

 

EEPROM擦写寿命:一个EEPROM是被限定有寿命次数的,超过影响传感器功能。

 

 

7.5镜像:

镜像写:写镜像默认锁住以防止功能异常。要解锁,使用同样的EEPROM写命令:设置ee_w为1.

镜像读:可直接读镜像,不需要执行特定的解锁操作。

 

7.6 常用功能设置:

7.6.1量程:

这3位用来选择满量程加速度范围:

range<2:0>

Full scale acceleration

range [+/- g]

ADC resolution

[mg/LSB]

000

1

0.13

001

1.5

0.19

010

2

0.25

011

3

0.38

100

4

0.50

101

8

0.99

110

16

1.98

111

Not authorised code

Not authorised code

切换量程之后它需要花费1/(2*频宽)的时间来保证滤波器提供正确的数据。

 

重要提示:传感器使用2g量程已经被校准,若是切换到8g甚至16g,偏移量可能达到400mg,若是使用这些量程,推荐使用一个一个偏移量修正。

 

 

 

7.6.2 bw:

一个一级模拟滤波器定义了最大的带宽为1.2kHz,为了进一步的提高信噪比,可以激活数字滤波器来进一步的减少频宽到10Hz,数字滤波器是一个二级滤波器。以下的4位对应着滤波器的选择(前8个是低通滤波器)。

bw<3:0>

Selected bandwidth (Hz)

0000

10

0001

20

0010

40

0011

75

0100

150

0101

300

0110

600

0111

1200

1000

high-pass: 1 Hz

1001

band-pass: 0.2 Hz .. 300 Hz

1010 to 1111

not authorized codes

在每次bw改变之后,bw可能禁止并且重新使能。(由于错误中断产生的风险)。

假如两个不同的bw值被写入,两个写队列之间的最小延长至少10uS,并且最新的那个值会被正确设定。这对镜像寄存器是有效的,而EEPROM访问世间安则慢得多,但不影响ASIC功能。Bw的设定要改变,频繁度低一些比较好。

7.6.3 模式配置:

 

BMA180在标准模式下有四个不同的工作子模式,通过设置mode_config位来配置如下:

mode_config

<1:0>

Description

00

Low noise mode -> highest current, low noise, full bandwidth (1200 Hz)

01

Not recommended

10

Not recommended

11

Low power mode -> BW is decreased by factor 2, lowest power, noise

higher than in low noise modes, output data rate = 1200 samples/sec

下表列出了模式配置,频宽,功耗电流,噪音之间的关系,允许选择最佳配置来优化程序性能(所有值都是典型值)。

modec

onfig

Explanation

bw for

bw-

setting

10 Hz

bw for

bw-

setting

1200 Hz

(1g, 1.5g, 2g)

bw for

bw-

setting

1200Hz

(3g,4g)

bw for

bw-

setting

is

1200Hz

(8g, 16g)

typical

current

(incl.

filtering)

[µA]

typical

noise

density

[µg/√Hz]

in 2g-

mode

00

low noise

mode

10

1200

1200

1200

1025

150

11

low power

mode

5

600

600

600

650

200

重要提示:

1):当bw降低了2倍到模式11b,所有的数字功能的计时

       和系统时钟与这个bw保持对应。

2):任何模式配置位的改变可能导致测量值的瞬态变化,瞬态相应的长度取决于       所选择的带宽。同样的,模式配置的改变可能导致一些伪中断。

瞬态响应的长度对应于一个与样本获取数量有关的值,样本值取决于滤波器频宽,如下所示:

Bandwidth

1200

600

300

150

75

40

20

10

No. of samples

0

6

9

18

35

64

127

253

强烈建议不要在一个应用程序中修改模式配置,在这种情况下,偏移微调仍在工作,但并不能保证设备在校准过程中正确安置。如果设备在超低造影模式下,频宽被限制了并且最高电流消耗可以被测量。为了节省功耗,频繁的切换操作到睡眠模式及返回是可以的(之前在4.2节提过),这对绝大多数应用程序没有问题。但是模式发生改变,偏移量的“切换”可能出错,从而要在应用程序中改变模式配置,抵消偏移量是有必要的。

EEPROM的模式配置位写入之后,有一个强制性的软件复位。

 

 

 

 

7.6.4 radout_12bit:

在加速度读取代码中,这个位允许将14位数据(为默认模式,readout_12bit=’0’)切换到12位数据(readout_12bit=’1’)。在这种情况下,LSB的后两位默认默认设为0,如果其它设备仅用12位的话这个功能就有用处了。

 

7.6.5 smp_skip(样本跳跃?):

这个位的含义是为了将MCU负载最小化,尤其在非常低的BW下,只有new_data_int=1的情况下这个位才有用。

1)当smp_skip被设为0,中断保持在1/T的更新周期

2)当smp_skip被设为1,中断依据于频宽,它是所选频宽的2倍。如,bw=0110b(600Hz),中断保持在采样率的一半,即1200Hz.bw=10Hz,中断则是20Hz.

使用这个位new_data_int=1的另外一个好处是噪音优化,当用户处理小数据速率,MCU负载效率相似,但是噪音可能更高,这是由于新数据收集的不停步(接口流量增加的噪音)。

 

7.6.6 Shadow_dis:

当数据LSB被读出的时候,BMA180提供了这个可能性锁住MSB数据的更新,这避免了数据转换中LSB与MSB的混淆。当这个位置1时,MAB的“阴影程序”没有实现并且MSB是只读的。

 

 

7.6.7 Dis_reg:

当该位置1时,内部稳压器被禁用,这允许外部高稳定电源提供超低电压工作,这种情况下外部电源的PSRR直接决定中隔设备的PSRR.

提示:如果dis_reg=1,外部电压不得超过2v,强烈建议特殊刘毅对这个设备的软硬件设计。

重要:在VDD超过2v的情况下持续操作坑呢个导致传感器的损坏。

 

 

7.6.8 wake_up:

这个位使得BMA180在一个已定义的延时时间wake_up_dur之后从睡眠模式切换到标准模式。ASIC同样可以从标准状态切换到睡眠模式;一个中断条件必须定义,然后IC在所有的计算完成之后进入睡眠模式。

当IC从睡眠状态到标准模式,它开始收集加速度值然后执行终端验证。(1)如果一个锁存中断产生,这将唤醒微控制器,IC将会等待一个reset_int命令。(2)如果非锁存中断产生,设备在标准模式等待知道中断状态消失。(3)如果没有中断产生,IC将会进入睡眠模式20到2560ms。如果一个锁存中断之后没有reset_int则BMA180不能回到睡眠模式。

 

当设置wake_up为1之后,设备进入睡眠模式然后循环睡眠/唤醒/睡眠开始。IC唤醒最小时长取决于所采集的有效加速度数据个数来决定一个中断是否发生。

例如,bw=0111,low_int=1,low_dur=31d,IC需要low_dur=31d=31*5*Tupdate=64.6ms来决定是否加速度计处在low_th下。

 

要激活EEPROM中的wake_up位,如下过程是必须的:

1)置寄存器 dis_wake_up为1(唤醒模式被屏蔽)

2)置镜像寄存器wake_up为1

3)写寄存器wake_up到EEPROM,虚写地址0x54

4)置寄存器dis_wake_up为0(回到唤醒模式)

 

禁止EEPROM中的唤醒位,以下过程是必须的:

5)置寄存器dis_wake_up为1(唤醒模式被屏蔽)

6)置镜像寄存器wake_up为0

7)写寄存器wake_up到EEPROM,虚写地址0x54

8)置寄存器dis_wake_up为0(可选)

 

 

 

7.6.9 wake_up_dur:

这些位定义了每次自动唤醒之间的睡眠时长(以下计时对低噪音模式下有效,在低功耗下,睡眠延时翻倍)

wake_up_dur<1:0>

Sleep mode duration

(ms)

00

20

01

80

10

320

11

2560

 

 

 

 

7.6.10 slope_alert:

若此位置1,slope_th_criteria会将BMA180转入警报模式,这个位能够被adv_int屏蔽,当adc_int=0时,这个位的值被忽略,同理,如果slope_alert被使用,adv_int必须被置1.

 

7.6.11 Dis_I2C-禁止I2C:

这个位用来禁止I2C功能,默认情况下,两个接口都是可用的(dis_i2c=0),当CSB置高是将自动从SPI切换到I2C。如果使用SPI,强烈建议将dis_i2c置1以避免功能出错。

 

CRC-校验位:

CRC校验位用来验证微调代码的完整性。用来校验包装过程的EEPROM内容,它还可以检测用户端的微调过程是否执行了。

 

 

7.6.12 ee_cdl,ee_cd2-用户数据:

这2个字节可被用户在非易失性存储器中存储任何数据,它的内容不影响任何ASIC功能,其功能并不重要。

 

 

7.7 中断设定:

这个传感器提供了6种不同类型的用户可编程中断,当任意的中断条件有效时,中断脚置1。如果同一时间多个中断激活,只要有一个中断存在就会置高。中断可以选择为锁存(通过uC中断复位是必要的)或者非锁存(中断条件一消失中断也消失)。

中断的反生可能会被EEPROM,镜像,或控制位的改变干扰,因为它们的一些位影响中断计算。因此,当微控制器被中断触发时写队列不应该发生或者中断应该禁止当写队列正在操作的时候。

 

中断的标准使用数码滤波输出的数字代码,因而所有的临界值都是满量程选择(取决与量程控制位)。用户高加速度及低速度去弹跳的计时为绝对值。。。。没看懂。

所有的中断条件相结合通过一个或运算驱动中断引脚。

所有的中断在唤醒、系统复位、或者滤波带宽改变直到有足够的采样来评估中断条件之前都会被阻塞。所选择的中断在滤波设置上存在一个依赖。

1):如果low_filt=0, 中断条件的评估来源于非滤波数据并且可以在上电后立即开       启。

2): 如果low_filt=1,中断条件的评估来源于滤波数据并且应该在滤波器的瞬态 响应消失后立即使能。

非使能的中断一定不能设置为其它的超过0的时长。

只有当新数据允许读取的时候,新数据中断才允许使能。

 

7.7.1 adv_int:

这个位用来禁止三个中断控制位:slope_alert,slope_int和st_damp。如果adc_int=0,写这些中断控制位为1对IC功能没有影响(这些位被忽略)。这个特征用来避免上述中断造成的IC误操作:

adv_int

Advanced interrupt control bits

0

Can't be activated (writing them to 1 has no effect)

1

Functions of the bits are enabled

 

7.7.2 new_data_int:

若此位置1,当所有的三个加速度值为新时中断产生。BMA180在最近的串口数据读出之后更新所有的加速度值。新数据的检测产生的中断为锁存中断的话,微控制器必须在检测到中断高信号后写复位中断为1,此中断也可以通过任意的加速度字节的读取来复位(读访问地址02h到07h)。

 

新的数据中断常常在输出寄存器的Z轴数据更新之后发生(如果smp_skipping=0,速率为2.4kHz;如果smp_skipping=1,则处在2*bw 速率)。下表展示了两种当X轴数据读出并伴随着中断的例子。

图左:读X轴命令指向下一个X轴数据转换。

       当一个转换周期中的X轴转换完成之后触发新数据中断。

图右:X轴数据转换之后读取X轴

       当X轴数据已经更新了,在周期的末尾触发一个新的中断。

 

注意:当使用I2C接口来传输数据时,读取数据可能比417uS的时间要长(取决于I2C的时钟频率和传输的数据大小),开始一个新数据的读取队列可能处new_data_int还没有及时清除的情况下,这点必须适当的考虑。

7.7.3 Lat_int:

当这位被置1,中断被锁存:中断引脚保持高电平知道微控制器检测到中断并写reset_int控制位为1。

当这位置零,中断未被锁存,中断通过BMA180直接设置及复位(中断引脚清零后中断条件消失)。

以下的中断受锁存位lat_int影响:

1)高:高g中断(high-g检测)

2)低:低g中断(低g或者自由落体检测)

3)斜坡:斜坡或者任意的移动检测

4)敲击感应:双击检测。

 

 

 

 

7.7.4 低g中断:

大体描述:

其功能如下:传感器检测加速度值,然后将测量的值与预定的值进行比较。如果加速度值低于这个值的时间够长,一个低重力中断产生。如果加速度大于这个值,没有中断发生,加速度值的符号同样也要考虑,从而要先检测其绝对值然后与给定值比较。若是负数要先取绝对值吧。

 

由于不同的设备有不同的内部电路以及不同的PCB电路,这个传感器提供了不同的参数,这些配置能够优化低重力检测。

 

低重力中断配置参数及设定:

以下的配置参数/设定都提供了(全部的无符号整数)

low_int: 这位允许low_th_criterie产生一个中断.

low_th:定义低重力临界值

low_hy:定义相关联的低重力临界滞后,来防止在加速度信号太过接近临界值产        生永久中断。

low_int_x:定义是否发生在X轴的低重力事件产生一个低重力中断。

low_int_y:定义是否发生在Y轴的低重力事件产生一个低重力中断。

low_int_z:定义是否发生在Z轴的低重力事件产生一个低重力中断。

Low_filt:判断中断的产生是否带滤波(low_filt=1)或者不带滤波(low_filt=0)      的加速度信号 。

low_dur:低重力临界时长。

ff_cd_r:low_gcounter_down_register用来低重力标准下的防抖动计数。

 

备注:1、临界值代码与加速度值的8位MSB值做比较(绝对值),低重力临界          值因而可以在满量程范围内任意选择。

      2、加速度值的符号(已经启动了中断信号)仅当对应的使能位low_int_*       设置了的时候,存储在标志位low_sign_int_*。

 

当加速度信号超过了临界值,低重力标准low_th_creteria激活然后计数值ff_cd_r加一个Ncount(Ncount = 1LSB/(5xTupdate)=1 LSB/2.085ms,低噪音模式下),根据ff_cd_r寄存器的值,当low_th_criteria失败时,计数器可以复位或者倒计数。

 

ff_cd_r<1:0>

Low-g interrupt counter status when

low_th_criteria is false

00

reset

01

Count down by 1 NCOUNT

10

Count down by 2 NCOUNT

11

Count down by 3 NCOUNT

 

 

 

当低重力中断计数值与low_dur匹配,一个中断便发生了。若low_dur=0,只要适当的条件达到就会触发中断。

low_th_criteria设置了AND的条件,从而三轴的三个加速度值必须都要同时低于临界值足够长。

当latch_INT=0,中断为非锁存,一旦low_th_criteria失败就会重启。当中断发生,中断计数也会复位。

 

备注:当完成偏移的调节/存储过程后,偏移微调必须复位为00来重新使能低重力中断功能。

 

 

 

 

 

 

7.7.5 high-g interrupt:

大体描述:

BMA180提供了检测设备的高重力事件的可能。

其基本功能如下:传感器测量加速度值,并将其与一个预定的值比较。如果加速度值持续在这个值之上足够长,一个高重力中断产生。加速度值的符号也要考虑,从而要检测它的绝对值然后与给定值比较。

 

高重力中断配置参数及设定:

high_int: 这位允许high_th_criterie产生一个中断.

high_th:定义高重力临界值

high_hy:定义相关联的高重力临界滞后,来防止在加速度信号太过接近临界值产           生永久中断。

high_int_x:定义是否发生在X轴的低重力事件产生一个高重力中断。

high_int_y:定义是否发生在Y轴的低重力事件产生一个高重力中断。

high_int_z:定义是否发生在Z轴的低重力事件产生一个高重力中断。

high_filt:判断中断的产生是否带滤波加速度信号(low_filt=1)或者不带滤波          加速度信号(low_filt=0)。

high_dur:高重力临界时长。

mot_cd_r:motion_counter_down_register用来在高重力标准下的防抖动计数。

 

 

当加速度信号超过了临界值,高重力标准high_th_creteria激活然后计数值mot_cd_r加一个Ncount(Ncount = 1LSB/(5xTupdate)=1 LSB/2.085ms,低噪音模式下),根据mot_cd_r寄存器的值,当high_th_criteria失败时,计数器可以复位或者倒计数。

 

mot_cd_r<1:0>

High acceleration interrupt counter status when

high_th_criteria is false

00

reset

01

Count down by 1 NCOUNT

10

Count down by 2 NCOUNT

11

Count down by 3 NCOUNT

 

 

 

当低重力中断计数值与high_dur匹配,一个中断便发生了。若high_dur=0,只要适当的条件达到就会触发中断。

high_th_criteria设置了AND的条件,从而三轴的三个加速度值必须都要同时低于临界值足够长。

当latch_INT=0,中断为非锁存,一旦high_th_criteria失败就会重启。当中断发生,中断计数也会复位。

 

 

 

 

7.7.6 Slope interrupt(任意运动中断)

BMA180提供了检测斜坡/任意移动时间的可能性,基本功能如下:传感器检测加速度数据,并且内部存储。确定Sloped(acc_*)/dt并与给定的移动临界值比较。当车辆的斜坡绝对值比编程临界值高足够长时间中断或者斜坡警报产生。如果斜坡低于任意的移动临界保留值,中断复位。至少有一个轴方向导致了中断,斜坡中断执行(或运算连接)。

 

任意方向可能触发的中断。

斜坡中断配置参数及设定:

slope_int:此位使能slope_th_criteria产生中断,它不能与slope_alert同            时开启。该位可以被adv_int屏蔽(如果adv_int=0,slope_int的        值被忽略)。

slope_th:斜坡临界值,在所选择的量程内,LSB的大小在+/-2g量程内对应着          15.6mg。

slope_th_x:定义x轴的任意运动能够产生一个斜坡中断。

slope_th_y: 定义y轴的任意运动能够产生一个斜坡中断。

slope_th_z:定义z轴的任意运动能够产生一个斜坡中断。

Slope_filt:判断中断的发生是否是滤波还是非滤波加速度信号        (slope_filt=1/0)

          如果slope_filt=1,信号滤波并且斜率情况依据bw设定。

          如果slope_filt=0,型号非滤波,斜率依据于最大频宽

slope_dur:定于产生中断之前的中断计时。

slope_alert:设置了此位,将进入警报模式,此位可被adv_int屏蔽(asv_int=0,            slope_int的值被忽略)。

 

 

斜坡中断:算法

斜坡监测举例(bw= 0111b ,slope_dur=01b,slope_int=1)。在一个特定时间内,高斜率被检测到,然后中断引脚INT置1(高斜率至少要持续3个连续的数据点,这里直到t0)。如果斜率减弱,在特定的时间后,低斜率被检测到(再次保持3个持续的数据点)然后在t1时INT复位为0.

 

slope_dur用来滤波斜率检测,同时决定最小中断计时时长,因为复位条件同样也要滤波,最小中断计时为:slope_dur*n*Tupdate。

 

slope_dur<1:0>

Number of required consecutiv conditions

to set or reset the slope th criteria

00

1

01

3

10

5

11

7

 

slope_th_criteria用来产出一个斜坡中断或将BMA180转入警报模式,这个可通过slope_int和slope_alert来设定,这两个模式不能同时开启。

 

最后一个斜坡的符号,用来初始化一个中断或者警报信号,它存储在标志位slope_sign_int_*,自由党对应的使能位slope_int_*设置了,slope_sign_int_*是2的补码(0=正斜坡,1=负斜坡)。

 

斜坡检测至少一个轴导致了中断(OR运算连接),斜坡中断就会执行。数字滤波输出及频宽设定决定了斜坡标准:如斜坡时长大小=01b,频宽=0111b(1.2kHz),2*频宽=2.4k样本采样/s,这决定中断激活的反应时间3*417us=1.25ms,最小斜坡中断检测计时3*417us=1.25ms.

 

如果选择了更低的频宽

1)数字滤波值(更低噪音)考虑任何运动标准的验证和

2)时间规模衡量这个标准,要调整频宽、斜坡临界值、斜坡时长同样满量程使能来 裁剪斜坡算法的感应度。

 

 

7.7.8 Tap sensing(敲击检测)

总体概括

BMA180提供了检测两个连续斜坡事件来产生一个中断。

配置参数及设定描述:

tapsens_int:此位使能tapsens_criteria产生一个中断。

tapsens_th:定义敲击的临界值

tapsens_int_x:定义在x轴的敲击是否产生中断

tapsens_int_y:定义在y轴的敲击是否产生中断

tapsens_int_z:定义在z轴的敲击是否产生中断

tapsens_filt:判断中断的产生是否有滤波加速度信号

              1)如果tapsens_filt=1,信号滤波斜坡状况依照bw设置,从而               n=1200/BW

              2)如果tapsens_filt=0,信号非滤波,斜坡状况仅依靠最大的频               宽,从而n=1.

tapsens_dur:该值定义了两次加速度斜坡检测之间的最大延时,其值定义如下:

tapsens_dur<2:0>

Mode duration

mode

duration

[ms]

(low

noise

mode)

mode

duration

[ms]

(low

power

mode)

000

120*Tupdate

50

25

001

180*Tupdate

75

37,5

010

240*Tupdate

100

50

011

360*Tupdate

150

75

100

600*Tupdate

250

125

101

1200*Tupdate

500

250

110

1800*Tupdate

750

375

111

2400*Tupdate

1000

500

 

Tapsens_shock:如果斜坡检测在tapsens_shock内,不产生中断。??

 

敲击检测中断:算法

当tapsens_th_criteria标准设定后加速许斜率可以被检测。

敲击检测特性使用了两个加速度信号斜坡检测,第一个斜坡检测设置状态位first_tapsens_s为1,一个新的斜坡检测在tapsens_shock=(120*Tupdate)=50ms之后及tapsens_dur之前被检测,则新的中断信号产生。

 

以下条件至少有一个为真时,first_tapsens复位:

1)在敲击传感队列的过程中敲击传感特性被禁用

2)tapsens_dur周期超时

3)敲击检测中断发生

斜坡的符号初始化了中断信号,这个符号存储在标志位tasens_sign_int_*中,只有当对应的使能位tapsens_int_8被设定。

敲击感知功能使用OR运算定义,例如,如果所有的轴都被选择了(tapsens_int_x=tapens_int_y=tapsens_int_z=1),这个过程可以从X轴的脉冲开始,Z轴的脉冲结束。

 

 

 

 

7.8 性能设置:

性能设置偏移量、增益(灵敏度)、TCO和TCS都要考虑

 

7.8.1 增益微调(灵敏度微调)

传感器的微调(温度及三轴加速度值)在生产线上校准,对应位如下:

gain_t: Gaintrimming for temperature (5 bits).

gain_z: Gaintrimming for Z axis (7 bits).

gain_y: Gaintrimming for Y axis (7 bits).

gain_x:Gaintrimming for X axis (7 bits).

 

以上的代码是二进制偏移代码,例如X轴增益微调代码1000000是中间代码,没有微调。还有其他的从负修正到正:0000000,0000001,…..1111110,1111111.

 

提示:用户可以重新校准灵敏度,但是如果这样做了,EEPROM写入及初始化校准值都会丢失,这点必须考虑。

 

7.8.2 偏移微调:

总体描述:传感器提供了将偏移微调到非常小的可能值,这个可以分别的针对每个轴,保留的偏移量小于5mg,这个值取决于微调模式。

如果Z轴应该保持在1g的当量(2g模式下1g中4096LSB),Z轴新到的偏移必须调整到0g位置(通过旋转感应器),另一种方法来优化z通道1g位置的偏移是重新校准偏移量但使用z通道的微调而是z寄存器偏移(在2g模式下z偏移offset_z一位的改变相当于约27LSB_ADC=相当于7mg的步长),从而偏移量可以适当的调整,当然在这个位置下的灵敏度误差用偏移度误差补偿了。

 

偏移微调的配置参数及设置:

偏移微调方法通过一个叫做offset_finetuning的2位寄存器控制,调解过程本身是通过一个叫做en_offset_*的3位数据使能。

Offset_finetuning寄存器的定义如下:

offset_finetuning<1:0>

Offset regulation

00

no action

01 (default)

fine calibration

10

coarse calibration

11

full calibration

设置这两位使能偏移调节以及禁止自动低中断功能(low_int=0)

 

偏移消除有两个子功能:

1)粗校准:这是一个内置的纠正高达+/ -1g,除了传感器的标准偏移,使用这种校准方法可以消除z轴在应用(满量程校准优化是有必要的)中的1g偏移。粗校准是通过传感器内部的DAC进行的,从而最终的偏移同标准校准后一样。

2)精校准:精校准实在传感器的数字部分完成的,并允许在一步长之内达到偏移校准,这意味着7位对应一个通道,叫做fine_offset_*位(2的补码),下表定义了对应的fine_offset_*位和低中断位(早偏移微调模式,fine_offset_*位存储在以下提及的low_*位中)

满校准结合了这些校准数。

 

偏移微调算法:

以下的过程演示了偏移校准:

1.    设置offset_finetuning为一个不同于00的值,如果offser_finetuning位0置为1则低中断功能禁止。

2.    对应所选择的轴设置相关的en_offset_*位为1:

备注:

a)    如果超过一位被置为1,只有被选择的轴的位会被改变

b)    如果在偏移调节中任意的位被置为1,对应的位会被置为1,但是当前的调节不会售干扰。

c)     只要调节完成,所有的位传感器会自动复位为0.

一旦上述1、2过程完成,偏移校准队列开始:

a)    粗移校准被执行,新的偏移代码被存在相关的offset_*镜像寄存器中,对应步骤2中的所选择的轴。只有offset_finetuning=10或11,这个校准才会执行。

b)    精校准执行中使用内部平衡来完成最佳的精度(降噪)。实际上,平均的结果对应着fine_offset代码(偏移值)。。。。看不懂….待续。。

 

tc0_x,tc0_y和tc_z:

这18位(每个轴6位)用来实现每个轴上的温度偏移补偿,补偿直接在数字部分完成。

每个通道的TCO校准可以最小到-1.6mg/K

 

tco_range:

通过置位1,TCO范围从+/-1.6 mg/K 到 +/-6.4 mg/K,TCO步长从+/-0.05 mg/K 到 +/-0.20 mg/K。温度相关,先不管。。。。。

 

7.9 控制寄存器描述:

所有的单个控制位都是置1激活,一个真值表上的命令代码超过一位

 

7.9.1 reset_int:

这是一个one-shot制位,reset_int的表现如下:

a)     假如接收到了相关的中断锁存并且产生,在这种情况下,reset_int时间复位这个中断状态为没有发生。

b)     如果相关的中断没有锁存或者这个中断锁存了但是没有发生,它被忽略。

 

7.9.2 update_image:

当这个位置1b,一个镜像更新过程启动了:所有的EEPROM的内容被复制到镜像寄存器,当这个过程结束之后update_image位变为0。

在从EEPROM更新的过程中读写镜像寄存器以及写EEPROM都是不允许的。

自动更新镜像过程同样发生在:

a)     在上电复位后

b)     通过串口传输完soft_reset之后。

 

7.9.3 ee_w:

这一位必须置1来允许写数据到镜像寄存器(20h..3Bh)

I2C应答保护/非保护区域的过程:

a)     I2C从机地址:如果正确的话,BMA180设置应答

b)     I2C寄存器地址(I2C写):BMA180为非保护及保护寄存器设置应答。

c)     I2C写数据(I2C写):BMA180为非保护及保护的寄存器设置应答,保护寄存器不允许写操作。

d)     I2C写数据(I2C读):主机设置应答,可能没有错误检测

在上电复位或软件复位之后,ee_w=0.

 

7.9.4 st1:

这个自检位对MEMS并不产生任何静电力,但是可用来验证是否数字部分工作正常,以及微控制器能否中断响应。基本上模拟一个0g加速度,用户可以检测整个逻辑电路,包括中断,PCB路径完整性。low_th中断寄存器必须由用户置位st1才能生成一个低临界值中断(low_th->0.4g,low_dur=0ms).

 

7.9.5 st0:

这个自检命令使用静电力移动MEMS的共电极,无论用户如何设置自检只可以用于最高频宽。如果st0=1,内部模式对应的bw=0111.在自检期间,不应该有加速度概念发生以及微偏移补偿。

 

只要st0置位,自建序列开始,一个典型的大概每通道+-0.2g的加速度被模拟出来(这个加速度总结了实际的加速度,只要总体的结果处在满量程范围内),这个内部过程总共花费不超过10ms,所以数据的采集一定要快。

 

这个过程的示意图如下:

测试结束之后,传感器给st0写0(只要测试过程还在运行,st0就会保持为1,从而可以读取这位来判断自检是否结束)。

自检必须由以下决定:

1、测量x、y、z轴加速度

2、通过置位st0=1初始化自检

3、在5ms之内测量出out_xout_y out_z 存储所有的样本(低功耗下每个通道存储12个样本)。

4、检测st0是否为0 ,不是的话增加测量2ms时间,重复测量。

5、计算测量样本的最大及最小值,决定正还是负的自检结果

  self_pos_x = abs(x_max –x_nom)

  self_pos_y = abs(y_max –y_nom)

  self_pos_z = abs(z_max –z_nom)

  self_neg_x = abs(x_nom –x_min)

  self_neg_y = abs(y_nom –y_min)

  self_neg_z = abs(z_nom –z_min)

-  self test is o. k., if

  max(self_pos_x, self_neg_x)> 200 LSB

  max(self_pos_y, self_neg_y)> 200 LSB

 max(self_pos_z, self_neg_z) > 200 LSB

 

每次的自检序列之后建议有个软件复位。

器件有不同,检测只是粗略表述。矢量和可能更佳。

 

7.9.6 软件复位:

只要有值B6h写到这个字节,BMA180就会复位,其效果等同与上电复位。控制、状态、及镜像寄存器全部会复位到EEPROM中的初始值。在软件或者上电复位之后,BMA180会进入标准模式或者唤醒模式,不太坑呢个直接引导到睡眠模式。

在软件复位的10us之内不要有任何的串口命令。

 

7.9.7 sleep:

该位将传感器转入睡眠模式,加速度测量不再执行,但是控制及镜像寄存器没有清除。

当BMA180在睡眠模式,除了通过置位sleep=0或者软件复位将它唤醒以外,对它无法执行任何操作。因此除了用来唤醒或者软件复位的命令以外,任何的读写操作都被屏蔽了。

当睡眠模式移除后,它需要花费1ms来接收稳定的稳定的加速度值。用户在写EEPROM之前必须等待10ms,基于这个原因,BMA180一定不能在任何的更新镜像、自检。或者写EEPROM过程中转入睡眠模式。

 

提示:当唤醒模式使能之后,该位不应该置1.

 

7.9.8 dis_wake_up:

当dis_wake_up=1时,唤醒模式被禁止了,这是为了避免在EEPROM写初始化之前ASIC可能禁图睡眠模式。

 

7.9.9 unlock_ee:

unlock_ee寄存器允许访问EEPROM的禁区,但是不要重写之。

 

7.9.10 en_offset_x, offset_y,offset_z:

这几个one-shot控制位使能对应轴的偏移调节,为了调节所有的轴,有必要按序列使能这些位。

 

7.10 状态寄存器:

7.10.1 first_tap sensing:

当第一次敲击检测到了之后这个状态为置位,当至少满足以下一个条件时,此位复位:

1)   在敲击检测序列的过程中敲击检测特征禁止

2)   超过敲击检测预定时长tapsens_dur

3)   敲击检测中断发生

7.10.2S lope alert:

参考7.7.10节

 

7.10.3 low_th_int, high_th_int,slope_int_s, tapsens_int:

当对应的标准发生后这些锁存寄存器置位,当几个中断模式都使能了后,微控制器可以使用这些位来检测那种标准产生了中断。

假如中断没有锁存,状态位*_int同对应的位*_s,在7.11.4描述了。

禁止一个中断(如设置low_th_int为0)不应该复位激活锁存的中断状态位(比如low_th_int保持在1直到置reset_int为1后引发一个复位)。改变中断模式到非锁存模式(置lat_int为0)会立即复位所有的锁存中断状态位。

 

7.10.4 low_th_s, high_th_s,slope_s, tapsens_s, offset_st_s:

这些状态位在对应的标准发生之后置位,当状态消失或者对应的中断是锁存中断然后用户引发了reset_int后,这些位会自动被BMA180复位。

 

7.10.5 offset_st_s:

此状态位在偏移修正序列的最后或者数据自检的最后置位,它会在1*Tupdate之后被BMA180复位。

 

7.10.6 x_first_int, y_first_int,z_first_int:

这些锁存状态为可被微控制器用来检测在系统复位或者reset_int事件后,哪个轴的任何中断产生了。

 

7.10.7 Status bits foracceleration or slope sign:

这些锁存状态位可被用来知道加速度或者斜率的符号,这些符号初始化了中断或者警告信号(0是positive sign,1是negative one).

 

If theINT pad shall be asserted, sign bits are updated. The bits corresponding to thedisabled axes are set to ‘0’, the other ones are set to the corresponding sign.If the whole interrupt has been disabled, all the appropriate sign bitsa re setto ‘0’. If just one axis is disabled/enabled, the appropriate sign bit is nottouched; it is updated as soon as there is a generated interrupt.

锁存状态寄存器再有在上电复位或者软件复位后才能复位。

 

 

7.10.8 ee_write:

如果写EEPROM进行中此位置1,Any writingtransaction sent if ee_write=

‘1’ isignored。

 

7.11 数据寄存器:

7.11.1 temp:

A thermometer is embedded in the BMA180,temperature resolution is 0.5 K/LSBTEMP. Code 80h stands for lowest temperaturewhich is centered around -40°C and typical code for 25°C is 00000010 in 2’scomplement. Offset and gain are trimmable like the acceleration axes, thustemperature offset could be adjusted to achieve a range between -40°C and87.5°C by changing the offset_tregister (typical value 88d)。

 

 

7.11.2 acc_x, acc_y, acc_z:

加速度值存储在这几个寄存器中,通过串口读取。三个数为2的补码,如果readout_12位置1,LSB低两位固定为0。

从负的到正的加速度传感器数值,以下的序列是在2g测量范围内观察的:

-2.00000 g :  10 0000 0000 0000

-1.99975 g :  10 0000 0000 0001

...

-0.00025 g :  11 1111 1111 1111

0.00000 g :  00 0000 0000 0000

+0.00025g :  00 0000 0000 0001

...

+1.99950g :  01 1111 1111 1110

+1.99975g :  01 1111 1111 1111

随着数字滤波输出数据周期性更新,LSB的加速度值必须先读取,在LSB字节读取完之后,对应的MSB字节更新可以有选择的阻塞知道它被读取了(实际上,MSN内容复制到了镜像寄存器,MSB的获取不是直接来自这个复制,复制也不收更新的影响),从而MSB溢出可以避免。

 

若是shadow_dis=0,MSB 的字节不太可能被读出,,一个LSB字节必须先被读出,LSB同MSB不能隔开读取,要能够仅仅读出MSN,shadow_dis必须写1.

在acc_x_lsb, acc_y_lsb and acc_z_lsb的位置0 new_data_*flag也可以用来检测是否加速度值已经被读取。

 

若系统加速度值预计要读取,新数据中断应该采用。每次所有的温度+三个轴数据更新后,中断引脚INT置高,然后微控制器必须读取数据。使用这种方式,微控制器的获取与内部BMA180更新是同步的。如下:

同步读取序列和内部ADC转换有2个目的:

1)它保证了加速度值与被微控制器读取的对应数码值之间的持续切换。

2)SPI活动中产生的噪音常常来源于占较少部分时间的温度值转换过程中,每一个ADC转换要花费1/4Tupdate,从而这是最大的一个延时区,同时也是建议在这个最低噪音的情况下读取加速度值。

备注:

不使用新数据中断,传感器会始终处在特殊模式下,使用它可以极大的优化。

当加速度值的读取与新数据的中断同步时,每一个Tupdate只有一个读序列发生,同样的,四个通道(温度+3轴数据)在每次数据中断期间更新。

为了实现低噪音,在SCK SDI上不要激活态,SDO应该在期望读出加速度数据时发生。

new_data_x,new_data_y,new_data_z为标志位,当加速度寄存器已经更新后,其位置1,读加速度的MSB或者LSB会将这些标志位置0,这些标志位可被微控制器读取。

 

当第一个SPI传输的是读取一个acc(x,y或z)值,对应的MSB字节常常会是0x00来避免shadow_dis=0,下一次读取会是正确的。为了避免第一次错误读取,任何的SPI读写序列应该在上电之后及第一个acc(x, y, 或z)_lsb字节读取之前执行。

 

 

 

7.11.3 chip_id:

chip_id<2:0>是用户用来从使用同一个串行接口的其它芯片中分别出BMA180 ,代码固定为03h。

 

 

 

 

 

 

8. I2C及SPI接口

9. 引脚输出

10.        封装


0 0
原创粉丝点击