#ifndef __SC7A22E_H__ #define __SC7A22E_H__ #include //#include "boards.h" #include #include #include #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