地瓜patch 发表于 2025-1-21 20:02

MM32F3270读写BMI270

BMI270 超低功耗的IMU基于博世的MEMS工艺技术,而且大大提升了加速度计的偏移和灵敏度性能。另外,BMI270包含直观的手势、情境和活动识别功能,并集成了即插即用计步器,特别适合可穿戴设备、可听戴设备、增强现实和虚拟现实(AR/VR)等应用。

BMI270 IMU将精确的加速度和角速率测量与智能片上运动触发中断功能相结合。6轴传感器将16位三轴陀螺仪和16位三轴加速度计组合在一个紧凑的2.5 x 3.0 x 0.8 mm3 LGA封装中。





void I2C_Configure(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    I2C_InitTypeDefI2C_InitStruct;

    RCC_APB1PeriphClockCmd(RCC_APB1ENR_I2C1, ENABLE);

    I2C_DeInit(I2C1);

    I2C_StructInit(&I2C_InitStruct);
    I2C_InitStruct.I2C_Mode       = I2C_Mode_MASTER;
    I2C_InitStruct.I2C_Speed      = I2C_Speed_STANDARD;
    I2C_InitStruct.I2C_ClockSpeed = 100000;
    I2C_Init(I2C1, &I2C_InitStruct);

    I2C_Send7bitAddress(I2C1, EEPROM_I2C_ADDRESS);

    RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOB, ENABLE);

    GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_4);
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_4);

    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_6 | GPIO_Pin_7;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode= GPIO_Mode_AF_OD;
    GPIO_Init(GPIOB, &GPIO_InitStruct);

    I2C_Cmd(I2C1, ENABLE);
}

/***********************************************************************************************************************
* @brief
* @NOTE   none
* @paramnone
* @retval none
*********************************************************************************************************************/
void I2C_TxData_Polling(uint8_t *Buffer, uint8_t Length)
{
    uint8_t i = 0;

    for (i = 0; i < Length; i++)
    {
      I2C_SendData(I2C1, Buffer);

      while (RESET == I2C_GetFlagStatus(I2C1, I2C_STATUS_FLAG_TFE))
      {
      }
    }
}

/***********************************************************************************************************************
* @brief
* @note   none
* @paramnone
* @retval none
*********************************************************************************************************************/
void I2C_RxData_Polling(uint8_t *Buffer, uint16_t Length)
{
    uint8_t i = 0;

    for (i = 0; i < Length; i++)
    {
      I2C_ReadCmd(I2C1);

      while (RESET == I2C_GetFlagStatus(I2C1, I2C_STATUS_FLAG_RFNE))
      {
      }

      Buffer = I2C_ReceiveData(I2C1);
    }
}


小小蚂蚁举千斤 发表于 2025-1-22 22:58

BMI270 IMU将精确的加速度和角速率测量与智能片上运动触发中断功能相结合。

OKAKAKO 发表于 2025-1-23 08:14

非常不错的IIC通讯教程

欢乐家园 发表于 2025-3-25 14:43

BMI270 具有 运动触发中断 功能,可以基于加速度计或陀螺仪的测量值自动触发事件。
页: [1]
查看完整版本: MM32F3270读写BMI270