为什么写寄存器命令就一个字节?是有两个口,为什么不是16位?读取到的数据一直是0xff,输入无法改变
Kailyn Chen:
写时序如图,command byte为8bit,有什么问题吗?读取到的0xFF,那么您的I2C从机地址配置的多少?
guang zhang:
回复 Kailyn Chen:
command是8位,如何设置端口0和1 的输入输出呢?应该是后面的data也只能是一个字节吧?从机是0,A1,A0接地了
guang zhang:
回复 Kailyn Chen:
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;
Kailyn Chen:
回复 guang zhang:
从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开始。
您可以试试,看这样是否没问题。
guang zhang:
回复 Kailyn Chen:
我自己试了试,一个命令对应一个数据能正常使用,按照datasheet上那样好像不行。谢谢了