我用STM32模拟的I2C与GY-26进行通信,向GY-26写指令的时候,GY-26没有返回应答,一直是高电平。模拟I2C程序没有问题,因为我用模拟I2C程序能成功的与24C02的通信。
这是GY-26的通信协议, GY_26_WriteOneByte(0x00,0x31);//测量角度
void GY_26_WriteOneByte(u8 cmd,u8 data)
{
IIC_Start(); //开始信号
IIC_Send_Byte(cmd);//发送指令
IIC_Wait_Ack();//等待应答
IIC_Send_Byte(data);//发送数据
IIC_Wait_Ack(); //等待应答
IIC_Stop();//产生一个停止条件
delay_ms(10);
}
这是GY-26发送指令的程序,就是卡死在了,IIC_Wait_Ack();//等待应答,总是高电平,没有应答。我怀疑是STM32频率太快的原因,因为手册上说GY-26的响应频率是15HZ。大家怎么看,能给我提示一下思路吗?我现在不知道要怎么调试了! 谢谢各位!!
PS:我用3.3v接4.7K的电阻做上拉试了试,然后去掉上拉电阻又试了试,结果一样,都是没有应答,SDA线一直是3.3V高电平。
它的I2C地址是0xe0,
//GY26读写地址
#define GY_WR_ADDR 0xE0
#define GY_RD_ADDR 0xE1
这是我定义的地址。时序没有问题,因为可以与板载的24C02进行通信。
一周热门 更多>