[关闭]
@floatsd 2016-01-02T12:25:46.000000Z 字数 1848 阅读 790

实验七 三轴加速度传感器

CM4实验报告


实验目的

  • 依旧是通信,这次是用控制板子上的三轴加速度传感器ADXL345。
  • 这次不用串口,而是通过得到的数据识别板子的姿态。因为ADXL345本身就会把得到的数据以数字形式存放在寄存器里,所以直接读取即可,不需要用到模数转换ADC模块。
  • 学会单步观察参数调节程序。
  • 需要用到模块:ADXL345,

实验原理

引脚编号 引脚名称 描述
1 Vdd 数字接口电源电压
2 GND 该引脚必须接地
3 RESERVED 保留。该引脚必须连接到VC或者保持断开
4 GND 该引脚必须接地
5 GND 该引脚必须接地
6 VC 电源电压
7 CS 片选
8 INT1 中断1输出
9 INT2 中断2输出
10 NC 内部不连接
11 RESERVED 保留。该引脚必须接地或保持断开
12 SDO/ALT ADDRESS 串行数据输出(SPI4线)备用I2C地址选择
13 SDA/SDI/SDIO 串行数据(I2C)串行数据输入(SPI4)/串行数据输入和输出(SPI3)
14 SCL/SCLK 串行通信时钟,SCL为I2C时钟SCLK为SPI时钟

实现功能

实验代码

  1. /*******************************************************************
  2. * 函数: ADXL345_run()
  3. * 描述: 读取处理加速度器寄存器数据,识别板子十种不同姿态
  4. * 输入值:无
  5. * 返回值:无
  6. *****************************************************************/
  7. void ADXL345_run(){
  8. ADXL345_Read(DataXYZ); //连续6次分别读取0x32-0x37中的数据。
  9. ADXL345_DataProcess(DataXYZ,DataMg); //对数据进行处理
  10. if((DataMg[0] == OneG)&&(DataMg[3]== Positive))
  11. { ledclose(); LED_ON(4); }
  12. else if((DataMg[0] == OneG)&&(DataMg[3]== Negative))
  13. { ledclose();LED_ON(0); }
  14. else if((DataMg[1] == OneG)&&(DataMg[4]== Negative))
  15. { ledclose(); LED_ON(6); }
  16. else if((DataMg[1] == OneG)&&(DataMg[4]== Positive))
  17. { ledclose(); LED_ON(2); }
  18. else if((DataMg[2] == OneG)&&(DataMg[5]== Negative))
  19. { ledclose(); }
  20. //*************************************************************8
  21. else if((DataMg[3]== Negative)&&(DataMg[4]== Negative))
  22. { ledclose(); LED_ON(7); }
  23. else if((DataMg[3]== Negative)&&(DataMg[4]== Positive))
  24. { ledclose(); LED_ON(1); }
  25. else if((DataMg[3]== Positive)&&(DataMg[4]== Positive))
  26. { ledclose(); LED_ON(3); }
  27. else if((DataMg[3]== Positive)&&(DataMg[4]== Negative))
  28. { ledclose(); LED_ON(5); }
  29. }

实验结论

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注