AN-1078: ADXL346快速入门指南
物理安装
ADXL346 是一款3轴加速度计,检测轴如图1所示。
当ADXL346沿检测轴正向加速时,它对正加速度进行检测。检测重力时要注意,若检测轴的方向与重力的方向相反,则检测到的是正加速度。图2所示为输出对重力的响应。
ADXL346采用3 mm × 3 mm × 1 mm、16引脚小型超薄塑料封装。建议的印制电路板焊盘图形请参考ADXL346数据手册。
电气连接
ADXL346 通过 I2C 或SPI(3线式或4线式)进行通信。图3所示为推荐的4线式SPI模式电气连接。注意,当使用3线式SPI模式时可断开SDO引脚。
图4所示为推荐的 I2C 模式电气连接。该器件的7位 I2C 地址 是0x53,紧跟其后的是 R/W位。用户可以通过将SDO/ALT ADDRESS引脚连接到VDD I/O 引脚来选择I2C 的替代地址。该 配置的7位 I2C 地址是0x1D,紧跟其后的是 R/W 位。
有关电源去耦的详情,请参考ADXL346数据手册。
通信接口
表1列出了主机处理器通过SPI与ADXL346通信所需的典型配置。这些设置通常位于控制寄存器中。有关时序规范和命令序列,请参考ADXL346数据手册。
处理器设置 | 描述 |
主机 | ADXL346作为从机工作 |
SPI模式 | 时钟极性(CPOL) = 1 时钟相位(CPHA) = 1 |
位序 | MSB优先模式 |
对于 I2C 通信,处理器设置和时序规范以及命令序列请参考 ADXL346 数据手册和《UM10204 I2C 总线规范和用户手册》 03版(2007年6月19日)。
有时在开始下一个设计阶段前确认通信序列的有效性是很重要的。这可以通过读取DEVID寄存器(地址0x00)实现。它是一个只读寄存器,其内容为0xE6。如果从DEVID寄存 器中读取的数据不是0xE6,这说明物理连接或命令序列不正确。
初始化
图5所示为最小初始化序列。ADXL346在此启动序列期间工作在100 Hz ODR,在INT1引脚上有DATA_READY中断。设置其它中断或使用FIFO时,建议所使用的寄存器在 POWER_CTL和INT_ENABLE寄存器之前进行设置。有关ADXL346的其它操作模式和FIFO的详情,请参考ADXL346数据手册和AN-1025应用笔记。
读取输出数据
DATA_READY中断信号表明数据寄存器中的3轴加速度数据已被更新。当新数据就绪时它会被置为高电平。(通过DATA_FORMAT寄存器,中断信号可设置为由低电平变为 高电平。详情请参见ADXL346数据手册。)利用低-高跃迁来触发对中断服务程序的操作。数据从 DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0和DATAZ1寄存器中读取。为了确保数据的一致性,推荐使用多字节读取从ADXL346获取数据。图7所示为4线式SPI读序列实例。
数据格式
ADXL346采用16位数据格式。从数据寄存器中获取加速度数据后,用户必须对数据进行重建。DATAX0是X轴加速度的低字节寄存器,而DATAX1是高字节寄存器。在13位模式下,高4位是符号位(见图6)。注意,可通过DATA_FORMAT寄存器设置其它数据格式。详情请参见ADXL346数据手册。
ADXL346使用二进制补码数据格式。在13位模式下,1 LSB代表 3.9 mg.
16位代码 (十六进制) | 二进制补码表示 (十进制) | 加速度 (mg) |
0FFF | 4095 | +1599 |
… | … | … |
0002 | +2 | +7.8 |
0001 | +1 | +3.9 |
0000 | 0 | 0 |
FFFF | −1 | −3.9 |
FFFE | −2 | −7.8 |
… | … | … |
F000 | −4095 | −1600 |
使用自测功能
ADXL346提供自测功能来支持对器件的机电测试,无需外部机械激励。图8为推荐的自测序列。注意,当进行自测序列时,ADXL346应放置在稳定的环境中。
使用失调寄存器
ADXL346具有失调寄存器,可进行失调校准。失调寄存器的数据格式是8位二进制补码,分辨率为15.6 mg/LSB。如果失调校准的精度必须高于15.6 mg/LSB,则需要在处理器 中进行校准。失调寄存器会给测得的加速度增加写入的值。
对于这个校准程序,当施加0 g 输入时X/Y轴误差为零,而当施加1 g输入时Z轴误差为零。如果能在校准时旋转ADXL346,则可以达到更高精度。