目前使用一款MCP4728芯片,但他只有4个通道,而我需要扩展到8通道,也就是要在添加一个芯片,此时便需要对其中一片重写地址。
如下方图所示,需要在其第2字节第8位之后和ACK之前,将LDAC置0
那么现在的问题是倘若程序为:
//上方程序省略
while(!I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_SendData(0x61); //第2字节
GPIO_WriteLow(GPIOC,GPIO_PIN_3);
while(!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED)); //停留此处,不再向下执行
I2C_SendData(0x66);//第3字节
//下方程序省略
那么第2字节数据发完后,将LDAC引脚置0,此时其ACK便会被影响,程序卡住。若GPIO_WriteLow(GPIOC,GPIO_PIN_3);这一句不写程序正常向下执行。
请问有什么办法能使发送完第8位数据后,同时LDAC置0,而不影响ACK。
望大神们能指点一二。
|