@floatsd
2016-01-02T12:25:46.000000Z
字数 1848
阅读 910
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时钟 |
I2C状态下的引脚配置

芯片的寄存器信息

/******************************************************************** 函数: ADXL345_run()* 描述: 读取处理加速度器寄存器数据,识别板子十种不同姿态* 输入值:无* 返回值:无*****************************************************************/void ADXL345_run(){ADXL345_Read(DataXYZ); //连续6次分别读取0x32-0x37中的数据。ADXL345_DataProcess(DataXYZ,DataMg); //对数据进行处理if((DataMg[0] == OneG)&&(DataMg[3]== Positive)){ ledclose(); LED_ON(4); }else if((DataMg[0] == OneG)&&(DataMg[3]== Negative)){ ledclose();LED_ON(0); }else if((DataMg[1] == OneG)&&(DataMg[4]== Negative)){ ledclose(); LED_ON(6); }else if((DataMg[1] == OneG)&&(DataMg[4]== Positive)){ ledclose(); LED_ON(2); }else if((DataMg[2] == OneG)&&(DataMg[5]== Negative)){ ledclose(); }//*************************************************************8else if((DataMg[3]== Negative)&&(DataMg[4]== Negative)){ ledclose(); LED_ON(7); }else if((DataMg[3]== Negative)&&(DataMg[4]== Positive)){ ledclose(); LED_ON(1); }else if((DataMg[3]== Positive)&&(DataMg[4]== Positive)){ ledclose(); LED_ON(3); }else if((DataMg[3]== Positive)&&(DataMg[4]== Negative)){ ledclose(); LED_ON(5); }}