本帖最后由 19996 于 2020-10-30 14:49 编辑
通过配置,我现在需要读取ID和电机速度。
按照说明,电机速度应该是0 然后ID也应该是之前设置的ID。
可是读取出来的ID并不对
下面是程序和通过逻辑分析仪分析的协议结果。
while(1)
{
//读取 ID
IIC_Start();
IIC_Send_Byte(0XA4); //从机地址
//IIC_Wait_Ack();
IIC_Ack();
IIC_Send_Byte(0X08); //寄存器地址
IIC_Wait_Ack();
//IIC_Ack();
IIC_Start();
IIC_Send_Byte(0XA5);
before = IIC_Read_Byte(1);
//IIC_Wait_Ack();
after = IIC_Read_Byte(1);
//value = before<<8|after;
value = before<<8|after;
//IIC_Wait_Ack();
IIC_Stop();
Delay_ms(500);
printf("\n\r芯片ID: %d \n\r",value);
//读取电机速度
IIC_Start();
IIC_Send_Byte(0XA4); //从机地址
//IIC_Wait_Ack();
IIC_Ack();
IIC_Send_Byte(0X01); //寄存器地址
IIC_Wait_Ack();
//IIC_Ack();
IIC_Start();
IIC_Send_Byte(0XA5);
before = IIC_Read_Byte(1);
//IIC_Wait_Ack();
after = IIC_Read_Byte(1);
//value = before<<8|after;
value = before<<8|after;
//IIC_Wait_Ack();
IIC_Stop();
Delay_ms(500);
printf("\n\r测试数据: %d \n\r\n\r",value);
//*/ while(1);
}
|