求救!!mpu6050 I2C 没有应答啊~~
准备做个3个电机,加一个舵机做个伪四轴,刚开始把串口搞订,忘了说了,主控用的是k60(MK60X256Z)飞思卡尔的
初始化返回的就还是2!没有得到第一个应答!!
第一个程序是写一个字节,后面的是mpu初始化~!
那位大神帮帮啊~
//============================================================================
//函数名称:iic_write1
//功能概要:向从机写1个字节数据
//参数说明:num:模块号
// DeviceAddr:设备地址
// AccessAddr:访问地址
// Data:要发给从机的1个字节数据
//函数返回:为0,成功写一个字节;为1,写一个字节失败
//函数说明: 内部调用 hw_send_signal,hw_wait
//============================================================================
uint8 iic_write1(I2C_MemMapPtr num,uint8 DeviceAddr, uint8 AccessAddr, uint8 Data)
{
I2C_C1_REG(num) |= 0x10; //TX = 1,MCU设置为发送模式
hw_send_signal('S',num); //发送开始信号
I2C_D_REG(num) = DeviceAddr & 0xfe;//发送设备地址,并通知从机接收数据
if (hw_wait('T',num)) //等待一个字节数据传送完成
return 1; //没有传送成功,写一个字节失败
if (hw_wait('A',num)) //等待从机应答信号
return 2; //没有等到应答信号,写一个字节失败
I2C_D_REG(num) = AccessAddr; //发送访问地址
if (hw_wait('T',num)) //等待一个字节数据传送完成
return 3; //没有传送成功,写一个字节失败
if (hw_wait('A',num)) //等待从机应答信号
return 4; //没有等到应答信号,写一个字节失败
I2C_D_REG(num) = Data; //写数据
if (hw_wait('T',num)) //等待一个字节数据传送完成
return 5; //没有传送成功,写一个字节失败
if (hw_wait('A',num)) //等待从机应答信号
return 6; //没有等到应答信号,写一个字节失败
hw_send_signal('O',num); //发送停止信号
return 0;
}
define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)
#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)
#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x01(不自检,200deg/s)
#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)
#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读)
#define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取
//======================================
//初始化MPU6050
//======================================
uint8 mpu6050_init()
{
uint8 i=0;
i|=iic_write1(I2C0,SlaveAddress,PWR_MGMT_1, 0x00); //解除休眠状态
Delay5us();
i|=iic_write1(I2C0,SlaveAddress,SMPLRT_DIV, 0x07);
Delay5us();
i|=iic_write1(I2C0,SlaveAddress,CONFIG, 0x06);
Delay5us();
i|=iic_write1(I2C0,SlaveAddress,GYRO_CONFIG, 0x01);
Delay5us();
i|=iic_write1(I2C0,SlaveAddress,ACCEL_CONFIG, 0x01);
return i;
}
研究此问题数日无果,大汗淋漓!其中时日不禁百度前100+页 无果,后继而google之. 大悟! 耐将I2C对应端口PCR中ODE置位即可。爽栽。 yandld11 发表于 2013-6-20 10:15 static/image/common/back.gif
研究此问题数日无果,大汗淋漓!其中时日不禁百度前100+页 无果,后继而google之. 大悟! 耐将I2C对应端口P ...
已经用模拟的好使了,速度400K左右吧!谢谢 你能把这段程序给我发一下么?MPU6050的K60上使用。IIC我都没弄出来 我是没弄出来,愁死了。。。各种库,都是不好用。。。
页:
[1]