本帖最后由 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);
- }
|