智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1319|回复: 6
打印 上一主题 下一主题

求问大神,I2C等待应答信号时间过长,程序卡死

  [复制链接]

2

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
威望
541
贡献
395
兑换币
350
注册时间
2015-11-20
在线时间
105 小时
跳转到指定楼层
1#
发表于 2017-1-17 22:11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求问大神,I2C等待应答信号时间过长,程序卡死可以怎么解决啊?
等待应答信号的程序如下:
uint8 LPLD_I2C_WaitAck(I2C_Type *i2cx, uint8 is_wait)
{
  uint16 time_out;
  //time_out=0;
//  PTE0_O=0;
//  PTE12_O=0;
  if(is_wait == I2C_ACK_ON)
  {
    while(!(i2cx->S & I2C_S_IICIF_MASK))
    {
      if(time_out>70000) //如果等待超时,强行退出
      {
//        PTE0_O=1;
//        PTE12_O=0;
//        if(PITCounter>200)
//          MPU6050_Init();
        //i2cx->S |= I2C_S_IICIF_MASK;
        break;
      }
      else time_out++;
    }
    i2cx->S |= I2C_S_IICIF_MASK;
  }
  else
  {
    //关闭I2C的ACK
    i2cx->C1 |= I2C_C1_TXAK_MASK;
  }
  if(time_out>60000)
    return 1;
  else return 0;
}


回复

使用道具 举报

56

主题

4914

帖子

3

精华

顶级版主

北京科技大学智能汽车队公共主页管理员

Rank: 11Rank: 11Rank: 11Rank: 11

积分
56131

特殊贡献奖章资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
19568
贡献
13933
兑换币
3365
注册时间
2010-7-22
在线时间
11315 小时
2#
发表于 2017-1-18 06:19:55 | 只看该作者
拿双通道示波器去看有没有ACK啊
回复 支持 反对

使用道具 举报

2

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
威望
541
贡献
395
兑换币
350
注册时间
2015-11-20
在线时间
105 小时
3#
 楼主| 发表于 2017-1-18 22:53:40 | 只看该作者
具体该怎么操作呢?能说的再详细一点吗?
回复 支持 反对

使用道具 举报

2

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
威望
541
贡献
395
兑换币
350
注册时间
2015-11-20
在线时间
105 小时
4#
 楼主| 发表于 2017-1-19 00:15:40 | 只看该作者
aytc100 发表于 2017-1-18 06:19
拿双通道示波器去看有没有ACK啊

噢,他那个卡死在里面以后,SCL信号和其他信号,包括PWM都是乱的

回复 支持 反对

使用道具 举报

56

主题

4914

帖子

3

精华

顶级版主

北京科技大学智能汽车队公共主页管理员

Rank: 11Rank: 11Rank: 11Rank: 11

积分
56131

特殊贡献奖章资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
19568
贡献
13933
兑换币
3365
注册时间
2010-7-22
在线时间
11315 小时
5#
发表于 2017-1-19 11:36:53 | 只看该作者
陈墨瞳彡~ 发表于 2017-1-19 00:15
噢,他那个卡死在里面以后,SCL信号和其他信号,包括PWM都是乱的

那是卡死的结果,不是原因
回复 支持 反对

使用道具 举报

2

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
威望
541
贡献
395
兑换币
350
注册时间
2015-11-20
在线时间
105 小时
6#
 楼主| 发表于 2017-2-9 15:00:41 | 只看该作者
aytc100 发表于 2017-1-19 11:36
那是卡死的结果,不是原因

就是说没有ACK,那可能的原因有哪些呢?

回复 支持 反对

使用道具 举报

56

主题

4914

帖子

3

精华

顶级版主

北京科技大学智能汽车队公共主页管理员

Rank: 11Rank: 11Rank: 11Rank: 11

积分
56131

特殊贡献奖章资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
19568
贡献
13933
兑换币
3365
注册时间
2010-7-22
在线时间
11315 小时
7#
发表于 2017-2-10 14:13:37 | 只看该作者
陈墨瞳彡~ 发表于 2017-2-9 15:00
就是说没有ACK,那可能的原因有哪些呢?

从机挂了,或者主机收到了假的ack。这个需要你用示波器去查啊,光水帖子是不行的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-5 18:38 , Processed in 0.405829 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表