IIC总线的应答——遵循IIC协议的IC自带的识别应答与非应答

引言:(这 句出自何立民的《I2C总线应用系统设计》)原述:“应答信号在第9个时钟上出现,接收器输出低电平为应答信号(A),输出高电平则为非应答信号 (/A)”,“由于某种原因,被控器不产生应答时,如被控器正在进行其它处理无法接收总线上的数据时,必须释放总线,将数据线置高电平,然后主控器可通过产生一个停止信号信号来比终止数据传输。”“当主控器接收数据时接收到最后一个数据字节后,必须给被控器发送一个非应答位(/A),使被控器发送器释放数 据线,以便主控制(注:应当是主控器,不是主控制)发送停止信号从而终止数据传输。”

一直以来都有个疑惑,看下面这段代码:

bit IIC_WaitAck()
{
    bit AckBit;
    SCL = 1;
    IIC_Delay(5); //5us延时;
    AckBit = SDA;
    SCL = 0;
    IIC_Delay(5);
    
    return AckBit();
}

usigned char PCF_8591_Read(uchar addr)
{
    unsigend char dat;
    IIC_Start();
    IIC_SendByte(0x90); //器件寻址,同时发送写命令
    IIC_WaitAck();      //等待应答;
    IIC_SendByte(addr); //读取的A/D通道地址;
    IIC_WaitAck();

    IIC_Start();    //结束写,转为读取
    IIC_SendByte(0x91); //器件寻址同时
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值