Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1812062
  • 博文数量: 195
  • 博客积分: 4227
  • 博客等级: 上校
  • 技术积分: 2835
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-04 10:39
文章分类

全部博文(195)

文章存档

2013年(1)

2012年(26)

2011年(168)

分类: LINUX

2011-05-30 10:09:36

I2C调试记录

谨以此文纪念过往的岁月

一.   前言

该次调试I2C的电容式touchscreen时,发现了不少问题,有关于电容屏的有关于I2C接口的。

二.调试记录

1. I2CIO模拟,其中有一点是在SDAIO被设置为输入高阻时,其线上是高电平。在主机写从机的时候,会出现错误。而按照以前的经验在主机不输出的时候,一般会把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一个cycleOK

阅读(3594) | 评论(0) | 转发(0) |
0

上一篇:C语言之typedef

下一篇:Android移植之WIFI

给主人留下些什么吧!~~