• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

iic应答信号问题?

huihui163 2017-10-19 浏览量:1375


IIC_SCL=0;
SDA_OUT();
IIC_SDA=0;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
iic应答信号。不是应该设置成输入模式,去接受从机的信号吗,

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 不需要设置,IIC是串行通信,当主机发送完成后,从机接收到主机发来的指令,会自动给主机返回相应的值
    • 发布于 2017-10-19
    • 举报
    • 评论 6
    • 0
    • 0
huihui163 回复了 玲玲灵灵2013:那这个ACK和nack函数是怎么说的 回复
玲玲灵灵2013 回复了 玲玲灵灵2013:主器件向总线上发送从器件地址,并将读标志位置1(地址的最后一位置1,表示读操作);随后,从器件将第一个数据发送到I2C总线上;如果主器件准备再读取下下一个数据,则置应答位为0(ACK),如果主器件不想再读下下一个数据,就置应答位为1(NO ACK),表示通信即将结束 回复
huihui163 回复了 玲玲灵灵2013:您说的是读啊,写的时候呢 回复
玲玲灵灵2013 回复了 huihui163:还可以这样理解,如果主给从发命令,则应答信号需要从机响应(ACK或NACK),如果响应的为ACK,则主机还可以继续发命令;如果响应为NACK,则通信结束。 回复
huihui163 回复了 玲玲灵灵2013:我发的这个程序就是响应ACk? 回复
玲玲灵灵2013 回复了 玲玲灵灵2013:嗯嗯。对,你发的这个是置位为1,所以为NOACK 回复

其他答案 数量:4
  • I2C总线上面总是只有一个主机,其余的都是从机。它本身就有这种功能,就是从机接到信号之后应答,不需要特别设置
    • 发布于2017-10-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 单片机作为主机的时候是要设置输入模式接收ack信号。但程序有可能忽略了这一位,默认当做接收成功,原本接收ack变成发送ack(即单片机作为从机的应答位)。见过这种程序,很不严谨,但正常情况不影响使用。
    • 发布于2017-10-20
    • 举报
    • 评论 2
    • 0
    • 0
huihui163 回复了 day_day :如果没有等待应答程序,那不就乱了 回复
电子老工程师 回复了  : 回复

  • 对,应答信号,是需要读,看通讯对方有没有把电平拉低作为ACK
    • 发布于2017-10-20
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  : 回复

相关问题

问题达人换一批

iic应答信号问题?