为什么写寄存器命令就一个字节?是有两个口,为什么不是16位?读取到的数据一直是0xff,输入无法改变
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
为什么写寄存器命令就一个字节?是有两个口,为什么不是16位?读取到的数据一直是0xff,输入无法改变
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开始。
您可以试试,看这样是否没问题。
我自己试了试,一个命令对应一个数据能正常使用,按照datasheet上那样好像不行。谢谢了