void IIC_Ack(void)

2019-07-20 13:37发布

//产生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;不是由主机产生应答吗?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
执迷
1楼-- · 2019-07-20 18:32
 精彩回答 2  元偷偷看……
加剧而
2楼-- · 2019-07-20 19:06
执迷 发表于 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()
执迷
3楼-- · 2019-07-21 00:44
 精彩回答 2  元偷偷看……
加剧而
4楼-- · 2019-07-21 02:24
 精彩回答 2  元偷偷看……
执迷
5楼-- · 2019-07-21 05:54
加剧而 发表于 2017-7-5 15:19
从机应答是 Master发送ACK,而不是从机发送的?

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

一周热门 更多>