新手入门
- 积分
- 9
- 金钱
- 9
- 注册时间
- 2020-11-10
- 在线时间
- 1 小时
|
在MPU6050的例程,涉及到连续读写时,当len>1时 数据都是写到了一个寄存器里面的。这个和MPU6050的驱动库的想要实现的i2c_write()是有一些差异的
例如下面这段
本意是想把data[0]的数据也到pwr1寄存器里面,data[1]的数据写到pwr2寄存器里面(因为各个轴加速度的待机状态就是在pwr2中去进行配置的)。
所以我觉的这里可能有点问题,我并没有使用范例提供的i2c而是使用了我现在用的板子上面自带的硬件i2c,目前我碰到了这样的问题,就是当写多个数据时,我是重复写到了同一个地址中,而不是逐渐递增的地址中,所以我这里和大家说下,大家可以测试下是否存在这样的问题。
[img]blob:http://www.openedv.com/fdd041e0-4a8f-49d6-a07f-b1d99ade5c4a[/img]
u8 MPU_Write_Len(u8 addr, u8 reg, u8 len, u8 *buf)
{
u8 i;
MPU_IIC_Start();
MPU_IIC_Send_Byte((addr << 1) | 0); //����������ַ+д����
if (MPU_IIC_Wait_Ack()) //�ȴ�Ӧ��
{
MPU_IIC_Stop();
return 1;
}
MPU_IIC_Send_Byte(reg); //д�Ĵ�����ַ
MPU_IIC_Wait_Ack(); //�ȴ�Ӧ��
for (i = 0; i < len; i++)
{
MPU_IIC_Send_Byte(buf); //��������
if (MPU_IIC_Wait_Ack()) //�ȴ�ACK
{
MPU_IIC_Stop();
return 1;
}
}
MPU_IIC_Stop();
return 0;
}
|
|