#ifndef _SC7A20_H #define _SC7A20_H #include "commontypedef.h" #ifdef __cplusplus extern "C" { #endif /***使用驱动前请根据实际接线情况配置******/ /**SC7A20的SDO 脚接地: 0****************/ /**SC7A20的SDO 脚接电源:1****************/ #define SC7A20_SDO_VDD_GND 0 /*****************************************/ /***使用驱动前请根据实际IIC情况进行配置***/ /**SC7A20的IIC 接口地址类型 7bits: 0****/ /**SC7A20的IIC 接口地址类型 8bits: 1****/ #define SC7A20_IIC_7BITS_8BITS 0 /*****************************************/ #define SL_SC7A20_16BIT_8BIT 0 /**SC7A20的数据位数选择 16bits: 1****/ /**SC7A20的数据位数选择 8bits: 0****/ /*****************************************/ #define SL_6D4D2D1D_SEL 1 #if SC7A20_SDO_VDD_GND==0 #define SC7A20_IIC_7BITS_ADDR 0x18 #define SC7A20_IIC_8BITS_ADDR 0x30 #else #define SC7A20_IIC_7BITS_ADDR 0x19 #define SC7A20_IIC_8BITS_ADDR 0x32 #endif #if SC7A20_IIC_7BITS_8BITS==0 #define SC7A20_IIC_ADDRESS SC7A20_IIC_7BITS_ADDR #else #define SC7A20_IIC_ADDRESS SC7A20_IIC_8BITS_ADDR #endif #define SC7A20_CHIP_ID_ADDRESS (UINT8)(0x0F) #define SC7A20_CHIP_ID_VALUE (UINT8)(0x11) #define SL_SC7A20_CTRL_REG1 (UINT8)(0x20) #define SL_SC7A20_CTRL_REG2 (UINT8)(0x21) #define SL_SC7A20_CTRL_REG3 (UINT8)(0x22) #define SL_SC7A20_CTRL_REG4 (UINT8)(0x23) #define SL_SC7A20_CTRL_REG5 (UINT8)(0x24) #define SL_SC7A20_CTRL_REG6 (UINT8)(0x25) #define SL_SC7A20_STATUS_REG (UINT8)(0x27) #define SL_SC7A20_OUT_X_L (UINT8)(0x28) #define SL_SC7A20_OUT_X_H (UINT8)(0x29) #define SL_SC7A20_OUT_Y_L (UINT8)(0x2A) #define SL_SC7A20_OUT_Y_H (UINT8)(0x2B) #define SL_SC7A20_OUT_Z_L (UINT8)(0x2C) #define SL_SC7A20_OUT_Z_H (UINT8)(0x2D) #define SL_SC7A20_FIFO_CTRL_REG (UINT8)(0x2E) #define SL_SC7A20_FIFO_SRC_REG (UINT8)(0x2F) #define SL_SC7A20_INT1_CFG (UINT8)(0x30) #define SL_SC7A20_INT1_SRC (UINT8)(0x31) #define SL_SC7A20_INT1_THS (UINT8)(0x32) #define SL_SC7A20_INT1_DURATION (UINT8)(0x33) #define SL_SC7A20_INT2_CFG (UINT8)(0x34) #define SL_SC7A20_INT2_SRC (UINT8)(0x35) #define SL_SC7A20_INT2_THS (UINT8)(0x36) #define SL_SC7A20_INT2_DURATION (UINT8)(0x37) #define SL_SC7A20_CLICK_CFG (UINT8)(0x38) #define SL_SC7A20_CLICK_SRC (UINT8)(0x39) #define SL_SC7A20_CLICK_THS (UINT8)(0x3A) #define SL_SC7A20_TIME_LIMIT (UINT8)(0x3B) #define SL_SC7A20_TIME_LATENCY (UINT8)(0x3C) #define SL_SC7A20_TIME_WINDOW (UINT8)(0x3D) #define SL_SC7A20_ACT_THS (UINT8)(0x3E) #define SL_SC7A20_ACT_DURATION (UINT8)(0x3F) /*连续读取数据时的数据寄存器地址*/ #define SL_SC7A20_DATA_OUT (UINT8)(SL_SC7A20_OUT_X_L|0x80) /**********特殊功能寄存器**********/ /*非原厂技术人员请勿修改*/ #define SL_SC7A20_MTP_ENABLE (0x00) #define SL_SC7A20_MTP_CFG (UINT8)(0x1E) #define SL_SC7A20_MTP_VALUE (UINT8)(0x05) #define SL_SC7A20_SDOI2C_PU_CFG (UINT8)(0x57) #define SL_SC7A20_SDO_PU_MSK (UINT8)(0x08) #define SL_SC7A20_I2C_PU_MSK (UINT8)(0x04) #define SL_SC7A20_HR_ENABLE (UINT8)(0X08) #define SL_SC7A20_BOOT_ENABLE (UINT8)(0X80) /*非原厂技术人员请勿修改*/ /***************数据更新速率**加速度计使能**********/ #define SL_SC7A20_ODR_POWER_DOWN (UINT8)(0x00) #define SL_SC7A20_ODR_1HZ (UINT8)(0x17) #define SL_SC7A20_ODR_10HZ (UINT8)(0x27) #define SL_SC7A20_ODR_25HZ (UINT8)(0x37) #define SL_SC7A20_ODR_50HZ (UINT8)(0x47) #define SL_SC7A20_ODR_100HZ (UINT8)(0x57) #define SL_SC7A20_ODR_200HZ (UINT8)(0x67) #define SL_SC7A20_ODR_400HZ (UINT8)(0x77) #define SL_SC7A20_ODR_1600HZ (UINT8)(0x87) #define SL_SC7A20_ODR_1250HZ (UINT8)(0x97) #define SL_SC7A20_ODR_5000HZ (UINT8)(0x9F) #define SL_SC7A20_LOWER_POWER_ODR_1HZ (UINT8)(0x1F) #define SL_SC7A20_LOWER_POWER_ODR_10HZ (UINT8)(0x2F) #define SL_SC7A20_LOWER_POWER_ODR_25HZ (UINT8)(0x3F) #define SL_SC7A20_LOWER_POWER_ODR_50HZ (UINT8)(0x4F) #define SL_SC7A20_LOWER_POWER_ODR_100HZ (UINT8)(0x5F) #define SL_SC7A20_LOWER_POWER_ODR_200HZ (UINT8)(0x6F) #define SL_SC7A20_LOWER_POWER_ODR_400HZ (UINT8)(0x7F) /***************数据更新速率**加速度计使能**********/ /***************传感器量程设置**********************/ #define SL_SC7A20_FS_2G (UINT8)(0x00) #define SL_SC7A20_FS_4G (UINT8)(0x10) #define SL_SC7A20_FS_8G (UINT8)(0x20) #define SL_SC7A20_FS_16G (UINT8)(0x30) /***************传感器量程设置**********************/ /***取值在0-127之间,此处仅举例****/ #define SL_SC7A20_INT_THS_5PERCENT (UINT8)(0x06) #define SL_SC7A20_INT_THS_10PERCENT (UINT8)(0x0C) #define SL_SC7A20_INT_THS_20PERCENT (UINT8)(0x18) #define SL_SC7A20_INT_THS_40PERCENT (UINT8)(0x32) #define SL_SC7A20_INT_THS_80PERCENT (UINT8)(0x60) /***取值在0-127之间,此处仅举例 乘以ODR单位时间****/ #define SL_SC7A20_INT_DURATION_2CLK (UINT8)(0x02) #define SL_SC7A20_INT_DURATION_5CLK (UINT8)(0x05) #define SL_SC7A20_INT_DURATION_10CLK (UINT8)(0x0A) #define SL_SC7A20_INT_DURATION_30CLK (UINT8)(0x2E) /***中断有效时的电平设置,高电平相当于上升沿,低电平相当于下降沿****/ #define SL_SC7A20_INT_ACTIVE_LOWER_LEVEL (UINT8)(0x02) //0x02:中断时INT1脚输出 低电平 #define SL_SC7A20_INT_ACTIVE_HIGH_LEVEL (UINT8)(0x00) //0x00:中断时INT1脚输出 高电平 /***中断有效时的电平设置,高电平相当于上升沿,低电平相当于下降沿****/ #define SL_SC7A20_INT_AOI1_INT1 (UINT8)(0x40) //AOI1 TO INT1 #define SL_SC7A20_INT_AOI2_INT1 (UINT8)(0x20) //AOI2 TO INT1 extern INT32 GSENSOR_WriteReg(UINT8 addr, UINT8 value); extern INT32 GSENSOR_ReadReg(UINT8 reg, UINT8 len, UINT8 *buf); INT8 SL_SC7A20_Online_Test(void); INT8 SL_SC7A20_BOOT(void); INT8 SL_SC7A20_FS_Config(UINT8 Sc7a20_FS_Reg); INT8 SL_SC7A20_INT_Config(void); INT8 SL_SC7A20_INT_RESET(void); INT8 SL_SC7A20_Power_Config(UINT8 Power_Config_Reg); #if SL_SC7A20_16BIT_8BIT==0 INT8 SL_SC7A20_Read_XYZ_Data(INT8 *SL_SC7A20_Data_XYZ_Buf); #elif SL_SC7A20_16BIT_8BIT==1 INT8 SL_SC7A20_Read_XYZ_Data(INT16 *SL_SC7A20_Data_XYZ_Buf); #endif void GsensorInit(void); #ifdef __cplusplus } #endif #endif /* _SC7A20_H */