KT24-1110_65E-HA-651B/apps/common/device/gSensor/SC7A20.h

117 lines
5.0 KiB
C
Raw Permalink Normal View History

2024-11-10 10:44:17 +00:00
/*
Copyright (c) 2019 Silan MEMS. All Rights Reserved.
*/
#ifndef SC7A20_H
#define SC7A20_H
/********添加IIC头文件******************/
//#include "i2c.h"
/***************************************/
/***使用驱动前请根据实际接线情况配置7bitIIC地址******/
/**SC7A20的SDO 脚接地: 0x18****************/
/**SC7A20的SDO 脚接电源: 0x19****************/
#define SC7A20_W_ADDR (0x19U << 1 | 0x0)
#define SC7A20_R_ADDR (0x19U << 1 | 0x1)
/*******************************************************/
#define SC7A20_CLICK_TH 0x38 //Click触发阈值,如果单次敲击无法触发中断,请将下面这个参数适当调小,如果单次敲击太过灵敏,请将下面这个参数适当调大
#define SC7A20_CLICK_WINDOWS 0x05 //Click有效窗口
#define SC7A20_CLICK_LATENCY 0x10 //Click中断持续时间,odr = 0x10时 时间 = 16 * 2.5ms
#define SC7A20_INT_LEVEL 0x02 //0x02为中断时低电平0x0为高电平
//如果中断能够触发,但是无法识别为单击,请调小如下函数中的参数 TH1
//如果单击能够触发,摇晃都会触发多击,请调小如下函数中的参数 TH2
//如果单击能够触发,多击功能比较难实现,请调大如下函数中的参数 TH2
#define SC7A20_TH1 40
#define SC7A20_TH2 50
#define click_pp_num (unsigned short)10*25 //10对应0.5s(不需要管后面的*25)
#define click_max_num (unsigned short)60*25 // 60对应3s
/*************驱动初始化函数**************/
unsigned char SC7A20_Config(void);
/**SC7A20_Config 函数中, ODR 默认0x7f 400HZ/6f 200HZ ************/
/**SC7A20_Config 函数中, HP 默认0xOC 开启高通滤波 ************/
/**SC7A20_Config 函数中, click_int 默认0x80 将Click中断映射到INT1************/
/**SC7A20_Config 函数中, range 默认0x90 4g量程************/
/**SC7A20_Config 函数中, fifo_en 默认0x40 使能fifo************/
/**SC7A20_Config 函数中, fifo_mode 默认0x80 Stream模式************/
/**SC7A20_Config 函数中, click_mode 默认0x15 单击3轴触发************/
/**SC7A20_Config 函数中, click_th 默认0x38 Click触发阈值************/
/**SC7A20_Config 函数中, click_window 默认0x05 Click有效窗口************/
/**SC7A20_Config 函数中, click_latency 默认0x10 Click中断持续时间************/
/*************返回数据情况如下*****************/
/**return : 1 IIC通讯正常IC在线***************/
/**return : 0; IIC通讯异常或IC不在线***************/
/*************单击状态检测**************/
char SC7A20_Click_Read(int TH1, int TH2);
/*************TH1 调节单击灵敏度默认9000*****************/
/*************TH2 默认6000*****************/
/*************TH3 默认7000*****************/
/*************返回数据情况如下*****************/
/**return : 1 单次敲击有效***************/
/**return : 0; 单次敲击无效***************/
/*************外部中断调用Click敲击函数**************/
char SC7A20_Click_Alog(void);
/*************返回数据情况如下*****************/
/**return : 1 单次敲击有效***************/
/**return : 0; 单次敲击无效***************/
/*************定时器中断调用Click状态函数**************/
char SC7A20_click_status(void);
/*************返回数据情况如下*****************/
/**return : N N次敲击有效***************/
/**reg map***************/
#define SC7A20_OUT_TEMP_L 0x0C
#define SC7A20_OUT_TEMP_H 0x0D
#define SC7A20_WHO_AM_I 0x0F
#define SC7A20_USER_CAL_START 0x13
#define SC7A20_USER_CAL_END 0x1A
#define SC7A20_NVM_WR 0x1E
#define SC7A20_TEMP_CFG 0x1F
#define SC7A20_CTRL_REG1 0x20
#define SC7A20_CTRL_REG2 0x21
#define SC7A20_CTRL_REG3 0x22
#define SC7A20_CTRL_REG4 0x23
#define SC7A20_CTRL_REG5 0x24
#define SC7A20_CTRL_REG6 0x25
#define SC7A20_REFERENCE 0x26
#define SC7A20_STATUS_REG 0x27
#define SC7A20_OUT_X_L 0x28
#define SC7A20_OUT_X_H 0x29
#define SC7A20_OUT_Y_L 0x2A
#define SC7A20_OUT_Y_H 0x2B
#define SC7A20_OUT_Z_L 0x2C
#define SC7A20_OUT_Z_H 0x2D
#define SC7A20_FIFO_CTRL_REG 0x2E
#define SC7A20_SRC_REG 0x2F
#define SC7A20_INT1_CFG 0x30
#define SC7A20_INT1_SOURCE 0x31
#define SC7A20_INT1_THS 0x32
#define SC7A20_INT1_DURATION 0x33
#define SC7A20_INT2_CFG 0x34
#define SC7A20_INT2_SOURCE 0x35
#define SC7A20_INT2_THS 0x36
#define SC7A20_INT2_DURATION 0x37
#define SC7A20_CLICK_CFG 0x38
#define SC7A20_CLICK_SRC 0x39
#define SC7A20_CLICK_THS 0x3A
#define SC7A20_TIME_LIMIT 0x3B
#define SC7A20_TIME_LATENCY 0x3C
#define SC7A20_TIME_WINDOW 0x3D
#define SC7A20_ACT_THS 0x3E
#define SC7A20_ACT_DURATION 0x3F
#endif // SC7A20_H