OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8335|回复: 2

I2C 应答信号问题

[复制链接]

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2012-5-17
在线时间
0 小时
发表于 2012-8-18 20:16:55 | 显示全部楼层 |阅读模式
我看了一下IIC的时序图,一个字节在传输到第八到第九个时钟周期之间时,会产生一个应答位ACK。 那是不是等待应答的时间为9个周期呢,若9个周期内还没有ACK产生,则无应答?
如果是,那9个周期是多少时间呢?
还有原子哥程序中把 ucErrTime加到250的目的是为什么呢? 这样能够产生多少时间的延时呢?

原子哥IIC应答函数如下:
u8 IIC_Wait_Ack(void)
{
 u8 ucErrTime=0;
 SDA_IN();      //SDA设置为输入 
 IIC_SDA=1;delay_us(1);   
 IIC_SCL=1;delay_us(1); 
 while(READ_SDA)
 {
  ucErrTime++;
  if(ucErrTime>250)
  {
   IIC_Stop();
   return 1;
  }
 }
 IIC_SCL=0;//时钟输出0    
 return 0; 
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2012-8-18 20:38:45 | 显示全部楼层
你用的是模拟的IIC,所以来说不存在周期是多少的问题,只要在硬件要求的范围即可,如果在你等待应答信号的时候,等了足够长的时间还没应答信号,那只能说明IIC无应答了,这个模拟的跟实际的是有差异的
努力,前进。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-18 22:05:01 | 显示全部楼层
回复【楼主位】pope_hxj:
---------------------------------
你说的周期就是SCK了.
不是什么等待9个周期,而是第九个SCK.
如果在第9个SCK完了,还没应答,就认为没有应答.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 10:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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