yincheng.zhong
2024-08-21 903a245a364052d5ba612e3e53b685fca26a09d4
keil/include/drivers/lis3dh_driver.c
@@ -181,6 +181,7 @@
AxesRaw_t lis2dhdata;
//OLED初始化IIC
uint8_t t11;
void IIC2_Init(void)
{                    
//   GPIO_InitTypeDef GPIO_InitStructure= {0};
@@ -198,13 +199,11 @@
      
      gpio_pin_set_dir(SDA_PIN , GPIO_DIR_OUT, 1);
      io_open_drain_set(SDA_PIN, 1);
    io_pull_set(SDA_PIN , IO_PULL_UP, IO_PULL_UP_NONE);//输出高阻态
        io_pull_set(SDA_PIN , IO_HIGH_Z, IO_PULL_UP_NONE);//输出高阻态
      
      gpio_pin_set_dir(SCL_PIN , GPIO_DIR_OUT, 1);
      io_open_drain_set(SCL_PIN, 1);//设置开漏输出
    io_pull_set(SCL_PIN , IO_PULL_UP, IO_PULL_UP_NONE);
        io_pull_set(SCL_PIN , IO_HIGH_Z, IO_PULL_UP_NONE);
}
uint8_t lisid;
@@ -284,7 +283,7 @@
   LIS3DH_WriteReg(LIS3DH_INT1_CFG, 0xaa);  /* INT1_CFG(30h): ??,6D X/Y/Z???????? */
   g_com_map[IMU_THRES]=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, 0x01);     /* INT1_DURATION(33h): 1LSB=1/ODR  ??ODR=100HZ  ??1LSB=10ms ???? 1s,??100->0x64 */
    LIS3DH_WriteReg(LIS3DH_INT1_DURATION, 0x01);     /* 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 */
   
@@ -516,15 +515,17 @@
//等待应答信号到来
//返回值:1,接收应答失败
//        0,接收应答成功
uint8_t IIC2_Wait_Ack(void)
{
   uint8_t ucErrTime=0;
//  IIC2_SDA_IN();      //SDA设置为输入
 gpio_pin_set_dir(SDA_PIN , GPIO_DIR_IN, 1);
    SDA_1;
   delay_us(6);      
   SCL_1;
   delay_us(6);   
   while(IIC2_READ_SDA)
   {
      ucErrTime++;
@@ -534,6 +535,7 @@
         return 1;
      }
   }
    gpio_pin_set_dir(SDA_PIN , GPIO_DIR_OUT, 1);
   SCL_0;//时钟输出0
   return 0;