基于STM32的,模拟IIC,来读取MPU6050的数据。
单片机源程序如下:
- #include "stm32f10x.h"
- #include "myiic.h"
- #include "mpu6050.h"
- //*****************************************************************************************************
- //向I2C设备写入一个字节数据
- //*****************************************************************************************************
- void Single_WriteIIC(unsigned char REG_Address,unsigned char REG_data)
- {
- IIC_Start(); //起始信号
- IIC_Send_Byte(SlaveAddress); //发送设备地址+写信号
- IIC_Send_Byte(REG_Address); //内部寄存器地址,
- IIC_Send_Byte(REG_data); //内部寄存器数据,
- IIC_Stop(); //发送停止信号
- }
- //*******************************************************************************************************
- //从I2C设备读取一个字节数据
- //*******************************************************************************************************
- unsigned char Single_ReadIIC(unsigned char REG_Address)
- {
- unsigned char REG_data;
- IIC_Start(); //起始信号
- IIC_Send_Byte(SlaveAddress); //发送设备地址+写信号
- IIC_Send_Byte(REG_Address); //发送存储单元地址,从0开始
- IIC_Start(); //起始信号
- IIC_Send_Byte(SlaveAddress+1); //发送设备地址+读信号
- REG_data=IIC_Read_Byte(); //读出寄存器数据
- IIC_Ack(); //接收应答信号
- IIC_Stop(); //停止信号
- return REG_data;
- }
- //******************************************************************************************************
- //初始化MPU6050
- //******************************************************************************************************
- void InitMPU6050()
- {
- Single_WriteIIC(PWR_MGMT_1, 0x00); //解除休眠状态
- Single_WriteIIC(SMPLRT_DIV, 0x07);
- Single_WriteIIC(CONFIG, 0x06);
- Single_WriteIIC(GYRO_CONFIG, 0x18);
- Single_WriteIIC(ACCEL_CONFIG, 0x01);
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
mpu6050-模拟iic.zip
(3.42 KB, 下载次数: 73)
|