OpenEdv-开源电子网

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

void IIC_Ack(void)

[复制链接]

7

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-23
在线时间
6 小时
发表于 2017-7-5 10:24:32 | 显示全部楼层 |阅读模式
1金钱
//产生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;
}
如果接收器是从机,那产生应答是从机。为什么这里是SDA_OUT();IIC_SDA=0;?        SDA_OUT();IIC_SDA=0;不是由主机产生应答吗?

最佳答案

查看完整内容[请看2#楼]

1. Master发送I2C addr(7bit)和w操作1(1bit),等待ACK 2. Slave发送ACK 3. Master发送reg addr(8bit),等待ACK 4. Slave发送ACK 5. Master发起START 6. Master发送I2C addr(7bit)和r操作1(1bit),等待ACK 7. Slave发送ACK 8. Slave发送data(8bit),即寄存器里的值 9. Master发送ACK 10. 第8步和第9步可以重复多次,即顺序读多个寄存器
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

175

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2016-4-30
在线时间
141 小时
发表于 2017-7-5 10:24:33 | 显示全部楼层
1.    Master发送I2C addr(7bit)和w操作1(1bit),等待ACK
2.    Slave发送ACK
3.    Master发送reg addr(8bit),等待ACK
4.    Slave发送ACK
5.    Master发起START
6.    Master发送I2C addr(7bit)和r操作1(1bit),等待ACK
7.    Slave发送ACK
8.    Slave发送data(8bit),即寄存器里的值
9.    Master发送ACK
10.    第8步和第9步可以重复多次,即顺序读多个寄存器
回复

使用道具 举报

7

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-23
在线时间
6 小时
 楼主| 发表于 2017-7-5 13:22:51 | 显示全部楼层
执迷 发表于 2017-7-5 10:40
1.    Master发送I2C addr(7bit)和w操作1(1bit),等待ACK
2.    Slave发送ACK
3.    Master发送reg a ...

SDA_OUT();是IO口的输出模式。如果是从机应答,为什么可以设为SDA_OUT();而不是SDA_IN()
回复

使用道具 举报

13

主题

175

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2016-4-30
在线时间
141 小时
发表于 2017-7-5 13:37:16 | 显示全部楼层
加剧而 发表于 2017-7-5 13:22
SDA_OUT();是IO口的输出模式。如果是从机应答,为什么可以设为SDA_OUT();而不是SDA_IN()

9.    Master发送ACK
回复

使用道具 举报

7

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-23
在线时间
6 小时
 楼主| 发表于 2017-7-5 15:19:26 | 显示全部楼层
执迷 发表于 2017-7-5 13:37
9.    Master发送ACK

从机应答是 Master发送ACK,而不是从机发送的?
回复

使用道具 举报

13

主题

175

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2016-4-30
在线时间
141 小时
发表于 2017-7-5 18:11:18 | 显示全部楼层
加剧而 发表于 2017-7-5 15:19
从机应答是 Master发送ACK,而不是从机发送的?

Slave表示从机  Master表示主机,,主机读取到数据回ACK表示已经收到数据,可以发下一个数据,,当你不想在读了就发个NACK。。从机就停止发送数据
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 16:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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