adxl345.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #ifndef __ADXL345_H
  2. #define __ADXL345_H
  3. #include "myiic.h"
  4. //////////////////////////////////////////////////////////////////////////////////
  5. //本程序只供学习使用,未经作者许可,不得用于其它任何用途
  6. //ALIENTEK战舰STM32开发板
  7. //ADXL345 驱动代码
  8. //正点原子@ALIENTEK
  9. //技术论坛:www.openedv.com
  10. //修改日期:2012/9/12
  11. //版本:V1.0
  12. //版权所有,盗版必究。
  13. //Copyright(C) 广州市星翼电子科技有限公司 2009-2019
  14. //All rights reserved
  15. //////////////////////////////////////////////////////////////////////////////////
  16. #define DEVICE_ID 0X00 //器件ID,0XE5
  17. #define THRESH_TAP 0X1D //敲击阀值
  18. #define OFSX 0X1E
  19. #define OFSY 0X1F
  20. #define OFSZ 0X20
  21. #define DUR 0X21
  22. #define Latent 0X22
  23. #define Window 0X23
  24. #define THRESH_ACK 0X24
  25. #define THRESH_INACT 0X25
  26. #define TIME_INACT 0X26
  27. #define ACT_INACT_CTL 0X27
  28. #define THRESH_FF 0X28
  29. #define TIME_FF 0X29
  30. #define TAP_AXES 0X2A
  31. #define ACT_TAP_STATUS 0X2B
  32. #define BW_RATE 0X2C
  33. #define POWER_CTL 0X2D
  34. #define INT_ENABLE 0X2E
  35. #define INT_MAP 0X2F
  36. #define INT_SOURCE 0X30
  37. #define DATA_FORMAT 0X31
  38. #define DATA_X0 0X32
  39. #define DATA_X1 0X33
  40. #define DATA_Y0 0X34
  41. #define DATA_Y1 0X35
  42. #define DATA_Z0 0X36
  43. #define DATA_Z1 0X37
  44. #define FIFO_CTL 0X38
  45. #define FIFO_STATUS 0X39
  46. //0X0B TO OX1F Factory Reserved
  47. //如果ALT ADDRESS脚(12脚)接地,IIC地址为0X53(不包含最低位).
  48. //如果接V3.3,则IIC地址为0X1D(不包含最低位).
  49. //因为开发板接V3.3,所以转为读写地址后,为0X3B和0X3A(如果接GND,则为0XA7和0XA6)
  50. #define ADXL_READ 0X3B
  51. #define ADXL_WRITE 0X3A
  52. u8 ADXL345_Init(void); //初始化ADXL345
  53. void ADXL345_WR_Reg(u8 addr,u8 val); //写ADXL345寄存器
  54. u8 ADXL345_RD_Reg(u8 addr); //读ADXL345寄存器
  55. void ADXL345_RD_XYZ(short *x,short *y,short *z); //读取一次值
  56. void ADXL345_RD_Avval(short *x,short *y,short *z); //读取平均值
  57. void ADXL345_AUTO_Adjust(char *xval,char *yval,char *zval);//自动校准
  58. void ADXL345_Read_Average(short *x,short *y,short *z,u8 times);//连续读取times次,取平均
  59. short ADXL345_Get_Angle(float x,float y,float z,u8 dir);
  60. #endif