找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

i2C应答要判断再进行下一步吗?附单片机程序

查看数: 432 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-12-5 10:48

正文摘要:

    如图所示这样写是不是不够严谨,如果从机都没应答也发送地址或数据,但是如果要等有应答再做下一步,那不是要嵌套几层if判断?     void At24c02Write(uchar ADDR, DAT) { ...

回复

ID:401564 发表于 2023-12-6 16:24
殿堂之上 发表于 2023-12-6 09:46
那这部分具体要怎样有没有例子发来看下是退出还是用循环等待

void Write_Byte(unsigned char byte)                        //写入器件的应答信号由从机给出
{
         unsigned char i,temp;
        unsigned int k;
         temp=byte;                
        SCL=0;
        Delay();
                 for(i=0;i<8;i++)
                         {
                        if(temp&0x80)SDA=1;
                        else SDA=0;
                        Delay();
                        SCL=1;
                        Delay();               
                        SCL=0;
                        Delay();
                        temp=temp<<1;
                        }
        SCL=1;                   //给出一个上升沿,用于产生应答信号
        Delay();
        SDA=1;
        while((SDA==1)&&(k<1000))
                {
                k++;
                Delay();
                } //等待SDA出现低电平,出现低电平就表示器件已经应答
        SCL=1;
        SDA=0;
        Delay();
}
对于应答的处理,每个人有每个人处理方式,或者是说场合不同,代码也会有所不同
对于无应答,有几种处理方法,看你代码应用场合来决定:
1,不理会有没有应答,直接写入下一个字节
2,返回一个IIC错误信息,可以是提示IIC错误,或者是有屏幕提示无应答之类的处理
3,重新启动IIC,再给一个启始信号,继续进行IIC通讯

不管是用那个方法,IIC一定是要有应答系统的,而且,应答是不能死等的,要有一个时间限制的,不然容易卡死

ID:1095802 发表于 2023-12-6 09:48
coody_sz 发表于 2023-12-5 23:05
需要,假如没有应答,则马上发送停止条件退出。

等待比退出是不是更好点。要不退出不是会影响到后面程序
ID:1095802 发表于 2023-12-6 09:46
Y_G_G 发表于 2023-12-5 23:02
用IIC就得等待应答,一定要的
大多人写IIC并不是只为一个程序写的,而是封装一个完整的.C文件,然后可以在任 ...

那这部分具体要怎样有没有例子发来看下是退出还是用循环等待
ID:1034262 发表于 2023-12-5 23:05
需要,假如没有应答,则马上发送停止条件退出。
ID:401564 发表于 2023-12-5 23:02
用IIC就得等待应答,一定要的
大多人写IIC并不是只为一个程序写的,而是封装一个完整的.C文件,然后可以在任何地方都能用的
你去掉了等待应答,再把这个代码用到别的地方就会出问题的
ID:600469 发表于 2023-12-5 15:30
建议直接抄网上代码
ID:1102699 发表于 2023-12-5 15:01
要是能确保时序正确,可以不要应答,直接给个空时钟,这个时钟必须给了才行连续操作。否则只能一个BYTE访问。
ID:452475 发表于 2023-12-5 14:40
确保时序正确能调通检不检测应答我觉得没啥关系。如果需要检测应答的话就判断应答信号,如果错误的话就return出来返回一个标志位这样吧。

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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