分类: LINUX
2011-05-30 10:09:36
谨以此文纪念过往的岁月
一. 前言
该次调试I2C的电容式touchscreen时,发现了不少问题,有关于电容屏的有关于I2C接口的。
二.调试记录
1. I2C的IO模拟,其中有一点是在SDA的IO被设置为输入高阻时,其线上是高电平。在主机写从机的时候,会出现错误。而按照以前的经验在主机不输出的时候,一般会把SDA置为输入,而置为输入时,IO上的电平与在置为输出前的电平是一致的。而现在是不对的(没有把输入置为上拉)。
2. I2C需要置为上拉,同时需要在主机和从机之间添加上拉电阻,该上拉电阻的阻值根据不同的设备其值不同,一般有10k,4.9K,2.2K等。如果该阻值不对的话,易出现数据时而对时而不对的情况。这次就吃亏在此,因为I2C在读设备ID号时是正确的,而在读数据时时而对时而不对,折腾了很久。
3.I2C的协议,需要理解的是,标准I2C接口的读数据的流程是这样的。Start->addr->cmd->start ->addr->read data.
4.I2C 的时钟,参考芯片的datasheet时钟,其tcycle最下是54ns,而我的时钟为2us,以为是行的,结果是不行的。在使用示波器时发现,其芯片输出高时,其上升电平还没有上升完全就又开始从0上升,发现是读时序太快了。后来降到10us一个cycle就OK。