@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时钟 |
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(); }
//*************************************************************8
else 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); }
}