查看: 895|回复: 16
打印 上一主题 下一主题

ADXL345使用技巧

[复制链接] qrcode

562

主题

597

帖子

1764

积分

金牌会员

Rank: 6Rank: 6

积分
1764
楼主
跳转到指定楼层
发表于 2015-3-4 03:05 AM | 只看该作者 回帖奖励 |正序浏览 |阅读模式
以下帖子转载自:小磷光一的博客

ADXL345是一种三轴加速度计。当ADXL345沿检测轴正向加速时,它对正加速度进行检测。在检测重力时需要注意,当检测轴的方向与重力的方向相反时检测到的是正加速度。

ADXL345通过3线式或4线式模式进行通信。

图1所示为4线式SPI模式的电气连接。注意,当使用3线式SPI模式时可断开SDO引脚。


图1、4线式连接

图2所示为推荐的3线式模式电气连接。器件的7位I2C地址是0x53,紧随其后的是R/W位。用户通过将SDO/ALTADDRESS引脚连接到VDDIO引脚来选择I2C的替代地址。此配置下的7位I2C地址是0x1D,紧随其后的是R/W位。


图2、3线式连接

初始化时,ADXL345在启动序列期间工作在100 Hz ODR,在INT1引脚上有DATA_READY中断。设置其它中断或使用FIFO时,建议所使用的寄存器在POWER_CTL和INT_ENABLE寄存器之前进行设置。

读取数据时,DATA_READY中断信号表明数据寄存器中的三轴加速度数据已被更新。当新数据就绪时它会被置为高电平。(通过DATA_FORMAT寄存器,中断信号可设置为由低电平变为高电平)利用低-高跃迁来触发中断服务例程。可从DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0和DATAZ1寄存器中读取数据。为了确保数据的一致性,推荐使用多字节读取从ADXL345获取数据。

ADXL345为16位数据格式。从数据寄存器中获取加速度数据后,用户必须对数据进行重建。

DATAX0是X轴加速度的低字节寄存器,DATAX1是高字节寄存器。在13位模式下高4位是符号位。注意,可通过DATA_FORMAT寄存器设置其它数据格式POWER_CTL和INT_ENABLE寄存器之前进行设置。

同时ADXL345具有偏移寄存器,可进行偏移校准。偏移寄存器的数据格式是8位、二进制补码。偏移寄存器的分辨率为15.6 mg/LSB。如果偏移校准的精度必须高于15.6 mg/LSB,需要在处理器中进行校准。偏移寄存器将写入到寄存器的值相加来测试加速度。例如,如果偏移为+156 mg,那么应该往偏移寄存器写入−156 mg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

4

主题

17

帖子

40

积分

新手上路

Rank: 1

积分
40
17#
发表于 2016-1-3 06:02 PM | 只看该作者
单位是mg                                                                                                                                                                       
回复 支持 反对

使用道具 举报

1

主题

208

帖子

419

积分

中级会员

Rank: 3Rank: 3

积分
419
16#
发表于 2016-1-3 04:59 PM | 只看该作者
请问读取出的XYZ三轴加速度的值单位是什么?                                                                                                                                                                       
回复 支持 反对

使用道具 举报

2

主题

786

帖子

1590

积分

金牌会员

Rank: 6Rank: 6

积分
1590
15#
发表于 2016-1-3 02:49 PM | 只看该作者
我刚开始接触这款芯片,谁能给我一份ADXL345和51单片机连接的电路原理图吗或者说有没有相关的视频呢?                                                                                                                                                                       
回复 支持 反对

使用道具 举报

0

主题

6

帖子

16

积分

新手上路

Rank: 1

积分
16
14#
发表于 2016-1-3 12:49 PM | 只看该作者
你好! “Activity和Inactivity中断,分成两个工作方式,一个是AC、一个是DC,这两个工作方式对应的工作方式是不同的,AC对应的是新的采样点将以之前的某个采样点为参考,用两个采样点的差值与门限进行比较,来判断是否发生中断。”这段话中“之前的某个采样点”具体指哪个点?是模块上电时还是活动中断使能开启时??加入中断了,通过读寄存器INT_SOURCE和ACT_TAP_STATUS清中断后。采样点值得选取是否发生改变??期待您给予指点。谢谢!!                                                                                                                                                                       
回复 支持 反对

使用道具 举报

1

主题

208

帖子

419

积分

中级会员

Rank: 3Rank: 3

积分
419
13#
发表于 2016-1-3 10:14 AM | 只看该作者
请问您在调试过程中,能否测量到引脚电平的相应变化                                                                                                                                                                       
回复 支持 反对

使用道具 举报

0

主题

3

帖子

8

积分

新手上路

Rank: 1

积分
8
12#
发表于 2016-1-3 09:00 AM | 只看该作者
为什么ADXL345的启动函数void ADXL345_Start(); void ADXL345_Start() { SDA = 1; //拉高数据线 SCL = 1; //拉高时钟线 Delay5us(); //延时 SDA = 0; //产生下降沿 Delay5us(); //延时 SCL = 0; //拉低时钟线 }不执行呢?单步调试的时候直接跳过啦!硬件连接确定没问题,可能是什么原因呢?                                                                                                                                                                       
回复 支持 反对

使用道具 举报

0

主题

6

帖子

16

积分

新手上路

Rank: 1

积分
16
11#
发表于 2016-1-3 08:31 AM | 只看该作者
您好。I2C的连接请参考数据手册图40。注意上拉电阻,GND需要连接。                                                                                                                                                                       
回复 支持 反对

使用道具 举报

562

主题

597

帖子

1764

积分

金牌会员

Rank: 6Rank: 6

积分
1764
10#
 楼主| 发表于 2016-1-3 06:26 AM | 只看该作者
您好,为什么ADXL345的启动函数void ADXL345_Start();void ADXL345_Start(){SDA = 1;//拉高数据线SCL = 1;//拉高时钟线Delay5us(); //延时SDA = 0;//产生下降沿Delay5us(); //延时SCL = 0;//拉低时钟线}不执行呢?但不调试的时候直接跳过啦!采用i2c总线和51通信时,四线制只需要连接SCL SDA ALTADDRES CS四个引脚么?VCC和GND用不用连呢?                                                                                                                                                                       
回复 支持 反对

使用道具 举报

0

主题

3

帖子

8

积分

新手上路

Rank: 1

积分
8
9#
发表于 2016-1-3 05:25 AM | 只看该作者
您好。您描述的“0x30,0,0x30,0x31,0x3,0,”是什么含义。
POWER_CTL中的Measure是否置位。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表