以前写了IIC的写,而且可以用,然后这次需要把一触摸屏的IC的值给读出来,调了几天,师傅说可能是我的写有问题,让我写个异常地址比如0xff,结果写没ACK回来,说明我的写没有问题; 后来看了一下示波器和手册,觉得IIC的周期可能小了,才1us,于是改成10us,点触摸屏后,触摸IC有值发生变化,说明IC的IIC周期和我之前配的MCU的IIC的时钟不匹配; 可是读出来的值还是不对,整了几天,今天再拿代码重新审视了一遍,把时序都照着手册上配了一遍,觉得写的代码还是没有问题,中午看着示波器灵感来了,触摸按键的时候,发现读出来的值和预想的值差别在于我读IIC的时候太快了,周期靠前,所以值是错的,然后改代码,在写地址收到ACK后,延迟20us,再读,OK了; 总结:IIC读需要注意两点,一、读取目标IC的时钟要和自己写的模拟IIC的时钟吻合;二、有的芯片你发地址过取想读的时候,人家没反应这么快,加个延时就好了;
|