分别抓取了注释while语句跟没有注释while语句的I2C调试数据与波形图,可以发现,前者正常执行了stop,后者没有,也就是说增加 while((sda==1)&&(i<250))i++; 之后,stop缺失,导致24c02没有进入写周期,数据也就没有写进去。 问题是为何while((sda==1)&&(i<250))i++;这条语句会导致stop缺失,没搞明白。这只是一条判断语句,sda也产生了应答的,那么while为假,所以执行这条语句也就是1个指令周期的时间,相当于延时了一个指令周期,为什么会有影响呢? 如下是对比图:
|