zhangbo
21 小时以前 01b6f2525f47ee781d86a2495dfcd17f68ccbafd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
#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