資源簡介
以新塘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的方波發生器
評論
共有 條評論