OpenEdv-开源电子网

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

I2C应答信号的产生

[复制链接]

30

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2013-3-7
在线时间
6 小时
发表于 2013-7-27 19:37:55 | 显示全部楼层 |阅读模式

各位大神,我在学习IIC操作24C02,在阅读战舰的程序时,有下面的疑问:
比如在读取从机的一个字节数据时,程序如下:

u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{     
 u8 temp=0;                         
    IIC_Start(); 
 if(EE_TYPE>AT24C16)
 {
  IIC_Send_Byte(0XA0);    //发送写命令
  IIC_Wait_Ack();
  IIC_Send_Byte(ReadAddr>>8);//发送高地址
  IIC_Wait_Ack();  
 }else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //发送器件地址0XA0,写数据  

 IIC_Wait_Ack();
    IIC_Send_Byte(ReadAddr%256);   //发送低地址
 IIC_Wait_Ack();    
 IIC_Start();       
 IIC_Send_Byte(0XA1);           //进入接收模式     
 IIC_Wait_Ack(); 
    temp=IIC_Read_Byte(0);    
    IIC_Stop();//产生一个停止条件    
 return temp;
}

那么,我想问,这里IIC_Wait_Ack()等待的是谁发出的应答信号的呢,也就是这个应答信号时如何产生的呢?是从机自动产生的应答信号吗?
原子的程序里有产生应答的程序:
//产生ACK应答
void IIC_Ack(void)
{
 IIC_SCL=0;
 SDA_OUT();
 IIC_SDA=0;
 delay_us(2);
 IIC_SCL=1;
 delay_us(2);
 IIC_SCL=0;
}
但是这个程序并没有被其他函数所调用,放在这里有什么用呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2013-3-7
在线时间
6 小时
 楼主| 发表于 2013-7-27 20:00:12 | 显示全部楼层
顶一下,跪求大神解答
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-27 20:59:54 | 显示全部楼层
回复【楼主位】supstudent:
---------------------------------
你看一下24CXX的数据手册.上面给详细介绍了IIC协议,以及如何操作.
应答是来自从机的.主机在某些时候,也是可以发送应答的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2013-7-12
在线时间
2 小时
发表于 2015-11-5 16:08:18 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子你好
我现在用的飞思卡尔的MMA8652FC加速度传感器,接口I2C通信,也是STM32平台
借用你的IO口模拟I2C驱动程序
现在是我的MMA8652总是没有应答,器件工作频率是100KHz
是怎么回事呢?怎么判断这个传感器是好的还是坏的呢?不知从哪里找问题了?
谢谢解答
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-5 23:41:23 | 显示全部楼层
回复【4楼】delamu:
---------------------------------
这个只能慢慢调试哦
先确定模块是好的,然后再调试代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2020-10-19
在线时间
17 小时
发表于 2020-12-14 22:00:14 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 23:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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