1.环境配置
总结一下遇到的问题:
1.需要修改配置文件中的文件路径
2.固件编译出现以下问题时,需要修改文件内容
2.工程目录结构
device/xradio/xr806/ohosdemo/car_demo
└── src #源文件
└── main.c #主函数
└── mpu6050.c #驱动代码
└── include #头文件
└── mpu6050.h #驱动头文件
└──BUILD.gn #编译脚本
在ohosdemo文件夹下的BUILD.gn编译脚本文件修改为工程文件名
修改car_demo文件夹中的编译脚本,加入头文件路径
3.驱动函数
1.向MPU6050指定寄存器写一个字节
uint8_t MPU_Write_Byte(uint32_t reg,uint8_t data)
{
uint8_t res;
write_buffer[0]=data;
res=HAL_I2C_Master_Transmit_Mem_IT(I2C0_ID,0x68,reg,I2C_MEMADDR_SIZE_8BIT,write_buffer,1);
if(res==-1)
{
printf("MPU_WRITE_Byte_%d error",data);
return 1;
}
else
return 0;
}
2.读MPU6050指定寄存器的数据
uint8_t MPU_Read_Byte(uint32_t reg)
{
HAL_I2C_Master_Receive_Mem_IT(I2C0_ID, 0x68, (uint32_t)reg, I2C_MEMADDR_SIZE_8BIT, read_buffer, 1);
return read_buffer[0];
}
3.连续写字节
uint8_t MPU_Write_Len(uint16_t addr,uint32_t reg,int32_t len,uint8_t *buf)
{
HAL_I2C_Master_Transmit_Mem_IT(I2C0_ID,addr,reg,I2C_MEMADDR_SIZE_8BIT,buf,len);
return 0;
}
4.连续读字节
uint8_t MPU_Read_Len(uint16_t addr,uint32_t reg,int32_t len,uint8_t *buf)
{
HAL_I2C_Master_Receive_Mem_IT(I2C0_ID,addr,reg,I2C_MEMADDR_SIZE_8BIT,buf,len);
return 0;
}
5.主函数,创建初始化线程,并采集数据,通过串口打印出来
6.效果展示
调整MPU6050的姿态可以持续采集到数据