打印

关于I2C的总结,请指正拍砖~~~~~

[复制链接]
2339|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kavieen|  楼主 | 2011-8-6 21:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
经过两周的调试,总结I2C的经验如下,请大侠们指正:

1)
SCL
时钟的产生:
      主发送模式时,SCL时钟是依据DR数据寄存器产生的,当数据写到DR数据寄存器之后,DR通过移位寄存器发出数据到SDA的同时,SCL时钟产生9个时钟脉冲,即8位数据+1位应答。
      主接收模式时,在发送器件写地址和 数据地址的时候,SCL时钟 主发送模式是一样的,当发送到器件读地址时候,需要判断ADDR位确定地址是否发送完成,如果ADDR1则认为地址发送完成,此时,清ADDRSCL时钟随即产生。也就是说此时的SCL时钟是伴随ADDR被清除产生的。
         
2)
单字节接收:
        单字节接收时,数据接收完成后,是需要一个NACK的,所以要关掉ACK应答,在发送STOP条件后在开启ACK应答,以便下次的发送和接收。
3)
I2C
被中断问题

I2C
可以被别的任务和中断服务函数打断,但是不能超过25ms,否则则认为是超时错误。I2C被打断器件,SCL时钟会保持前一个状态的电平不变。

沙发
ploto| | 2011-8-7 11:30 | 只看该作者
我以前做了个产品,使用I2C总线的FRAM,最后发现经常会被死锁,后来一怒之下,再也不用I2C了,永远只用SPI了,分析结果,I2C适合存储等小批量,不常用 的数据读取,SPI更适合大数据量的通信 。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

20

帖子

1

粉丝