#ifndef __SC7A22E_H__
|
#define __SC7A22E_H__
|
|
#include <stdio.h>
|
//#include "boards.h"
|
#include <stdint.h>
|
#include <stdio.h>
|
#include <string.h>
|
|
|
|
#define SL_SC7A22H_SPI_IIC_MODE 0
|
/**SC7A20E SPI IIC Ñ¡Ôñ SPI£º 0****/
|
/**SC7A20E SPI IIC Ñ¡Ôñ IIC£º 1****/
|
|
//´«¸ÐÆ÷µ÷ÊÔ´òÓ¡¹¦ÄÜÊÇ·ñ´ò¿ª----0¿ªÆô£¬1¹Ø±Õ
|
#define SL_Sensor_Algo_Release_Enable 0x01
|
|
/***ʹÓÃÇý¶¯Ç°Çë¸ù¾Ýʵ¼Ê½ÓÏßÇé¿öÅäÖÃ******/
|
/**SC7A22µÄSDO ½Å½ÓµØ£º 0****************/
|
/**SC7A22µÄSDO ½Å½ÓµçÔ´£º1****************/
|
#define SL_SC7A22_SDO_VDD_GND 1
|
/*****************************************/
|
/***ʹÓÃÇý¶¯Ç°Çë¸ù¾Ýʵ¼ÊIICÇé¿ö½øÐÐÅäÖÃ***/
|
/**SC7A22µÄIIC ½Ó¿ÚµØÖ·ÀàÐÍ 7bits£º 0****/
|
/**SC7A22µÄIIC ½Ó¿ÚµØÖ·ÀàÐÍ 8bits£º 1****/
|
#define SL_SC7A22_IIC_7BITS_8BITS 0
|
/*****************************************/
|
|
#if SL_SC7A22_SDO_VDD_GND==0
|
#define SL_SC7A22_IIC_7BITS_ADDR 0x18
|
#define SL_SC7A22_IIC_8BITS_WRITE_ADDR 0x30
|
#define SL_SC7A22_IIC_8BITS_READ_ADDR 0x31
|
#else
|
#define SL_SC7A22_IIC_7BITS_ADDR 0x19
|
#define SL_SC7A22_IIC_8BITS_WRITE_ADDR 0x32
|
#define SL_SC7A22_IIC_8BITS_READ_ADDR 0x33
|
#endif
|
#if SL_SC7A22_IIC_7BITS_8BITS==0
|
#define SL_SC7A22_IIC_ADDRESS SL_SC7A22_IIC_7BITS_ADDR
|
#else
|
#define SL_SC7A22_IIC_WRITE_ADDRESS SL_SC7A22_IIC_8BITS_WRITE_ADDR
|
#define SL_SC7A22_IIC_READ_ADDRESS SL_SC7A22_IIC_8BITS_READ_ADDR
|
#endif
|
|
|
|
//I2C SPIͨѶ¿ØÖƺ궨Òå
|
#define SL_SC7A22H_SPI_EN_I2C_DISABLE 0x00 //±ØÐëºÍSL_SPI_IIC_INTERFACE Ïà·´£»
|
#define SL_SPI_IIC_INTERFACE 0x01 //±ØÐëºÍSL_SC7A22H_SPI_EN_I2C_DISABLE Ïà·´£»
|
//ÔʼÊý¾Ý¸ßͨÊä³öʹÄÜ¿ØÖƺ궨Òå
|
#define SL_SC7A22H_RAWDATA_HPF_ENABLE 0x00
|
//ÖжϽÅĬÈÏÊä³öµçƽ¿ØÖƺ궨Òå
|
#define SL_SC7A22H_INT_DEFAULT_LEVEL 0x01
|
//SDO ÉÏÀµç×è¿ØÖÆ
|
#define SL_SC7A22H_SDO_PullUP_ENABLE 0x01
|
|
|
/***************¼Ä´æÆ÷Áбí**********/
|
#define SC7A22H_COM_CFG (unsigned char)0x05
|
#define SC7A22H_CHIP_ID_ADDRESS (unsigned char)0x01
|
|
#define SL_SC7A22H_INT_CFG1 (unsigned char)0x06
|
#define SL_SC7A22H_INT_CFG2 (unsigned char)0x07
|
#define SL_SC7A22H_HPF_LPF_DFG (unsigned char)0x08
|
#define SL_SC7A22H_DATA_SAT (unsigned char)0x0A
|
#define SL_SC7A22H_DATA_STAT (unsigned char)0x0B
|
|
#define SL_SC7A22H_OUT_X_L (unsigned char)0x0D
|
#define SL_SC7A22H_OUT_X_H (unsigned char)0x0C
|
#define SL_SC7A22H_OUT_Y_L (unsigned char)0x0F
|
#define SL_SC7A22H_OUT_Y_H (unsigned char)0x0E
|
#define SL_SC7A22H_OUT_Z_L (unsigned char)0x11
|
#define SL_SC7A22H_OUT_Z_H (unsigned char)0x10
|
|
#define SL_SC7A22H_TIME_H (unsigned char)0x18
|
#define SL_SC7A22H_TIME_M (unsigned char)0x19
|
#define SL_SC7A22H_TIME_L (unsigned char)0x1A
|
|
#define SL_SC7A22H_RAM_BIST (unsigned char)0x1B
|
|
#define SL_SC7A22H_FIFO_CFG0 (unsigned char)0x1C
|
#define SL_SC7A22H_FIFO_CFG1 (unsigned char)0x1D
|
#define SL_SC7A22H_FIFO_CFG2 (unsigned char)0x1E
|
#define SL_SC7A22H_FIFO_STAT0 (unsigned char)0x1F
|
#define SL_SC7A22H_FIFO_STAT1 (unsigned char)0x20
|
#define SL_SC7A22H_FIFO_DATA1 (unsigned char)0x21
|
|
|
#define SL_SC7A22H_AOI1_CFG (unsigned char)0x30
|
#define SL_SC7A22H_AOI1_STAT (unsigned char)0x31
|
#define SL_SC7A22H_AOI1_THS (unsigned char)0x32
|
#define SL_SC7A22H_AOI1_DUR (unsigned char)0x33
|
|
#define SL_SC7A22H_AOI2_CFG (unsigned char)0x34
|
#define SL_SC7A22H_AOI2_STAT (unsigned char)0x35
|
#define SL_SC7A22H_AOI2_THS (unsigned char)0x36
|
#define SL_SC7A22H_AOI2_DUR (unsigned char)0x37
|
|
#define SL_SC7A22H_CLICK_CRTL_REG (unsigned char)0x38
|
#define SL_SC7A22H_CLICK_SRC (unsigned char)0x39
|
#define SL_SC7A22H_STEP_CFG (unsigned char)0x3A
|
#define SL_SC7A22H_STEP_SRC (unsigned char)0x3B
|
#define SL_SC7A22H_STEP_COUNTER_L (unsigned char)0x3C
|
#define SL_SC7A22H_STEP_COUNTER_H (unsigned char)0x3D
|
|
|
#define SL_SC7A22H_WRIST_SRC (unsigned char)0x3E
|
#define SL_SC7A22H_AOI1_AOI2_CFG (unsigned char)0x3F
|
|
#define SL_SC7A22H_ACC_CONF (unsigned char)0x40
|
#define SL_SC7A22H_ACC_RANGE (unsigned char)0x41
|
|
|
#define SL_SC7A22H_FIFO_DOWNS (unsigned char)0x45
|
|
#define SL_SC7A22H_SOFT_RST (unsigned char)0x4A
|
#define SL_SC7A22H_SELF_TEST (unsigned char)0x6D
|
|
#define SL_SC7A22H_VERSION (unsigned char)0x70
|
#define SL_SC7A22H_PWR_CTRL (unsigned char)0x7D
|
#define SL_SC7A22H_SEG_SEL (unsigned char)0x7F
|
|
|
|
/*Á¬Ðø¶ÁÈ¡Êý¾ÝʱµÄÊý¾Ý¼Ä´æÆ÷µØÖ·*/
|
#define SL_SC7A22H_DATA_OUT (unsigned char)(SL_SC7A22H_OUT_X_L|0x80)
|
|
#define SL_SC7A22H_SUCCESS 0x00
|
#define SL_SC7A22H_ERROR 0x01
|
|
#define SC7A22H_CHIP_ID_VALUE (unsigned char)0x18
|
#define SL_SC7A22H_BOOT_ENABLE (unsigned char)0X80
|
|
#define SL_SC7A22H_RESET_VALUE (unsigned char)0XA5
|
|
#define SL_SC7A22H_ADDR_AUTO 0x01
|
#define SL_SC7A22H_NO_ADDR_AUTO 0x00
|
|
/***************ģʽÅäÖÃ**********/
|
#define SL_SC7A22H_LowPower 0x08
|
#define SL_SC7A22H_NormalPower 0x00
|
#define SL_SC7A22H_DLPF 0x04
|
|
/***************Êý¾Ý¸üÐÂËÙÂÊ**¼ÓËٶȼÆÊ¹ÄÜ**********/
|
#define SL_SC7A22H_ODR_POWER_DOWN (unsigned char)0x00
|
#define SL_SC7A22H_ODR_1P5HZ (unsigned char)0x17
|
#define SL_SC7A22H_ODR_12P5HZ (unsigned char)0x27
|
#define SL_SC7A22H_ODR_25HZ (unsigned char)0x37
|
#define SL_SC7A22H_ODR_50HZ (unsigned char)0x47
|
#define SL_SC7A22H_ODR_100HZ (unsigned char)0x57
|
#define SL_SC7A22H_ODR_200HZ (unsigned char)0x67
|
#define SL_SC7A22H_ODR_400HZ (unsigned char)0x77
|
|
/***************´«¸ÐÆ÷Á¿³ÌÉèÖÃ**********************/
|
#define SL_SC7A22H_FS_2G (unsigned char)0x00
|
#define SL_SC7A22H_FS_4G (unsigned char)0x10
|
#define SL_SC7A22H_FS_8G (unsigned char)0x20
|
#define SL_SC7A22H_FS_16G (unsigned char)0x30
|
|
/***ȡֵÔÚ0-127Ö®¼ä£¬´Ë´¦½ö¾ÙÀý****/
|
#define SL_SC7A22H_INT_THS_5PERCENT (unsigned char)0x06
|
#define SL_SC7A22H_INT_THS_8PERCENT (unsigned char)0x09
|
#define SL_SC7A22H_INT_THS_10PERCENT (unsigned char)0x0C
|
#define SL_SC7A22H_INT_THS_20PERCENT (unsigned char)0x18
|
#define SL_SC7A22H_INT_THS_40PERCENT (unsigned char)0x30
|
#define SL_SC7A22H_INT_THS_80PERCENT (unsigned char)0x60
|
|
|
/***ȡֵÔÚ0-127Ö®¼ä£¬´Ë´¦½ö¾ÙÀý ³ËÒÔODRµ¥Î»Ê±¼ä****/
|
#define SL_SC7A22H_INT_DURATION_2CLK (unsigned char)0x02
|
#define SL_SC7A22H_INT_DURATION_5CLK (unsigned char)0x05
|
#define SL_SC7A22H_INT_DURATION_10CLK (unsigned char)0x0A
|
#define SL_SC7A22H_INT_DURATION_20CLK (unsigned char)0x14
|
#define SL_SC7A22H_INT_DURATION_40CLK (unsigned char)0x28
|
#define SL_SC7A22H_INT_DURATION_80CLK (unsigned char)0x50
|
|
/***ÖжÏÓÐЧʱµÄµçƽÉèÖ㬸ߵçƽÏ൱ÓÚÉÏÉýÑØ£¬µÍµçƽÏ൱ÓÚϽµÑØ****/
|
#define SL_SC7A22H_INT_ACTIVE_LOWER_LEVEL 0x02 //0x02:ÖжÏʱINT1½ÅÊä³ö µÍµçƽ
|
#define SL_SC7A22H_INT_ACTIVE_HIGH_LEVEL 0x00 //0x00:ÖжÏʱINT1½ÅÊä³ö ¸ßµçƽ
|
|
/***ÖжÏÓÐЧʱµÄµçƽÉèÖ㬸ߵçƽÏ൱ÓÚÉÏÉýÑØ£¬µÍµçƽÏ൱ÓÚϽµÑØ****/
|
#define SL_SC7A22H_INT_AOI1_INT1 0x40 //AOI1 TO INT1
|
#define SL_SC7A22H_INT_AOI2_INT1 0x20 //AOI2 TO INT1
|
|
/********¿Í»§ÐèÒª½øÐеÄIIC/SPI½Ó¿Ú·â°üº¯Êý****************/
|
extern unsigned char SL_SC7A22H_I2c_Spi_Init(unsigned char sl_spi_iic);
|
extern unsigned char SL_SC7A22H_I2c_Spi_Write(unsigned char sl_spi_iic,unsigned char reg, unsigned char data);
|
extern unsigned char SL_SC7A22H_I2c_Spi_Read(unsigned char sl_spi_iic,unsigned char reg, unsigned char len, unsigned char *buf);
|
extern void SL_SC7A22H_Delay_Ms(unsigned long int delay);
|
|
/********Çý¶¯¿âAPI****************/
|
#define SL_LOG printf
|
|
unsigned char SL_SC7A22H_Online_Test(void);
|
void SL_SC7A22H_Soft_Reset(void);
|
void SL_SC7A22H_BOOT(void);
|
void SL_SC7A22H_FS_Config(unsigned char SC7A22H_FS_Reg);
|
void SL_SC7A22H_Odr_Config(unsigned char Odr_Config_Reg,unsigned char Work_mode);
|
void SL_SC7A22H_Read_XYZ_Data(signed short *SL_SC7A22H_Data_XYZ_Buf);
|
void SL_SC7A22H_Read_XYZ_Data_FIFO(signed short *SL_SC7A22H_Data_XYZ_Buf);
|
void SL_SC7A22H_Data_Convert(signed short *SL_SC7A22H_Raw_Data_XYZ_Buf,signed short *SL_SC7A22H_Output_Data_XYZ_Buf,unsigned char SC7A22H_FS_Reg);
|
void SL_SC7A22H_ADDR_AUTO_CON(unsigned char SC7A22H_Status);
|
unsigned char SL_SC7A22H_POWER_DOWN(void);
|
unsigned char SL_SC7A22H_Get_Motion(void);
|
void SL_SC7A22H_Pedo_Reset(void);
|
unsigned int SL_SC7A22H_Get_Pedo_Count(void);
|
|
void SL_SC7A22H_Wrist_Config(void);
|
unsigned char SL_SC7A22H_Get_Wrist_Status(void);
|
|
unsigned char SL_SC7A22H_Check(void);
|
unsigned char SL_SC7A22H_Config(void);
|
void SL_SC7A22H_RawData_Read(signed short *x_data,signed short *y_data,signed short *z_data);
|
unsigned char SL_SC7A22H_FIFO_Read(signed short *x_data_buf,signed short *y_data_buf,signed short *z_data_buf);
|
|
|
|
//Ìṩ²âÊÔ°¸Àý
|
void SC7A22H_get_rawdata_Polling(void);
|
void SC7A22H_get_rawdata_fifo_wtm_interrupt(void);
|
void SC7A22H_get_double_click(void);
|
void SC7A22H_get_Pedo(void);
|
void SC7A22H_get_Pedo_task();
|
void SC7A22H_get_Wrist(void);
|
void SC7A22H_self_test(void);
|
|
|
//×Ô¶¨Ò廨µ÷º¯Êý
|
void fifo_ready_interrupt_callback();
|
void double_click_interrupt_callback();
|
void Pedo_interrupt_callback();
|
void Wrist_interrupt_callback();
|
|
|
|
/* Gsensor data struct type. */
|
typedef struct
|
{
|
signed short sXAxisVal; // X-Axis Value
|
signed short sYAxisVal; // Y-Axis Value
|
signed short sZAxisVal; // Z-Axis Value
|
} ST_GS_DATA_TYPE;
|
|
|
static ST_GS_DATA_TYPE gsensor_soft_fifo_buffer[255];
|
|
#endif
|