新手入门
- 积分
- 18
- 金钱
- 18
- 注册时间
- 2018-7-24
- 在线时间
- 13 小时
|
1金钱
网上看到有人碰到相关问题,提供解决方法是读数后主机要向从机返回NACK而不是ACK,但是我NACK和ACK都试过了,发ACK低八位读回来是0,发NACK低八位读回来是ff。
另外加延时等方法都试了,程序是网上复制的。现在剩下的就不知道是不是他们读寄存器的问题。只用了8位精度。或者电路上有什个么讲究吗?
下面附上相关寄存器代码
1.第一部分 初始化的4个数
WriteIntBuf[0] = 0x90; //0x90
WriteIntBuf[1] = 0x01; //0x01
WriteIntBuf[2] = Chnel; // 写入要配置的通道
WriteIntBuf[3] = 0x83; //0xe3 82 83
2.第二部分准备读取 IIC1_Send_Byte(0x90); //slave
while(IIC1_Wait_Ack());
IIC1_Send_Byte(0x00);
while(IIC1_Wait_Ack());
3.读取 问题就在这里 低位读取不了
Readbuff[0]= IIC1_Read_Byte(1);//试过ACK和NACK
//试过加延时
Readbuff[1]= IIC1_Read_Byte(0);
|
最佳答案
查看完整内容[请看2#楼]
已经解决了 但又有新疑问了 见贴 http://www.openedv.com/thread-276896-1-1.html
|