#include "SC7A22H.h"
|
#include "mk_trace.h"
|
|
|
|
//ÂÖѯ»ñÈ¡ÈýÖáÊý¾ÝʾÀý
|
void SC7A22H_get_rawdata_Polling()
|
{
|
signed short SL_Read_Buf[3]={0};
|
signed short SL_XYZ_Data[3]={0};
|
unsigned char reg_value=0;
|
uint8_t data;
|
uint8_t buff[6];
|
//1.³õʼ»¯Í¨ÐŽӿÚ
|
SL_SC7A22H_I2c_Spi_Init(SL_SC7A22H_SPI_IIC_MODE);
|
|
//2.¸´Î»Ð¾Æ¬
|
SL_SC7A22H_Soft_Reset();
|
SL_SC7A22H_Delay_Ms(1000);
|
|
//3.¼ì²éÊÇ·ñÄܶÁȡоƬWHO AM I¼Ä´æÆ÷
|
SL_SC7A22H_Check();
|
|
//4.Æô¶¯ACC
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7F, 0x00);//goto 0x00
|
SL_SC7A22H_Delay_Ms(10);
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7D, 0x04);//PWR_CTRL ENABLE ACC
|
SL_SC7A22H_Delay_Ms(10);
|
|
//5.ÉèÖÃÁ¿³Ì
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x01);//ACC_RANGE ¡À4G
|
|
//6.ÉèÖÃÊä³öËÙÂʸüС¢¹¤×÷ģʽ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0x07);//ACC_CONF 50Hz ¸ßÐÔÄÜ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x05, 0x50);//I2C_CFG
|
|
|
while(1)
|
{
|
SL_SC7A22H_Delay_Ms(1000);
|
//7.Ñ»·¶ÁÈ¡¼ÓËÙ¶ÈÊý¾Ý
|
SL_SC7A22H_RawData_Read(&gsensor_soft_fifo_buffer[0].sXAxisVal, &gsensor_soft_fifo_buffer[0].sYAxisVal, &gsensor_soft_fifo_buffer[0].sZAxisVal);
|
|
}
|
|
}
|
|
uint8_t fifo_ready_flag=0;
|
|
/***************FIFOģʽ»ñÈ¡XYZÊý¾ÝˮλʾÀý*********/
|
void SC7A22H_get_rawdata_fifo_wtm_interrupt()
|
{
|
signed short SL_Read_Buf[3]={0};
|
signed short SL_XYZ_Data[3]={0};
|
unsigned char reg_value=0;
|
uint8_t data;
|
uint8_t FIFO_stat;
|
uint8_t buff[6];
|
//1.³õʼ»¯Í¨ÐŽӿÚ
|
SL_SC7A22H_I2c_Spi_Init(SL_SC7A22H_SPI_IIC_MODE);
|
|
//2.¸´Î»Ð¾Æ¬
|
SL_SC7A22H_Soft_Reset();//ÎÞÎÊÌâ
|
|
//3.¼ì²éÊÇ·ñÄܶÁȡоƬWHO AM I¼Ä´æÆ÷
|
SL_SC7A22H_Check();//ÎÞÎÊÌâ
|
|
//4.Æô¶¯ACC
|
SL_SC7A22H_I2c_Spi_Write(SL_SC7A22H_SPI_IIC_MODE, 0x7D, 0x04);//PWR_CTRL ENABLE ACC
|
SL_SC7A22H_Delay_Ms(15);
|
|
//5.ÉèÖÃÁ¿³Ì
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x01);//ACC_RANGE ¡À4G
|
|
|
//6.FIFOģʽ
|
SL_SC7A22H_I2c_Spi_Read(SL_SPI_IIC_INTERFACE, 0x05, 1, ®_value);
|
reg_value=reg_value&0xEF;//addr_add_auto disable
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x05, reg_value);
|
//AOI1 ÖжÏ×÷Ϊ FIFO ´¥·¢Ä£Ê½ÖжÏʼþÊäÈ룬FIFOģʽ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x1D, 0x10);//fifo mode set
|
//WTM ãÐÖµÉèÖÃ: 75
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x1E, 0x4B);//fifo fth set
|
//FIFOʹÄÜ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x1C, 0x04);//fifo enable
|
|
//7.ÖжÏÅäÖà int1Öжϴ¥·¢Ê±Êä³ö¸ßµçƽ£¨Ä¬ÈÏµÍµçÆ½£©, FIFOˮλÖжÏÔÚ INT1 ÉÏ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x06, 0x09);//INT_CFG1
|
|
//8.ÉèÖÃÊä³öËÙÂʸüС¢¹¤×÷ģʽ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0x06);//ACC_CONF 25Hz µÍ¹¦ºÄģʽ
|
|
fifo_ready_flag=0;
|
while(1)
|
{
|
if(fifo_ready_flag)
|
{
|
|
fifo_ready_flag=0;
|
SL_SC7A22H_FIFO_Read(&gsensor_soft_fifo_buffer[0].sXAxisVal, &gsensor_soft_fifo_buffer[0].sYAxisVal, &gsensor_soft_fifo_buffer[0].sZAxisVal);
|
|
}
|
}
|
}
|
|
//Óû§Ðè×Ô¶¨ÒåÖжϷþÎñº¯Êý£¬µ±FIFOÊý¾ÝÂúʱINT1»á´ÓµÍµçƽ±äΪ¸ßµçƽ£¬Óû§¿ÉÒÔIO²¶×½ÉÏÉýÑØ²úÉúÖжÏ
|
//ÔÚÆäÖжϷþÎñÖе÷Óøĺ¯Êý
|
void fifo_ready_interrupt_callback()
|
{
|
fifo_ready_flag=1;
|
}
|
|
|
|
uint8_t double_click_flag=0;
|
/*******Ë«»÷¼ì²âʾÀý*********/
|
void SC7A22H_get_double_click()
|
{
|
unsigned char reg_value=0;
|
unsigned char CLICK_status;
|
//1.³õʼ»¯Í¨ÐŽӿÚ
|
SL_SC7A22H_I2c_Spi_Init(SL_SC7A22H_SPI_IIC_MODE);
|
|
//2.¸´Î»Ð¾Æ¬
|
SL_SC7A22H_Soft_Reset();//ÎÞÎÊÌâ
|
|
//3.¼ì²éÊÇ·ñÄܶÁȡоƬWHO AM I¼Ä´æÆ÷
|
SL_SC7A22H_Check();//ÎÞÎÊÌâ
|
|
//4,¼ÓËٶȼÆÊ¹ÄÜ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7D, 0x04);//PWR_CTRL ENABLE ACC
|
SL_SC7A22H_Delay_Ms(200);
|
|
//5,Á¿³ÌÉèÖãº+-4G
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x01);//ACC_RANGE ¡À4G
|
|
//6£¬Çû÷ÖжÏÉèÖÃ
|
//Êä³öÊý¾Ý¼Ä´æÆ÷²»¸üÐÂÖ±µ½ MSB ºÍ LSB ±»¶ÁÈ¡ 2,µØÖ·×ÔÔö£¬Á¬Ðø¶ÁдʱµØÖ·×ÔÔö
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x05, 0x50);//I2C_CFG
|
//ÍÆÍìÊä³öʹÄÜ, Öжϴ¥·¢Ê±Êä³ö¸ßµçƽ£¨Ä¬ÈÏµÍµçÆ½£©£¬CLICK ÖжÏÔÚ INT1 ÉÏ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x06, 0x07);//INT_CFG1 CLICK TO INT1
|
//½ûÖ¹Â˲¨
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x08, 0x00);//Disable DLPF
|
//AOI ÖжÏʹÄÜ£¬AOI1Â˲¨Ê¹ÄÜ£¬Ëø´æ AOI1_CFG ¼Ä´æÆ÷ÉÏÖ¸¶¨µÄÖжÏÏìÓ¦
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x3F, 0x11);//HPIS1=1 LIR_AOI1
|
//XYZ Öá¸ßʼþÖжϻòÕß Z Öá·½Ïò¼ì²âÖжÏʹÄÜ£¬
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x30, 0x2A);//xyz for aoi1 or event
|
//AIO1ãÐÖµ£º4G----32mg*8=256mg
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x32, 0x08);//aoi1 vth
|
//ʶ±ðAIO1ʼþµÄ×îС³ÖÐøÊ±¼ä
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x33, 0x02);//aoi1 tth
|
|
//7£¬Çû÷ÅäÖÃ
|
//ÐèÒª½«0x7F£¨SEG_SEL£©ÅäÖÃ0x90ºóÔÙ½øÐзÃÎʵļĴæÆ÷¼°µØÖ·ºÍ³õÖµÆ÷
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7F, 0x90);//goto 0x90
|
SL_SC7A22H_Delay_Ms(1);
|
//Êä³öÖжϱØÐëÂú×ãÉèÖõÄÇû÷ãÐÖµ¸öÊý²ÅÄÜÊä³öÖжϣ¬·ñÔòÎÞÖжÏÊä³ö
|
//Ëø´æCLICK ÖжÏ״̬,£ºÊ¹ÄÜ XYZ ÖáÊý¾Ý²ÎÓëÇû÷¼ì²â
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x38, 0x1F);//XYZ CLICK ENABLE AND LATCH INT LEVEL
|
//Çû÷ǰÊý¾ÝÎȶ¨Ê±³¤ÉèÖÃ------20ms£¨400hz£©
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0x52);//CLICK_COEFF1
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x9A);//CLICK_COEFF2
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x42, 0x04);//CLICK_COEFF3
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x43, 0x52);//CLICK_COEFF4 //0x52ÖеÄ2±íʾÇû÷´ÎÊý
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7F, 0x00);//goto 0x00
|
SL_SC7A22H_Delay_Ms(1);
|
//8£¬µÍ¹¦ºÄģʽʹÄÜ 400HzÊä³ö
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0x0A);//ACC_CONF 0x0A=400Hz
|
//9, ¶ÁÈ¡CLICK_SRCµÄ״̬»ú
|
SL_SC7A22H_I2c_Spi_Read(SL_SC7A22H_SPI_IIC_MODE, 0x39, 1, &CLICK_status);
|
|
//µÈ´ýÖжϴ¥·¢
|
double_click_flag=0;
|
while(1)
|
{
|
if(double_click_flag)
|
{
|
double_click_flag=0;
|
SL_SC7A22H_I2c_Spi_Read(SL_SC7A22H_SPI_IIC_MODE, 0x39, 1, &CLICK_status);
|
printf("SC7A22H_INT1_SRC:%x\r\n",CLICK_status);
|
|
}
|
|
}
|
}
|
|
|
//Óû§Ðè×Ô¶¨ÒåÖжϷþÎñº¯Êý£¬µ±Ô˶¯¼ì²âʼþ´¥·¢Ê±INT1»á´Ó¸ßµçƽ±äΪµÍµçƽ£¬Óû§¿ÉÒÔIO²¶×½Ï½µÑزúÉúÖжÏ
|
//ÔÚÆäÖжϷþÎñÖе÷Óøĺ¯Êý
|
void double_click_interrupt_callback()
|
{
|
double_click_flag=1;
|
}
|
|
|
|
/***************¼Æ²½¼ì²âʾÀý*********/
|
uint8_t Pedo_flag=0;
|
void SC7A22H_get_Pedo()
|
{
|
unsigned char reg_value=0;
|
unsigned char Pedo_status;
|
unsigned int Pedo_Count;
|
//1.³õʼ»¯Í¨ÐŽӿÚ
|
SL_SC7A22H_I2c_Spi_Init(SL_SC7A22H_SPI_IIC_MODE);
|
//2.¸´Î»Ð¾Æ¬
|
SL_SC7A22H_Soft_Reset();//ÎÞÎÊÌâ
|
//3.¼ì²éÊÇ·ñÄܶÁȡоƬWHO AM I¼Ä´æÆ÷
|
// SL_SC7A22H_Check();//ÎÞÎÊÌâ
|
//4,¼ÓËٶȼÆÊ¹ÄÜ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7D, 0x04);//PWR_CTRL ENABLE ACC
|
SL_SC7A22H_Delay_Ms(200);
|
//5,Á¿³ÌÉèÖãº+-4G
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x01);//ACC_RANGE ¡À4G
|
//6£¬ÖжÏÉèÖÃ
|
//Êä³öÊý¾Ý¼Ä´æÆ÷²»¸üÐÂÖ±µ½ MSB ºÍ LSB ±»¶ÁÈ¡ 2,µØÖ·×ÔÔö£¬Á¬Ðø¶ÁдʱµØÖ·×ÔÔö
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x05, 0x50);//I2C_CFG
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x06, 0x10);//DELTA_STEP ÖжÏÔÚ INT1 ÉÏ
|
//Æô¶¯Â˲¨
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x08, 0x05);//Enable DLPF
|
|
//7£¬¼Æ²½ÉèÖÃ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x7F, 0x90);
|
SL_SC7A22H_Delay_Ms(1);
|
//¿¹Âí´ïºÍÒôÀÖ¸ÉÈÅʹÄÜ,¼Æ²½¹¦ÄÜʹÄÜ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x3A, 0x05);
|
//¼Æ²½Ä£¿éÂ˲¨Æ÷ÉèÖÃ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x46, 0x4F);
|
//¼Æ²½ÁéÃô¶È:100,×îÓżƲ½Öáʱ¼äãÐÖµÉèÖÃ:11
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x47, 0x23);
|
//×î¼ÑÊý¾ÝÔ´Çл»ãÐÖµÉèÖãº00£¬Æðʼ²½ÊýÉèÖãº100£¬¹æÂɼƲ½µÈ¼¶£º011
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x48, 0x8F);
|
//µ¥²½ãÐÖµÏÂÏÞ¿ØÖÆ:100 ,µ¥²½ãÐÖµÉÏÏÞ¿ØÖÆ:101
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x49, 0x1C);
|
//XYZ ²ÎÓë¼Æ²½,¼Æ²½ÔëÉù:0100
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x4A, 0x04);
|
//ÔëÉù¼ÆÊýãÐÖµÉèÖÃ:100
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x4B, 0x8C);
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x7F, 0x00);
|
SL_SC7A22H_Delay_Ms(1);
|
//8£¬µÍ¹¦ºÄģʽʹÄÜ 50HzÊä³ö
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0x26);////ACC_CONF 0x07=50Hz
|
|
//µÈ´ýÖжϴ¥·¢
|
Pedo_flag=0;
|
|
}
|
uint8_t pedo_upload_count=0;
|
uint8_t pedo_upload_status=0;
|
extern uint8_t Pedo_flag;
|
void SC7A22H_get_Pedo_task()
|
{
|
if(Pedo_flag)
|
{
|
Pedo_flag=0;
|
pedo_upload_status=SL_SC7A22H_Get_Motion();
|
pedo_upload_count=SL_SC7A22H_Get_Pedo_Count();
|
LOG_INFO(TRACE_MODULE_APP,"SC7A22H_Pedo_status:%d\r\n",pedo_upload_status);
|
LOG_INFO(TRACE_MODULE_APP,"SC7A22H_Pedo_Count:%d\r\n",pedo_upload_count);
|
}
|
|
}
|
|
//¼Æ²½¹¦ÄÜÆô¶¯º¯Êý
|
|
//Óû§Ðè×Ô¶¨ÒåÖжϷþÎñº¯Êý£¬µ±Ô˶¯¼ì²âʼþ´¥·¢Ê±INT1»á´Ó¸ßµçƽ±äΪµÍµçƽ£¬Óû§¿ÉÒÔIO²¶×½Ï½µÑزúÉúÖжÏ
|
//ÔÚÆäÖжϷþÎñÖе÷Óøĺ¯Êý
|
void Pedo_interrupt_callback()
|
{
|
Pedo_flag=1;
|
}
|
|
|
|
/***************̧Íó¼ì²âʾÀý*********/
|
uint8_t Wrist_flag=0;
|
void SC7A22H_get_Wrist()
|
{
|
unsigned char reg_value=0;
|
unsigned char Wrist_status;
|
unsigned int Wrist_Count;
|
//1.³õʼ»¯Í¨ÐŽӿÚ
|
SL_SC7A22H_I2c_Spi_Init(SL_SC7A22H_SPI_IIC_MODE);
|
|
//2.¸´Î»Ð¾Æ¬
|
SL_SC7A22H_Soft_Reset();//ÎÞÎÊÌâ
|
|
//3.¼ì²éÊÇ·ñÄܶÁȡоƬWHO AM I¼Ä´æÆ÷
|
SL_SC7A22H_Check();//ÎÞÎÊÌâ
|
|
//4,¼ÓËٶȼÆÊ¹ÄÜ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7D, 0x04);//PWR_CTRL ENABLE ACC
|
SL_SC7A22H_Delay_Ms(200);
|
|
//5,Á¿³ÌÉèÖãº+-4G
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x01);//ACC_RANGE ¡À4G
|
|
//6£¬ÖжÏÉèÖÃ
|
//Êä³öÊý¾Ý¼Ä´æÆ÷²»¸üÐÂÖ±µ½ MSB ºÍ LSB ±»¶ÁÈ¡ 2,µØÖ·×ÔÔö£¬Á¬Ðø¶ÁдʱµØÖ·×ÔÔö
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x05, 0x50);//I2C_CFG
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x06, 0x15);//WRIST_ON_FLAG|WRIST_DOWN_FLAG ÖжÏÔÚ INT1 ÉÏ
|
//Æô¶¯Â˲¨
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x08, 0x05);//Enable DLPF
|
|
//7£¬Ì§ÍóÉèÖÃ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x7F, 0x90);
|
SL_SC7A22H_Delay_Ms(1);
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x7F, 0x90);
|
SL_SC7A22H_Delay_Ms(1);
|
//ÊÖÍó¼ì²âʹÄÜ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x3E, 0x10);
|
//ÔÊÐí½Ç¶ÈÎó²îÉèÖÃ:16LSB, ÌùƬλÖÃÉèÖãºÕýÃæº¸½ÓλÖÃ3
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x51, 0x33);
|
//̧ÊÖÄ¿±ê½Ç¶ÈÖµÉèÖÃλ:¶ÔÓ¦¼ÓËÙ¶ÈÖµ4
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x52, 0x02);
|
//̧ÊÖʶ±ðÁéÃô¶ÈÉèÖãº16LSB£¬Ì§ÊÖ״̬´¥·¢ËùÐè³ÖÐøÊ±¼äµÄÉèÖãº0.4s,À뿪̧ÊÖ״̬´¥·¢ËùÐè³ÖÐøÊ±¼ä:0.4s
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x53, 0x93);
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE,0x7F, 0x00);
|
SL_SC7A22H_Delay_Ms(1);
|
//8£¬µÍ¹¦ºÄģʽʹÄÜ 50HzÊä³ö
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0x26);////ACC_CONF 0x07=50Hz
|
//µÈ´ýÖжϴ¥·¢
|
Wrist_flag=0;
|
while(1)
|
{
|
if(Wrist_flag)
|
{
|
Wrist_flag=0;
|
Wrist_status=SL_SC7A22H_Get_Wrist_Status();
|
|
}
|
|
}
|
}
|
|
|
//Óû§Ðè×Ô¶¨ÒåÖжϷþÎñº¯Êý£¬µ±Ô˶¯¼ì²âʼþ´¥·¢Ê±INT1»á´Ó¸ßµçƽ±äΪµÍµçƽ£¬Óû§¿ÉÒÔIO²¶×½Ï½µÑزúÉúÖжÏ
|
//ÔÚÆäÖжϷþÎñÖе÷Óøĺ¯Êý
|
void Wrist_interrupt_callback()
|
{
|
Wrist_flag=1;
|
}
|
|
|
|
|
|
|
void SC7A22H_self_test()
|
{
|
signed short SL_Read_Buf[3]={0};
|
signed short SL_XYZ_Data[3]={0};
|
unsigned char reg_value=0;
|
uint8_t data;
|
uint8_t buff[6];
|
//1.³õʼ»¯Í¨ÐŽӿÚ
|
SL_SC7A22H_I2c_Spi_Init(SL_SC7A22H_SPI_IIC_MODE);
|
//2.¸´Î»Ð¾Æ¬
|
SL_SC7A22H_Soft_Reset();//ÎÞÎÊÌâ
|
//3.¼ì²éÊÇ·ñÄܶÁȡоƬWHO AM I¼Ä´æÆ÷
|
SL_SC7A22H_Check();//ÎÞÎÊÌâ
|
//¼ÓËٶȼÆÊ¹ÄÜ
|
SL_SC7A22H_I2c_Spi_Write(SL_SC7A22H_SPI_IIC_MODE, 0x7D, 0x04);//¼ÓËٶȼÆÊ¹ÄÜ
|
delay_ms(15);
|
//µÍ¹¦ºÄģʽʹÄÜ, µÍ¹¦ºÄģʽ:1¸öÊý¾Ýƽ¾ùÒ»´Î£¬50HzÊä³ö
|
|
//È«Á¿³ÌÑ¡Ôñ:¡À8G
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x02);//ACC_RANGE ¡À8G
|
SL_SC7A22H_I2c_Spi_Read(SL_SC7A22H_SPI_IIC_MODE, 0x6D, 1, ®_value);
|
delay_ms(60);
|
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0xac);//ACC_CONF 0x07=50Hz
|
delay_ms(60);
|
//µØÖ·×ÔÔö£¬Á¬Ðø¶ÁдʱµØÖ·×ÔÔö,Á¬Ðø¸üÐÂ
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x05, 0x10);//I2C_CFG
|
delay_ms(60);
|
// SL_SC7A22H_I2c_Spi_Read(SL_SC7A22H_SPI_IIC_MODE, 0x6D, 1, ®_value);
|
//×Ô²âÊÔģʽʹÄÜ---Õý·½Ïò£¬ ƫתµÍÕñ·ù
|
SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x6D, 0x05);//
|
|
delay_ms(60);
|
while(1)
|
{
|
|
SL_SC7A22H_RawData_Read(&gsensor_soft_fifo_buffer[0].sXAxisVal, &gsensor_soft_fifo_buffer[0].sYAxisVal, &gsensor_soft_fifo_buffer[0].sZAxisVal);
|
|
delay_ms(1000);
|
}
|
}
|