i2c调试记录

i2c简单时序关系
平时clk sda都为高电平
当clk为高,sda发生一次下降沿,触发开始信号

然后由clk的高电平期间采样 SDA数据,在clk高时候需要保持SDA
先发送7位地址和一位读写标志(所以i2c地址一般是7位的),然后接收端回一个ACK
然后发送8位reg地址,回一个ACK
然后就是数据
都是8位一组发送的



d a0    s3c24xx_i2c_init 
c e1    s3c24xx_i2c_clockrate
6 e1    s3c24xx_i2c_enable_irq
50 d0  s3c24xx_i2c_message_start
7 e1    s3c24xx_i2c_message_start
51 f0   s3c24xx_i2c_message_start
9 e1    i2c_s3c_irq_nextbyte
50 90  s3c24xx_i2c_message_start
7 f1     s3c24xx_i2c_message_start
51 b0  s3c24xx_i2c_message_start
9 e1    i2c_s3c_irq_nextbyte
9 e1    i2c_s3c_irq_nextbyte
9 e1    i2c_s3c_irq_nextbyte
9 e1    i2c_s3c_irq_nextbyte
1 71     s3c24xx_i2c_disable_ack
9 61    i2c_s3c_irq_nextbyte
52 91  s3c24xx_i2c_stop
4 51    s3c24xx_i2c_disable_irq
9 41    i2c_s3c_irq_nextbyte

第二次

6 41           s3c24xx_i2c_enable_irq
50 d0         s3c24xx_i2c_message_start
7 e1           s3c24xx_i2c_message_start
51 f0          s3c24xx_i2c_message_start
9 e1           i2c_s3c_irq_nextbyte
50 90         s3c24xx_i2c_message_start
7 f1            s3c24xx_i2c_message_start
51 b0         s3c24xx_i2c_message_start
9 e1           i2c_s3c_irq_nextbyte
9 e1           i2c_s3c_irq_nextbyte
9 e1           i2c_s3c_irq_nextbyte
9 e1           i2c_s3c_irq_nextbyte
1 71            s3c24xx_i2c_disable_ack
9 61           i2c_s3c_irq_nextbyte
52 91         s3c24xx_i2c_stop
4 51           s3c24xx_i2c_diable_irq
9 41           i2c_s3c_irq_nextbyte


第一次出错
6 41           s3c24xx_i2c_enable_irq
50 d0         s3c24xx_i2c_message_start
7 e1           s3c24xx_i2c_message_start
51 f0          s3c24xx_i2c_message_start
1 61
52 d1         s3c24xx_i2c_stop
4 41           s3c24xx_i2c_diable_irq

最后重置下GPIO口解决
感觉i2c在异常被下拉后,无法恢复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值