From e3d28cbb2bbf0c65af4d3d57e649f7ef0a6cbdb6 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期六, 13 八月 2022 21:50:01 +0800
Subject: [PATCH] 1

---
 Drivers/ExternlDrivers/lis3dh_driver.c |   72 +++++++++++++++++++++++++++++++-----
 1 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/Drivers/ExternlDrivers/lis3dh_driver.c b/Drivers/ExternlDrivers/lis3dh_driver.c
index eda2623..bdccc84 100644
--- a/Drivers/ExternlDrivers/lis3dh_driver.c
+++ b/Drivers/ExternlDrivers/lis3dh_driver.c
@@ -67,14 +67,58 @@
 void IIC2_Init(void)
 {					     
 	GPIO_InitTypeDef GPIO_InitStructure= {0};
- __HAL_RCC_GPIOA_CLK_ENABLE();
-	GPIO_InitStructure.Pin = GPIO_PIN_2|GPIO_PIN_3;
+
+	GPIO_InitStructure.Pin = SDA_Pin;
 	GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_OD ;   //推挽输出
 	GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
-	HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
-	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2|GPIO_PIN_3,GPIO_PIN_SET); 	//PB6,PB7 输出高
+	HAL_GPIO_Init(SDA_GPIO_Port, &GPIO_InitStructure);
+    
+    GPIO_InitStructure.Pin = SCL_Pin;
+	GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_OD ;   //推挽输出
+	GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
+	HAL_GPIO_Init(SCL_GPIO_Port, &GPIO_InitStructure);
+    
+	HAL_GPIO_WritePin(SCL_GPIO_Port,SCL_Pin,GPIO_PIN_SET); 	//PB6,PB7 输出高
+    HAL_GPIO_WritePin(SDA_GPIO_Port,SDA_Pin,GPIO_PIN_SET); 
 }
-
+uint8_t LIS3DH_ReadReg(uint8_t Reg, uint8_t* Data);
+void LIS3DH_Check(void)
+{
+u8 error = 0,temp;
+	 
+	LIS3DH_ReadReg(LIS3DH_CTRL_REG1,&temp);
+	if(temp!=0x57)
+	{error=1;}
+	
+	LIS3DH_ReadReg(LIS3DH_CTRL_REG2,&temp);
+	if(temp!=0x03)
+	{error=1;}
+	
+	LIS3DH_ReadReg(LIS3DH_CTRL_REG3,&temp);
+	if(temp!=0x40)
+	{error=1;}
+	
+	LIS3DH_ReadReg(LIS3DH_CTRL_REG4,&temp);
+	if(temp!=0x08)
+	{error=1;}
+	
+		LIS3DH_ReadReg(LIS3DH_INT1_CFG,&temp);
+	if(temp!=0xaa)
+	{error=1;}
+	
+		LIS3DH_ReadReg(LIS3DH_INT1_THS,&temp);
+	if(temp!=g_com_map[IMU_THRES])
+	{error=1;}
+	
+		LIS3DH_ReadReg(LIS3DH_INT1_DURATION,&temp);
+	if(temp!=g_com_map[IMU_DUARTION])
+	{error=1;}
+	
+	if(error==1)
+	{
+		SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; 
+	}
+}
 
 void LIS3DH_Data_Init()	
 {
@@ -82,17 +126,25 @@
 	
 	uint8_t lisid,response;
     uint8_t lisidtemp;
-	
-	LIS3DH_WriteReg(LIS3DH_CTRL_REG1, 0x37);	/* CTRL_REG1(20h): ??sensor,???????? ODR 25HZ */
+	IIC2_Init();
+	LIS3DH_WriteReg(LIS3DH_CTRL_REG1, 0x57);	/* CTRL_REG1(20h): ??sensor,???????? ODR 25HZ */
 	LIS3DH_WriteReg(LIS3DH_CTRL_REG2, 0x03);	/* CTRL_REG2(21h): IA1?IA2 ?????? bc */
 	
 	LIS3DH_WriteReg(LIS3DH_CTRL_REG3, 0x40);	/* CTRL_REG3(22h): 0x80 ???????INT_1 INT_2 */
 	LIS3DH_WriteReg(LIS3DH_CTRL_REG4, 0x08);  /* CTRL_REG4(23h): ???,????,???+/-2G,?????? */
 	LIS3DH_WriteReg(LIS3DH_INT1_CFG, 0xaa);  /* INT1_CFG(30h): ??,6D X/Y/Z???????? */
-	LIS3DH_WriteReg(LIS3DH_INT1_THS, 0x01);  	/* INT1_THS(32h): ?????? 0x10: 16*2(FS)  0x20: 32*16(FS) */
- LIS3DH_WriteReg(LIS3DH_INT1_DURATION, 0x01);  	/* INT1_DURATION(33h): 1LSB=1/ODR  ??ODR=100HZ  ??1LSB=10ms ???? 1s,??100->0x64 */
+	if(g_com_map[IMU_THRES]>20||g_com_map[IMU_THRES] == 0)
+	{
+		g_com_map[IMU_THRES] = 1;
+	}
+	if(g_com_map[IMU_DUARTION]>20||g_com_map[IMU_DUARTION]==0)
+	{
+		g_com_map[IMU_DUARTION] = 2;
+	}
+	LIS3DH_WriteReg(LIS3DH_INT1_THS, (uint8_t)g_com_map[IMU_THRES]);  	/* INT1_THS(32h): ?????? 0x10: 16*2(FS)  0x20: 32*16(FS) */
+  LIS3DH_WriteReg(LIS3DH_INT1_DURATION, (uint8_t)g_com_map[IMU_DUARTION]);  	/* INT1_DURATION(33h): 1LSB=1/ODR  ??ODR=100HZ  ??1LSB=10ms ???? 1s,??100->0x64 */
 	/* Start sensor */
-	LIS3DH_WriteReg(0x20, 0x5f);  /* CTRL_REG1(20h): Start sensor at ODR 100Hz Low-power mode */
+	//LIS3DH_WriteReg(0x20, 0x5f);  /* CTRL_REG1(20h): Start sensor at ODR 100Hz Low-power mode */
 	// Read ID
 	LIS3DH_GetWHO_AM_I(&lisidtemp);  
 //	lisid=(uint16_t)lisidtemp;

--
Gitblit v1.9.3