PCA9539 IIC无法读取问题
时间:10-02
整理:3721RD
点击:
为什么写寄存器命令就一个字节?是有两个口,为什么不是16位?读取到的数据一直是0xff,输入无法改变
写时序如图,command byte为8bit,有什么问题吗?读取到的0xFF,那么您的I2C从机地址配置的多少?
command是8位,如何设置端口0和1 的输入输出呢?应该是后面的data也只能是一个字节吧?从机是0,A1,A0接地了
u16 temp=0;
IIC_Start();
IIC_Send_Byte(0x74<<1);
IIC_Wait_Ack();
IIC_Send_Byte(0x00);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte((0x74<<1)+1);
IIC_Wait_Ack();
temp=IIC_Read_Byte(1); //不产生ack
IIC_Stop();//产生一个停止条件
return temp;
从datasheet中给的写时序来看,当发送一个command byte之后,收到ACK之后紧跟着写的data是这个command 对应的data。
比如command byte设置的是port 0.那么时序对应的是这样的:
start+7bit slave address/W+ACK+command byte(port 0)+ACK+ data to Port 0+ACK+ data to Port1 + ACK
或者如果command byte先定义port 1的话,那么紧跟着command后的data对应的是data 1,后面继续写port 0.
不需要重新启动restart开始。
您可以试试,看这样是否没问题。