u8 Change_Address(u8 oldAddress, u8 newAddress) { IIC_Start(); IIC_Send_Byte(oldAddress); // 发送设备地址+写信号 if (!IIC_Wait_Ack()) { IIC_Stop(); return RESET; } delay_us(40); IIC_Send_Byte(0xaa); // 0xAA,修改 IIC 地址时候发出的第一个指令 if (!IIC_Wait_Ack()) { IIC_Stop(); return RESET; } IIC_Send_Byte(0xa5); // 0xA5,修改 IIC 地址时候发出的第二个指令 if (!IIC_Wait_Ack()) { IIC_Stop(); return RESET; } IIC_Send_Byte(newAddress); // 新地址 if (!IIC_Wait_Ack()) { IIC_Stop(); return RESET; } IIC_Stop(); return SET; }
时间: 2023-06-19 15:10:38 浏览: 119
Visual C#改变本机IP地址小程序
5星 · 资源好评率100%
这段代码是用于修改 IIC 设备的地址,其中 oldAddress 是设备原来的地址,newAddress 是设备需要修改成的新地址。代码的执行过程如下:
1. 发送起始信号,开始 IIC 通信。
2. 发送设备地址和写信号,等待设备应答。如果设备没有应答,说明设备不存在或者通信失败,停止 IIC 通信并返回 RESET。
3. 发送 0xAA 指令,等待设备应答。如果设备没有应答,说明通信失败,停止 IIC 通信并返回 RESET。
4. 发送 0xA5 指令,等待设备应答。如果设备没有应答,说明通信失败,停止 IIC 通信并返回 RESET。
5. 发送新地址,等待设备应答。如果设备没有应答,说明通信失败,停止 IIC 通信并返回 RESET。
6. 发送停止信号,结束 IIC 通信。
7. 返回 SET,表示地址修改成功。
需要注意的是,IIC 通信中每个数据的发送都需要等待设备的应答,如果设备没有应答则说明通信失败,需要停止通信并返回 RESET。同时,每个数据的发送之间需要留出一定的时间间隔,以确保设备能够正确接收数据。
阅读全文