| | |
| | | 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() |
| | | { |
| | |
| | | |
| | | uint8_t lisid,response; |
| | | uint8_t lisidtemp; |
| | | |
| | | 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 */ |
| | | |