资源简介
以新塘NANO102LC2AN为平台,ADXL375驱动程序(4线SPI通信方式)亲测通过,并已经用于实际项目,
代码片段和文件信息
#ifndef _ADXL375_C
#define _ADXL375_C
#include “ADXL375.h“
#include “Delay.h“
#include “DS18B20.h“
//震荡传感器数据缓存数组,其中:
//ADXL375_Data[0]、ADXL375_Data[1]:X轴数据
//ADXL375_Data[2]、ADXL375_Data[3]:Y轴数据
//ADXL375_Data[4]、ADXL375_Data[5]:Z轴数据
uint8_t ADXL375_Data[6];
//ADXL375端口初始化
void Int_ADXL375_Io(void)
{
GPIO_SetMode(PC BIT4 GPIO_PMD_OUTPUT);//ADXL375_SCK
GPIO_SetMode(PC BIT5 GPIO_PMD_OUTPUT);//ADXL375_SDI
GPIO_SetMode(PC BIT9 GPIO_PMD_OUTPUT);//ADXL375_CS
GPIO_SetMode(PC BIT6 GPIO_PMD_INPUT);//ADXL375_SDO
GPIO_SetMode(PC BIT8 GPIO_PMD_INPUT);//ADXL375_IN1
GPIO_SetMode(PC BIT7 GPIO_PMD_INPUT);//ADXL375_IN2
// GPIO_EnableInt(PC7 GPIO_INT_FALLING);//使能PC7下降沿中断
// GPIO_EnableInt(PC8 GPIO_INT_FALLING);//使能PC8下降沿中断
// NVIC_EnableIRQ(GPABC_IRQn);//使能外部信号中断
ADXL375_CS_1;
ADXL375_SCK_1;
ADXL375_SDI_1;
ADXL375_set();//ADXL375初始化寄存器
}
//==============================================================================
//函数:uint SPI2_RW(uint uchar)
//功能:ADXL375的SPI写时序
//******************************************************************************
uint8_t SPI2_RW(uint8_t data)
{
uint8_t i;
uint8_t flag;
//ADXL375_SDI_0;
for(i=0;i<8;i++) // output 8-bit
{
if(data & 0x80)
{
ADXL375_SDI_1; // output ‘uchar‘ MSB to MOSI
}
else
{
ADXL375_SDI_0;
}
data <<= 1; // shift next bit into MSB..
//************注意:读取ADXL375_SDO时,ADXL375_SCK是先低后高,如下所示:****************//
ADXL375_SCK_0; // Set SCK high..
flag = ADXL375_SDO;
if(flag) // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
{
data|=0x01; // 读MISO到byte最低位
}
ADXL375_SCK_1; // ..then set SCK low again
}
return(data); // 返回读出的一字节
}
//ADXL375初始化设置
void ADXL375_set(void)
{
SPI2_RW_Reg(DATA_FORMAT0x0b);//设置为4线式SPI模式中断至低电平有,测量范围±16g,13位模式,右对齐(LSB)模式,并带有符号扩展功能
SPI2_RW_Reg(THRESH_SHOCK0x03);//冲击阈值2.34g
SPI2_RW_Reg(BW_RATE0x0A);//默认值为0x0A,转换为100Hz的输出数据速率
SPI2_RW_Reg(POWER_CTL0x08);//选择电源模式:正常模式
SPI2_RW_Reg(INT_ENABLE0x80);//使能 DATA_READY 中断
// SPI2_RW_Reg(INT_MAP0x80);
SPI2_RW_Reg(OFSX0x00);//X 偏移量
SPI2_RW_Reg(OFSY0x00);//Y 偏移量
SPI2_RW_Reg(OFSZ0x05);//Z 偏移量
}
//****************************************************************************************************
//函数:uchar SPI2_Read(uchar reg)
//功能:ADXL375的SPI时序
//****************************************************************************************************
uint8_t SPI2_Read(uint8_t address)
{
uint8_t reg_val;
ADXL375_CS_0; // CSN low initialize SPI communication...
SPI2_RW(address|sr); // Select register to read from..
reg_val = SPI2_RW(0xff); // ..then read registervalue
ADXL375_CS_1; // CSN high terminate SPI communication
return(reg_val); // return register value
}
//***************************************
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5534 2017-04-05 17:21 ADXL375驱动代码\ADXL375.c
文件 3521 2017-04-05 17:03 ADXL375驱动代码\ADXL375.h
目录 0 2017-04-06 09:10 ADXL375驱动代码
----------- --------- ---------- ----- ----
9055 3
- 上一篇:opencv300.props
- 下一篇:基于FPGA的方波发生器
评论
共有 条评论