如果第一个字节有ACK返回,后面没有,那肯定是时序问题或者写寄存器有误,你要写的寄存器是否不可写?
这种情况最有可能还是大方向时序对了,可细节达不到要求
我当时调XILINX ZYNQ7000的IIC就这样,有在重复起始信号处一个小脉冲,这个小脉冲对于RTC,FLASH芯片都是可以接受并容错的,但是ADV7390就始终无法通信,通过模拟IIC写程序后消除了小脉冲通信才正常。
接个示波器看波形,与数据手册好好对照一下吧。
不要那么确定说你的命令就是正确的 ,计算命令上是正确的 那么你的时序肯定是有错误的地方的 仔细比较你的时序和芯片所要求的时序 一定要严格按照人家芯片的要求才可能找到错误所在
有可能是你的地址就不对,你发的指令根本不认,建议你找一个最新的芯片手册查对一下;